本教學課程說明如何使用 LangChain VectorStore,將資料從第三方向量資料庫遷移至 PostgreSQL 適用的 AlloyDB。本教學課程假設第三方向量資料庫中的資料是使用 LangChain VectorStore 整合功能建立。如果您未使用 LangChain,而是將資訊放入下列其中一個資料庫,可能需要編輯下方提供的指令碼,以符合資料的結構定義。系統支援下列向量資料庫:
本教學課程假設您熟悉 Google Cloud、AlloyDB 和非同步 Python 程式設計。
目標
本教學課程將說明如何執行下列操作:
- 從現有向量資料庫擷取資料。
- 連線至 AlloyDB。
- 初始化 AlloyDB 資料表。
- 初始化向量儲存區物件。
- 執行遷移指令碼來插入資料。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
請確認您具備下列其中一個 LangChain 第三方資料庫向量儲存空間:
啟用計費功能和必要的 API
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立專案。Google Cloud
啟用建立及連線至 PostgreSQL 適用的 AlloyDB 時所需的 Cloud API。
- 在「確認專案」步驟中,按一下「下一步」,確認要變更的專案名稱。
在「啟用 API」步驟中,按一下「啟用」,啟用下列項目:
- AlloyDB API
- Compute Engine API
- Service Networking API
必要的角色
如要取得完成本教學課程中工作所需的權限,請具備下列身分與存取權管理 (IAM) 角色,以便建立資料表及插入資料:
- 擁有者 (
roles/owner
) 或編輯者 (roles/editor
) 如果使用者不是擁有者或編輯者,則必須具備下列 IAM 角色和 PostgreSQL 權限:
- AlloyDB 執行個體用戶端 (
roles/alloydb.client
) - Cloud AlloyDB 管理員 (
roles/alloydb.admin
) - Compute 網路使用者 (
roles/compute.networkUser
)
- AlloyDB 執行個體用戶端 (
如要使用 IAM 驗證機制驗證資料庫,而非本教學課程中的內建驗證機制,請使用筆記本,瞭解如何使用 PostgreSQL 適用的 AlloyDB 搭配 AlloyDBVectorStore
類別儲存向量嵌入。
建立 AlloyDB 叢集和使用者
- 建立 AlloyDB 叢集和執行個體。
- 啟用公開 IP,即可隨時隨地執行本教學課程。如果您使用私人 IP,必須在虛擬私有雲中執行本教學課程。
- 建立或選取 AlloyDB 資料庫使用者。
- 建立執行個體時,系統會建立
postgres
使用者並指派密碼。這位使用者擁有超級使用者權限。 - 本教學課程使用內建驗證功能,減少驗證方面的不便。您可以使用 AlloyDBEngine 進行 IAM 驗證。
- 建立執行個體時,系統會建立
擷取程式碼範例
複製存放區,從 GitHub 複製程式碼範例:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
請前往
migrations
目錄:cd langchain-google-alloydb-pg-python/samples/migrations
從現有向量資料庫擷取資料
建立用戶端。
Pinecone
Weaviate
Chroma
Qdrant
Milvus
從資料庫取得所有資料。
Pinecone
從 Pinecone 索引擷取向量 ID:
然後從 Pinecone 索引依 ID 擷取記錄:
Weaviate
Chroma
Qdrant
Milvus
初始化 AlloyDB 資料表
定義嵌入服務。
VectorStore 介面需要嵌入服務。這個工作流程不會產生新的嵌入內容,因此使用
FakeEmbeddings
類別可避免任何費用。Pinecone
Weaviate
Chroma
Qdrant
Milvus
準備 AlloyDB 資料表。
使用公開 IP 連線連線至 AlloyDB。 詳情請參閱「指定 IP 位址類型」。
Pinecone
Weaviate
Chroma
Qdrant
Milvus
如果資料表不存在,請建立資料表,以便複製資料。
Pinecone
Weaviate
Chroma
Qdrant
Milvus
初始化向量儲存庫物件
這段程式碼會以 JSON 格式,在 langchain_metadata
資料欄中新增額外的向量嵌入中繼資料。如要更有效率地篩選,請將這項中繼資料整理到不同的資料欄。詳情請參閱「建立自訂向量儲存空間」。
如要初始化向量儲存物件,請執行下列指令:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
將資料插入 AlloyDB 資料表:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
執行遷移指令碼
安裝範例依附元件:
pip install -r requirements.txt
執行範例遷移作業。
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
執行範例前,請先進行下列替換作業:
PINECONE_API_KEY
:Pinecone API 金鑰。PINECONE_NAMESPACE
:Pinecone 命名空間。PINECONE_INDEX_NAME
:Pinecone 索引的名稱。PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER
:叢集名稱。INSTANCE
:執行個體的名稱。DB_NAME
:資料庫名稱。DB_USER
:資料庫使用者的名稱。DB_PWD
:資料庫密碼。
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
執行範例前,請先進行下列替換作業:
WEAVIATE_API_KEY
:Weaviate API 金鑰。WEAVIATE_CLUSTER_URL
:Weaviate 叢集網址。WEAVIATE_COLLECTION_NAME
:Weaviate 集合名稱。PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER
:叢集名稱。INSTANCE
:執行個體的名稱。DB_NAME
:資料庫名稱。DB_USER
:資料庫使用者的名稱。DB_PWD
:資料庫密碼。
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
執行範例前,請先進行下列替換作業:
CHROMADB_PATH
:Chroma 資料庫路徑。CHROMADB_COLLECTION_NAME
:Chroma 資料庫集合的名稱。PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER
:叢集名稱。INSTANCE
:執行個體的名稱。DB_NAME
:資料庫名稱。DB_USER
:資料庫使用者的名稱。DB_PWD
:資料庫密碼。
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
執行範例前,請先進行下列替換作業:
QDRANT_PATH
:Qdrant 資料庫路徑。QDRANT_COLLECTION_NAME
:Qdrant 集合名稱。PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER
:叢集名稱。INSTANCE
:執行個體的名稱。DB_NAME
:資料庫名稱。DB_USER
:資料庫使用者的名稱。DB_PWD
:資料庫密碼。
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
執行範例前,請先進行下列替換作業:
MILVUS_URI
:Milvus URI。MILVUS_COLLECTION_NAME
:Milvus 集合的名稱。PROJECT_ID
:專案 ID。REGION
:部署 AlloyDB 叢集的區域。CLUSTER
:叢集名稱。INSTANCE
:執行個體的名稱。DB_NAME
:資料庫名稱。DB_USER
:資料庫使用者的名稱。DB_PWD
:資料庫密碼。
如果遷移成功,系統會列印類似下列內容的記錄,且不會發生任何錯誤:
Migration completed, inserted all the batches of data to AlloyDB
開啟 AlloyDB Studio,查看已遷移的資料。詳情請參閱使用 AlloyDB Studio 管理資料。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在「資源名稱」欄中,按一下您建立的叢集名稱。
按一下 delete「刪除叢集」。
在「刪除叢集」中輸入叢集名稱,確認要刪除叢集。
點選「刪除」。
如果您在建立叢集時建立了私人連線,請刪除該連線:
前往 Google Cloud 控制台的「Networking」(網路) 頁面,然後按一下「Delete VPC network」(刪除虛擬私有雲網路)。