Tutorial ini menjelaskan cara memigrasikan data dari database vektor pihak ketiga ke AlloyDB untuk PostgreSQL menggunakan VectorStore LangChain. Tutorial ini mengasumsikan bahwa data dalam database vektor pihak ketiga dibuat menggunakan integrasi VectorStore LangChain. Jika Anda memasukkan informasi ke salah satu database berikut tanpa menggunakan LangChain, Anda mungkin perlu mengedit skrip yang disediakan di bawah agar sesuai dengan skema data Anda. Database vektor berikut didukung:
Tutorial ini mengasumsikan bahwa Anda sudah memahami Google Cloud, AlloyDB, dan pemrograman Python asinkron.
Tujuan
Tutorial ini menunjukkan kepada Anda cara melakukan hal berikut:
- Mengekstrak data dari database vektor yang ada.
- Hubungkan ke AlloyDB.
- Inisialisasi tabel AlloyDB.
- Lakukan inisialisasi objek penyimpanan vektor.
- Jalankan skrip migrasi untuk memasukkan data.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Pastikan Anda memiliki salah satu penyimpanan vektor database pihak ketiga LangChain berikut:
Mengaktifkan penagihan dan API yang diperlukan
Di konsol Google Cloud , pada halaman pemilih project, pilih atau buat projectGoogle Cloud .
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan Cloud API yang diperlukan untuk membuat dan menghubungkan ke AlloyDB untuk PostgreSQL.
- Pada langkah Confirm project, klik Next untuk mengonfirmasi nama project yang akan Anda ubah.
Pada langkah Enable APIs, klik Enable untuk mengaktifkan berikut ini:
- AlloyDB API
- Compute Engine API
- Service Networking API
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam tutorial ini, miliki peran Identity and Access Management (IAM) berikut yang memungkinkan pembuatan tabel dan penyisipan data:
- Pemilik (
roles/owner
) atau Editor (roles/editor
) Jika pengguna bukan pemilik atau editor, peran IAM dan hak istimewa PostgreSQL berikut diperlukan:
- Klien Instance AlloyDB (
roles/alloydb.client
) - Cloud AlloyDB Admin (
roles/alloydb.admin
) - Compute Network User (
roles/compute.networkUser
)
- Klien Instance AlloyDB (
Jika Anda ingin melakukan autentikasi ke database menggunakan autentikasi IAM, bukan menggunakan autentikasi bawaan dalam tutorial ini, gunakan notebook yang menunjukkan cara menggunakan AlloyDB untuk PostgreSQL guna menyimpan embedding vektor dengan class AlloyDBVectorStore
.
Buat cluster dan pengguna AlloyDB
- Buat cluster dan instance AlloyDB.
- Aktifkan IP Publik untuk menjalankan tutorial ini dari mana saja. Jika Anda menggunakan IP Pribadi, Anda harus menjalankan tutorial ini dari dalam VPC.
- Buat atau pilih pengguna database AlloyDB.
- Saat Anda membuat instance, pengguna
postgres
akan dibuat dengan sandi. Pengguna ini memiliki izin superuser. - Tutorial ini menggunakan autentikasi bawaan untuk mengurangi hambatan autentikasi. Autentikasi IAM dapat dilakukan menggunakan AlloyDBEngine.
- Saat Anda membuat instance, pengguna
Mengambil contoh kode
Salin contoh kode dari GitHub dengan meng-clone repositori:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Buka direktori
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Mengekstrak data dari database vektor yang ada
Buat klien.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Dapatkan semua data dari database.
Pinecone
Mengambil ID vektor dari indeks Pinecone:
Kemudian, ambil rekaman menurut ID dari indeks Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Lakukan inisialisasi tabel AlloyDB
Tentukan layanan penyematan.
Antarmuka VectorStore memerlukan layanan penyematan. Alur kerja ini tidak membuat embedding baru, sehingga class
FakeEmbeddings
digunakan untuk menghindari biaya apa pun.Pinecone
Weaviate
Chroma
Qdrant
Milvus
Siapkan tabel AlloyDB.
Menghubungkan ke AlloyDB menggunakan koneksi IP publik. Untuk mengetahui informasi selengkapnya, lihat Menentukan Jenis Alamat IP.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Buat tabel untuk menyalin data, jika belum ada.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Lakukan inisialisasi objek penyimpanan vektor
Kode ini menambahkan metadata penyematan vektor tambahan ke kolom langchain_metadata
dalam format JSON.
Untuk membuat pemfilteran lebih efisien, atur metadata ini ke dalam kolom terpisah.
Untuk mengetahui informasi selengkapnya, lihat Membuat Penyimpanan Vektor kustom.
Untuk menginisialisasi objek penyimpanan vektor, jalankan perintah berikut:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Sisipkan data ke dalam tabel AlloyDB:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Jalankan skrip migrasi
Instal dependensi contoh:
pip install -r requirements.txt
Jalankan migrasi contoh.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum Anda menjalankan contoh:
PINECONE_API_KEY
: kunci API Pinecone.PINECONE_NAMESPACE
: namespace Pinecone.PINECONE_INDEX_NAME
: nama indeks Pinecone.PROJECT_ID
: project ID.REGION
: region tempat cluster AlloyDB di-deploy.CLUSTER
: nama cluster.INSTANCE
: nama instance.DB_NAME
: nama database.DB_USER
: nama pengguna database.DB_PWD
: sandi rahasia database.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum Anda menjalankan contoh:
WEAVIATE_API_KEY
: kunci API Weaviate.WEAVIATE_CLUSTER_URL
: URL cluster Weaviate.WEAVIATE_COLLECTION_NAME
: nama koleksi Weaviate.PROJECT_ID
: project ID.REGION
: region tempat cluster AlloyDB di-deploy.CLUSTER
: nama cluster.INSTANCE
: nama instance.DB_NAME
: nama database.DB_USER
: nama pengguna database.DB_PWD
: sandi rahasia database.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum Anda menjalankan contoh:
CHROMADB_PATH
: jalur database Chroma.CHROMADB_COLLECTION_NAME
: nama koleksi database Chroma.PROJECT_ID
: project ID.REGION
: region tempat cluster AlloyDB di-deploy.CLUSTER
: nama cluster.INSTANCE
: nama instance.DB_NAME
: nama database.DB_USER
: nama pengguna database.DB_PWD
: sandi rahasia database.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum Anda menjalankan contoh:
QDRANT_PATH
: jalur database Qdrant.QDRANT_COLLECTION_NAME
: nama koleksi Qdrant.PROJECT_ID
: project ID.REGION
: region tempat cluster AlloyDB di-deploy.CLUSTER
: nama cluster.INSTANCE
: nama instance.DB_NAME
: nama database.DB_USER
: nama pengguna database.DB_PWD
: sandi rahasia database.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum Anda menjalankan contoh:
MILVUS_URI
: URI Milvus.MILVUS_COLLECTION_NAME
: nama koleksi Milvus.PROJECT_ID
: project ID.REGION
: region tempat cluster AlloyDB di-deploy.CLUSTER
: nama cluster.INSTANCE
: nama instance.DB_NAME
: nama database.DB_USER
: nama pengguna database.DB_PWD
: sandi rahasia database.
Migrasi yang berhasil akan mencetak log yang mirip dengan berikut tanpa error:
Migration completed, inserted all the batches of data to AlloyDB
Buka AlloyDB Studio untuk melihat data yang dimigrasikan. Untuk mengetahui informasi selengkapnya, lihat Mengelola data Anda menggunakan AlloyDB Studio.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Di konsol Google Cloud , buka halaman Clusters.
Di kolom Nama resource, klik nama cluster yang Anda buat.
Klik delete Hapus cluster.
Di Hapus cluster, masukkan nama cluster Anda untuk mengonfirmasi bahwa Anda ingin menghapus cluster.
Klik Hapus.
Jika Anda membuat koneksi pribadi saat membuat cluster, hapus koneksi pribadi:
Buka Google Cloud halaman Networking di konsol dan klik Hapus jaringan VPC.