Puoi eseguire la migrazione di vector embedding e metadati da database vettoriali di terze parti ad AlloyDB per PostgreSQL utilizzando un'integrazione VectorStore di LangChain. In questo tutorial, esporterai i dati vettoriali esistenti generati con LangChain e li caricherai in una tabella AlloyDBVectorStore. Se hai importato i dati in uno dei seguenti database senza utilizzare LangChain, modifica gli script di migrazione forniti in modo che corrispondano allo schema dei dati.
Sono supportati i seguenti database vettoriali:
Questo tutorial presuppone che tu abbia familiarità con Google Cloud, AlloyDB e la programmazione Python asincrona.
Obiettivi
Questo tutorial mostra gli aspetti seguenti:
- Estrarre i dati da un database vettoriale esistente.
- Connettiti ad AlloyDB.
- Inizializza la tabella AlloyDB.
- Inizializza un oggetto datastore vettoriale.
- Esegui lo script di migrazione per inserire i dati.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Assicurati di avere uno dei seguenti archivi vettoriali di database di terze parti LangChain:
Abilita la fatturazione e le API richieste
Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progettoGoogle Cloud .
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Cloud necessarie per creare e connettersi ad AlloyDB per PostgreSQL.
- Nel passaggio Conferma progetto, fai clic su Avanti per confermare il nome del progetto a cui apporterai le modifiche.
Nel passaggio Abilita API, fai clic su Abilita per abilitare quanto segue:
- API AlloyDB
- API Compute Engine
- API Service Networking
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare le attività di questo tutorial, disponi dei seguenti ruoli Identity and Access Management (IAM) che consentono la creazione di tabelle e l'inserimento di dati:
- Proprietario (
roles/owner) o Editor (roles/editor) Se l'utente non è un proprietario o un editor, sono richiesti i seguenti ruoli IAM e privilegi PostgreSQL:
- Client istanza AlloyDB (
roles/alloydb.client) - Cloud AlloyDB Admin (
roles/alloydb.admin) - Compute Network User (
roles/compute.networkUser)
- Client istanza AlloyDB (
Se vuoi autenticarti nel tuo database utilizzando l'autenticazione IAM anziché l'autenticazione integrata in questo tutorial, utilizza il notebook che mostra come utilizzare AlloyDB per PostgreSQL per archiviare i vector embedding con la classe AlloyDBVectorStore.
Crea un cluster e un utente AlloyDB
- Crea un cluster e un'istanza AlloyDB.
- Abilita l'IP pubblico per eseguire questo tutorial da qualsiasi luogo. Se utilizzi un IP privato, devi eseguire questo tutorial dall'interno del VPC.
- Crea o seleziona un utente del database AlloyDB.
- Quando crei l'istanza, viene creato un utente
postgrescon una password. Questo utente dispone delle autorizzazioni di super utente. - Questo tutorial utilizza l'autenticazione integrata per ridurre eventuali problemi di autenticazione. L'autenticazione IAM è possibile utilizzando AlloyDBEngine.
- Quando crei l'istanza, viene creato un utente
Recupera l'esempio di codice
Copia l'esempio di codice da GitHub clonando il repository:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.gitVai alla directory
migrations:cd langchain-google-alloydb-pg-python/samples/migrations
Estrai dati da un database vettoriale esistente
Crea un cliente.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Recupera tutti i dati dal database.
Pinecone
Recupera gli ID vettoriali dall'indice Pinecone:
Quindi, recupera i record per ID dall'indice Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Inizializza la tabella AlloyDB
Definisci il servizio di incorporamento.
L'interfaccia VectorStore richiede un servizio di embedding. Questo flusso di lavoro non genera nuovi incorporamenti, quindi la classe
FakeEmbeddingsviene utilizzata per evitare costi.Pinecone
Weaviate
Chroma
Qdrant
Milvus
Prepara la tabella AlloyDB.
Connettiti ad AlloyDB utilizzando una connessione IP pubblico. Per saperne di più, consulta Specifica del tipo di indirizzo IP.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Crea una tabella in cui copiare i dati, se non esiste già.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Inizializza un oggetto datastore vettoriale
Questo codice aggiunge metadati di vector embedding aggiuntivi alla colonna langchain_metadata
in formato JSON.
Per rendere più efficiente l'applicazione dei filtri, organizza questi metadati in colonne separate.
Per saperne di più, consulta Creare un archivio vettoriale personalizzato.
Per inizializzare un oggetto vector store, esegui questo comando:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Inserisci i dati nella tabella AlloyDB:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Esegui lo script di migrazione
Installa le dipendenze di esempio:
pip install -r requirements.txtEsegui la migrazione di esempio.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.pyApporta le seguenti sostituzioni prima di eseguire l'esempio:
PINECONE_API_KEY: la chiave API Pinecone.PINECONE_NAMESPACE: lo spazio dei nomi Pinecone.PINECONE_INDEX_NAME: il nome dell'indice Pinecone.PROJECT_ID: l'ID progettoREGION: la regione in cui viene eseguito il deployment del cluster AlloyDB.CLUSTER: il nome del cluster.INSTANCE: il nome dell'istanzaDB_NAME: il nome del database.DB_USER: il nome dell'utente del database.DB_PWD: la password del secret del database.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.pyApporta le seguenti sostituzioni prima di eseguire l'esempio:
WEAVIATE_API_KEY: la chiave API di Weaviate.WEAVIATE_CLUSTER_URL: l'URL del cluster Weaviate.WEAVIATE_COLLECTION_NAME: il nome della raccolta Weaviate.PROJECT_ID: l'ID progettoREGION: la regione in cui viene eseguito il deployment del cluster AlloyDB.CLUSTER: il nome del cluster.INSTANCE: il nome dell'istanzaDB_NAME: il nome del database.DB_USER: il nome dell'utente del database.DB_PWD: la password del secret del database.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.pyApporta le seguenti sostituzioni prima di eseguire l'esempio:
CHROMADB_PATH: il percorso del database Chroma.CHROMADB_COLLECTION_NAME: il nome della raccolta del database Chroma.PROJECT_ID: l'ID progettoREGION: la regione in cui viene eseguito il deployment del cluster AlloyDB.CLUSTER: il nome del cluster.INSTANCE: il nome dell'istanzaDB_NAME: il nome del database.DB_USER: il nome dell'utente del database.DB_PWD: la password del secret del database.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.pyApporta le seguenti sostituzioni prima di eseguire l'esempio:
QDRANT_PATH: il percorso del database Qdrant.QDRANT_COLLECTION_NAME: il nome della raccolta Qdrant.PROJECT_ID: l'ID progettoREGION: la regione in cui viene eseguito il deployment del cluster AlloyDB.CLUSTER: il nome del cluster.INSTANCE: il nome dell'istanzaDB_NAME: il nome del database.DB_USER: il nome dell'utente del database.DB_PWD: la password del secret del database.
Milvus
python migrate_milvus_vectorstore_to_alloydb.pyApporta le seguenti sostituzioni prima di eseguire l'esempio:
MILVUS_URI: l'URI di Milvus.MILVUS_COLLECTION_NAME: il nome della raccolta Milvus.PROJECT_ID: l'ID progettoREGION: la regione in cui viene eseguito il deployment del cluster AlloyDB.CLUSTER: il nome del cluster.INSTANCE: il nome dell'istanzaDB_NAME: il nome del database.DB_USER: il nome dell'utente del database.DB_PWD: la password del secret del database.
Una migrazione riuscita stampa log simili ai seguenti senza errori:
Migration completed, inserted all the batches of data to AlloyDBApri AlloyDB Studio per visualizzare i dati di cui è stata eseguita la migrazione. Per saperne di più, vedi Gestisci i tuoi dati utilizzando AlloyDB Studio.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Nella console Google Cloud , vai alla pagina Cluster.
Nella colonna Nome risorsa, fai clic sul nome del cluster che hai creato.
Fai clic su delete Elimina cluster.
In Elimina cluster, inserisci il nome del cluster per confermare che vuoi eliminarlo.
Fai clic su Elimina.
Se hai creato una connessione privata quando hai creato un cluster, elimina la connessione privata:
Vai alla pagina Rete della console Google Cloud e fai clic su Elimina rete VPC.
Passaggi successivi
- Inizia a utilizzare i vector embedding con l'AI di AlloyDB.
- Scopri come creare applicazioni di AI generativa utilizzando AlloyDB AI.
- Crea un indice ScaNN.
- Ottimizza gli indici ScaNN.
- Scopri come creare un assistente per lo shopping intelligente con AlloyDB, pgvector e la gestione degli endpoint del modello.