Questo tutorial descrive come eseguire la migrazione dei dati da un database di vettori di terze parti ad AlloyDB per PostgreSQL utilizzando gli store di vettori LangChain. Sono supportati i seguenti database di vettori:
Questo tutorial presuppone che tu abbia familiarità con Google Cloud, AlloyDB e la programmazione Python asincrona.
Obiettivi
Questo tutorial illustra come:
- Estrai i dati da un database vettoriale esistente.
- Connettiti ad AlloyDB.
- Inizializza la tabella AlloyDB.
- Inizializza un oggetto vettore.
- Esegui lo script di migrazione per inserire i dati.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
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 la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
Assicurati di avere uno dei seguenti vettori di database di terze parti di LangChain:
Abilita la fatturazione e le API richieste
Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.
Assicurati che la fatturazione sia attivata per il tuo Google Cloud progetto.
Abilita le API Cloud necessarie per creare e connetterti ad AlloyDB per PostgreSQL.
- Nel passaggio Conferma progetto, fai clic su Avanti per confermare il nome del progetto a cui apporterai modifiche.
Nel passaggio Abilita API, fai clic su Abilita per attivare quanto segue:
- API AlloyDB
- API Compute Engine
- API Service Networking
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare le attività di questo tutorial, devi disporre dei seguenti ruoli IAM (Identity and Access Management) che consentono la tabella creazione e inserimento dei dati:
- Proprietario (
roles/owner
) o editor (roles/editor
) Se l'utente non è un proprietario o un editor, sono richiesti i seguenti ruoli IAM e i privilegi PostgreSQL:
- AlloyDB Instance Client (
roles/alloydb.client
) - Cloud AlloyDB Admin (
roles/alloydb.admin
) - Utente di rete Compute (
roles/compute.networkUser
)
- AlloyDB Instance Client (
Se vuoi autenticarti al database utilizzando l'autenticazione IAM anziché l'autenticazione integrata in questo tutorial, utilizza il notebook che mostra come utilizzare AlloyDB per PostgreSQL per archiviare gli incorporamenti vettoriali con la classe AlloyDBVectorStore
.
Crea un cluster e un utente AlloyDB
- Crea un cluster AlloyDB e un'istanza.
- Abilita l'IP pubblico per eseguire questo tutorial da qualsiasi luogo. Se utilizzi un IP privato, devi eseguire questo tutorial all'interno della tua VPC.
- Crea o seleziona un utente del database AlloyDB.
- Quando crei l'istanza, viene creato un utente
postgres
con una password. Questo utente dispone delle autorizzazioni super user. - 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
Recuperare il esempio di codice
Copia l'esempio di codice da GitHub clonando il repository:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Vai alla directory
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Estrarre i dati da un database di vettori esistente
Crea un client.
Pigna
Weaviate
Chroma
Qdrant
Milvus
Recupera tutti i dati dal database.
Pigna
Recupera gli ID vettore dall'indice Pinecone:
Quindi recupera i record per ID dall'indice Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Inizializza la tabella AlloyDB
Definisci il servizio di embedding.
L'interfaccia VectorStore richiede un servizio di embedding. Questo flusso di lavoro non genera nuovi embedding, pertanto viene utilizzata la classe
FakeEmbeddings
per evitare costi.Pigna
Weaviate
Chroma
Qdrant
Milvus
Prepara la tabella AlloyDB.
Connettiti ad AlloyDB utilizzando una connessione IP pubblico. Per ulteriori informazioni, consulta Specificare il tipo di indirizzo IP.
Pigna
Weaviate
Chroma
Qdrant
Milvus
Crea una tabella in cui copiare i dati, se non esiste già.
Pigna
Weaviate
Chroma
Qdrant
Milvus
Inizializzare un oggetto del negozio di vettori
Questo codice aggiunge ulteriori metadati di embedding di vettori alla colonna langchain_metadata
in formato JSON.
Per rendere il filtro più efficiente, organizza questi metadati in colonne separate.
Per ulteriori informazioni, vedi Creare un negozio di vektori personalizzato.
Per inizializzare un oggetto dello spazio vettoriale, esegui il seguente comando:
Pigna
Weaviate
Chroma
Qdrant
Milvus
Inserisci i dati nella tabella AlloyDB:
Pigna
Weaviate
Chroma
Qdrant
Milvus
Esegui lo script di migrazione
Installa le dipendenze di esempio:
pip install -r requirements.txt
Esegui la migrazione di esempio.
Pigna
python migrate_pinecone_vectorstore_to_alloydb.py
Apporta 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 progetto.REGION
: la regione in cui è dipiegato il cluster AlloyDB.CLUSTER
: il nome del cluster.INSTANCE
: il nome dell'istanza.DB_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.py
Apporta le seguenti sostituzioni prima di eseguire l'esempio:
WEAVIATE_API_KEY
: la chiave API Weaviate.WEAVIATE_CLUSTER_URL
: l'URL del cluster Weaviate.WEAVIATE_COLLECTION_NAME
: il nome della raccolta Weaviate.PROJECT_ID
: l'ID progetto.REGION
: la regione in cui è dipiegato il cluster AlloyDB.CLUSTER
: il nome del cluster.INSTANCE
: il nome dell'istanza.DB_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.py
Apporta 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 progetto.REGION
: la regione in cui è dipiegato il cluster AlloyDB.CLUSTER
: il nome del cluster.INSTANCE
: il nome dell'istanza.DB_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.py
Apporta 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 progetto.REGION
: la regione in cui è dipiegato il cluster AlloyDB.CLUSTER
: il nome del cluster.INSTANCE
: il nome dell'istanza.DB_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.py
Apporta 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 progetto.REGION
: la regione in cui è dipiegato il cluster AlloyDB.CLUSTER
: il nome del cluster.INSTANCE
: il nome dell'istanza.DB_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 al seguente senza errori:
Migration completed, inserted all the batches of data to AlloyDB
Apri AlloyDB Studio per visualizzare i dati di cui è stata eseguita la migrazione. Per ulteriori informazioni, consulta Gestire i 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, eliminala:
Vai alla pagina Networking della console Google Cloud e fai clic su Elimina rete VPC.
Passaggi successivi
- Inizia a utilizzare gli incorporamenti vettoriali con AlloyDB AI.
- Scopri come creare applicazioni di IA 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 dei modelli.