本教學課程說明如何使用 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」(叢集) 頁面。
在「Resource name」(資源名稱) 欄中,按一下您建立的叢集名稱。
按一下 delete「刪除叢集」。
在「刪除叢集」中輸入叢集名稱,確認要刪除叢集。
按一下「Delete」(刪除)。
如果您在建立叢集時建立了私人連線,請刪除該連線:
前往 Google Cloud 控制台的「Networking」(網路) 頁面,然後點選「Delete VPC network」(刪除虛擬私有雲網路)。