Anda dapat memigrasikan embedding vektor dan metadata dari database vektor pihak ketiga ke AlloyDB untuk PostgreSQL menggunakan integrasi VectorStore LangChain. Dalam tutorial ini, Anda akan mengekspor data vektor yang ada yang dihasilkan dengan LangChain dan memuatnya ke dalam tabel AlloyDBVectorStore. Jika Anda menyerap data ke salah satu database berikut tanpa menggunakan LangChain, ubah skrip migrasi yang disediakan 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.
- Membuat koneksi ke AlloyDB.
- Melakukan inisialisasi tabel AlloyDB.
- Lakukan inisialisasi objek penyimpanan vektor.
- Jalankan skrip migrasi untuk menyisipkan 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, baca bagian 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 project Google Cloud Anda.
Mengaktifkan Cloud API yang diperlukan untuk membuat dan terhubung 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 hal berikut:
- 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:
- AlloyDB Client (
roles/alloydb.client) - AlloyDB Admin (
roles/alloydb.admin) - Compute Network User (
roles/compute.networkUser)
- AlloyDB Client (
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.
Membuat cluster dan pengguna AlloyDB
- Buat cluster dan instance AlloyDB.
- Aktifkan IP Publik untuk menjalankan tutorial ini dari mana saja. Jika menggunakan IP Pribadi, Anda harus menjalankan tutorial ini dari dalam jaringan Virtual Private Cloud (VPC).
- Buat atau pilih pengguna database AlloyDB.
- Saat Anda membuat instance, pengguna
postgresakan 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.gitBuka direktori
migrations:cd langchain-google-alloydb-pg-python/samples/migrations
Mengekstrak data dari database vektor yang ada
Membuat klien.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Mendapatkan semua data dari database.
Pinecone
Ambil ID vektor dari indeks Pinecone:
Lalu, ambil data berdasarkan ID dari indeks Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Melakukan inisialisasi tabel AlloyDB
Tentukan layanan embedding.
Antarmuka VectorStore memerlukan layanan embedding. Alur kerja ini tidak menghasilkan embedding baru, sehingga class
FakeEmbeddingsdigunakan untuk menghindari biaya apa pun.Pinecone
Weaviate
Chroma
Qdrant
Milvus
Menyiapkan 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
Melakukan inisialisasi objek penyimpanan vektor
Kode ini menambahkan metadata embedding vektor tambahan ke kolom langchain_metadata
dalam format JSON.
Agar pemfilteran lebih efisien, atur metadata ini ke dalam kolom terpisah.
Untuk mengetahui informasi selengkapnya, lihat Membuat Vector Store kustom.
Untuk melakukan inisialisasi objek penyimpanan vektor, jalankan perintah berikut:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Masukkan data ke dalam tabel AlloyDB:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Menjalankan skrip migrasi
Instal dependensi contoh:
pip install -r requirements.txtJalankan contoh migrasi.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.pyLakukan penggantian berikut sebelum Anda menjalankan contoh:
PINECONE_API_KEY: kunci Pinecone API.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.pyLakukan 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.pyLakukan 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.pyLakukan 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.pyLakukan 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 ini tanpa error:
Migration completed, inserted all the batches of data to AlloyDBBuka 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 Resource name, klik nama cluster yang Anda buat.
Klik delete Delete cluster.
Di Delete cluster, masukkan nama cluster untuk mengonfirmasi bahwa Anda ingin menghapus cluster.
Klik Hapus.
Jika Anda membuat koneksi pribadi saat membuat cluster, hapus koneksi pribadi:
Buka halaman Networking di konsol Google Cloud , lalu klik Delete VPC network.