Questo tutorial descrive come eseguire la migrazione dei dati da un database vettoriale di terze parti ad AlloyDB per PostgreSQL utilizzando un VectorStore LangChain. Questo tutorial presuppone che i dati nei database vettoriali di terze parti siano stati creati utilizzando un'integrazione di LangChain VectorStore. Se inserisci informazioni in uno dei seguenti database senza utilizzare LangChain, potresti dover modificare gli script forniti di seguito in modo che corrispondano allo schema dei tuoi dati. Sono supportati i seguenti database vettoriali:
Questo tutorial presuppone che tu abbia familiarità con Google Cloud, AlloyDB e la programmazione asincrona in Python.
Obiettivi
Questo tutorial mostra come:
- Estrai 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 ulteriori informazioni, vedi Pulizia.
Prima di iniziare
Assicurati di avere uno dei seguenti vector store 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 .
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud .
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 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 IAM (Identity and Access Management) 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 necessari i seguenti ruoli IAM e privilegi PostgreSQL:
- Client istanza AlloyDB (
roles/alloydb.client
) - Cloud AlloyDB Admin (
roles/alloydb.admin
) - Utente di rete Compute (
roles/compute.networkUser
)
- Client istanza AlloyDB (
Se vuoi autenticarti al tuo database utilizzando l'autenticazione IAM anziché l'autenticazione integrata in questo tutorial, utilizza il blocco note 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 e un'istanza AlloyDB.
- Abilita l'IP pubblico per eseguire questo tutorial da qualsiasi luogo. Se utilizzi l'IP privato, devi eseguire questo tutorial dall'interno della tua rete 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 superuser. - 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 il esempio di codice
Copia il 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 vettoriale esistente
Crea un client.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Recupera tutti i dati dal database.
Pinecone
Recupera gli ID vettoriali dall'indice Pinecone:
e poi 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 incorporamento. Questo flusso di lavoro non genera nuovi incorporamenti, quindi viene utilizzata la classe
FakeEmbeddings
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 incorporamento vettoriale aggiuntivi alla colonna langchain_metadata
in formato JSON.
Per rendere più efficiente il filtraggio, organizza questi metadati in colonne separate.
Per saperne di più, consulta Creare un Vector Store 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.txt
Esegui la migrazione di esempio.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Effettua 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 segreta del database.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Effettua 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 segreta del database.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Effettua 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 segreta del database.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Effettua 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 segreta del database.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Effettua 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 segreta del database.
Una migrazione riuscita stampa log simili ai seguenti 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 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 gli incorporamenti vettoriali con AlloyDB AI.
- 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.