Tutorial ini menjelaskan cara memigrasikan data dari database vektor pihak ketiga ke AlloyDB untuk PostgreSQL menggunakan penyimpanan vektor LangChain. Database vektor berikut didukung:
Tutorial ini mengasumsikan bahwa Anda sudah memahami Google Cloud, AlloyDB, dan pemrograman Python asinkron.
Tujuan
Tutorial ini menunjukkan cara melakukan hal berikut:
- Mengekstrak data dari database vektor yang ada.
- Hubungkan ke AlloyDB.
- Lakukan 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:
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 terhubung ke AlloyDB untuk PostgreSQL.
- Pada langkah Konfirmasi project, klik Berikutnya untuk mengonfirmasi nama project yang akan Anda ubah.
Pada langkah Aktifkan API, klik Aktifkan 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:
- Klien Instance AlloyDB (
roles/alloydb.client
) - Cloud AlloyDB Admin (
roles/alloydb.admin
) - Compute Network User (
roles/compute.networkUser
)
- Klien Instance AlloyDB (
Jika Anda ingin mengautentikasi ke database menggunakan autentikasi IAM, bukan menggunakan autentikasi bawaan dalam tutorial ini, gunakan notebook yang menunjukkan cara menggunakan AlloyDB untuk PostgreSQL guna menyimpan penyematan 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 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
Kuadran
Milvus
Dapatkan semua data dari database.
Pinecone
Ambil ID vektor dari indeks Pinecone:
Kemudian, ambil data berdasarkan ID dari indeks Pinecone:
Weaviate
Chroma
Kuadran
Milvus
Melakukan inisialisasi tabel AlloyDB
Tentukan layanan penyematan.
Antarmuka VectorStore memerlukan layanan penyematan. Alur kerja ini tidak membuat penyematan baru, sehingga class
FakeEmbeddings
digunakan untuk menghindari biaya apa pun.Pinecone
Weaviate
Chroma
Kuadran
Milvus
Siapkan tabel AlloyDB.
Menghubungkan ke AlloyDB menggunakan koneksi IP publik. Untuk mengetahui informasi selengkapnya, lihat Menentukan Jenis Alamat IP.
Pinecone
Weaviate
Chroma
Kuadran
Milvus
Buat tabel untuk menyalin data, jika belum ada.
Pinecone
Weaviate
Chroma
Kuadran
Milvus
Melakukan inisialisasi objek penyimpanan vektor
Kode ini menambahkan metadata penyematan vektor tambahan ke kolom langchain_metadata
dalam format JSON.
Agar pemfilteran lebih efisien, atur metadata ini ke dalam kolom terpisah.
Untuk informasi selengkapnya, lihat Membuat Vector Store kustom.
Untuk melakukan inisialisasi objek penyimpanan vektor, jalankan perintah berikut:
Pinecone
Weaviate
Chroma
Kuadran
Milvus
Sisipkan data ke dalam tabel AlloyDB:
Pinecone
Weaviate
Chroma
Kuadran
Milvus
Menjalankan 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 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 secret database.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum menjalankan contoh:
WEAVIATE_API_KEY
: kunci Weaviate API.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 secret database.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum 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 secret database.
Kuadran
python migrate_qdrant_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum 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 secret database.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Lakukan penggantian berikut sebelum 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 secret database.
Migrasi yang berhasil akan mencetak log yang mirip dengan berikut ini 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 Resource name, klik nama cluster yang Anda buat.
Klik delete Hapus cluster.
Di Delete cluster, masukkan nama cluster untuk mengonfirmasi bahwa Anda ingin menghapus cluster.
Klik Delete.
Jika Anda membuat koneksi pribadi saat membuat cluster, hapus koneksi pribadi:
Buka halaman Networking di konsol Google Cloud, lalu klik Delete VPC network.