Questa pagina mostra come collegare il motore RAG a Vertex AI Vector Search.
Puoi anche seguire la procedura utilizzando questo notebook RAG Engine with Vertex AI Vector Search.
RAG Engine è uno strumento potente che utilizza un database vettoriale integrato basato su Spanner per archiviare e gestire le rappresentazioni vettoriali dei documenti di testo. Il database vettoriale consente di recuperare in modo efficiente i documenti pertinenti in base alla somiglianza semantica dei documenti a una determinata query. Se integri Vertex AI Vector Search come database vettoriale aggiuntivo con RAG Engine, puoi utilizzare le funzionalità di Vector Search per gestire volumi di dati con bassa latenza e migliorare le prestazioni e la scalabilità delle tue applicazioni RAG.
Configurazione di Vertex AI Vector Search
Vertex AI Vector Search si basa sulla tecnologia di ricerca vettoriale sviluppata da Google Research. Con Vector Search puoi utilizzare la stessa infrastruttura alla base di prodotti Google come la Ricerca Google, YouTube e Google Play.
Per l'integrazione con RAG Engine, è obbligatorio un indice Ricerca vettoriale vuoto.
Configura l'SDK Vertex AI
Per configurare l'SDK Vertex AI, consulta Configurazione.
Creare l'indice Vector Search
Per creare un indice di ricerca vettoriale compatibile con il tuo corpus RAG, l'indice deve soddisfare i seguenti criteri:
IndexUpdateMethod
deve essereSTREAM_UPDATE
, consulta Creare l'indice dello stream.Il tipo di misurazione della distanza deve essere impostato esplicitamente su uno dei seguenti valori:
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
La dimensione del vettore deve essere coerente con il modello di embedding che prevedi di utilizzare nel corpus RAG. Altri parametri possono essere ottimizzati in base alle tue scelte, che determinano se è possibile ottimizzare i parametri aggiuntivi.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Crea l'endpoint dell'indice Vector Search
Gli endpoint pubblici sono supportati da RAG Engine.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Esegui il deployment di un indice in un endpoint indice
Prima di eseguire la ricerca del vicino più prossimo, l'indice deve essere implementato in un endpoint dell'indice.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Se è la prima volta che esegui il deployment di un indice in un endpoint dell'indice, sono necessari circa 30 minuti per compilare e avviare automaticamente il backend prima che l'indice possa essere archiviato. Dopo il primo deployment, l'indice è pronto in pochi secondi. Per visualizzare lo stato del deployment dell'indice, apri Vector Search Console, seleziona la scheda Endpoint dell'indice e scegli l'endpoint dell'indice.
Identifica il nome della risorsa dell'indice e dell'endpoint indice, che hanno i seguenti formati:
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
.
Utilizzare Vertex AI Vector Search in RAG Engine
Dopo aver configurato l'istanza di ricerca vettoriale, segui i passaggi descritti in questa sezione per impostarla come database vettoriale per l'applicazione RAG.
Imposta il database di vettori per creare un corpus RAG
Quando crei il corpus RAG, specifica solo INDEX_ENDPOINT_NAME
e
INDEX_NAME
completi. Il corpus RAG viene creato e associato automaticamente all'indice di ricerca di vettori. Le convalide vengono eseguite in base ai
criteri. Se uno dei requisiti non viene soddisfatto, la richiesta viene rifiutata.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
REST
# TODO(developer): Update and un-comment the following lines:
# CORPUS_DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
# Full index/indexEndpoint resource name
# Index: projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
# IndexEndpoint: projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
# INDEX_RESOURCE_NAME = "YOUR_INDEX_ENDPOINT_RESOURCE_NAME"
# INDEX_NAME = "YOUR_INDEX_RESOURCE_NAME"
# Call CreateRagCorpus API to create a new RagCorpus
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/ragCorpora -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_vector_search": {
"index":'\""${INDEX_NAME}"\"'
"index_endpoint":'\""${INDEX_ENDPOINT_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RagCorpus is created successfully
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/ragCorpora"
Importare file utilizzando l'API RAG
Utilizza l'API ImportRagFiles
per importare
file da Cloud Storage o
Google Drive nell'indice di Ricerca vettoriale. I file vengono incorporati e memorizzati nell'indice di Vector Search.
REST
# TODO(developer): Update and uncomment the following lines:
# RAG_CORPUS_ID = "your-rag-corpus-id"
#
# Google Cloud Storage bucket/file location.
# For example, "gs://rag-fos-test/"
# GCS_URIS= "your-gcs-uris"
# Call ImportRagFiles API to embed files and store in the BigQuery table
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URIS}"\"'
},
"rag_file_chunking_config": {
"chunk_size": 512
}
}
}'
# Call ListRagFiles API to verify the files are imported successfully
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Recuperare i contesti pertinenti utilizzando l'API RAG
Al termine delle importazioni dei file, il contesto pertinente può essere recuperato dall'indice di ricerca vettoriale utilizzando l'API RetrieveContexts
.
REST
# TODO(developer): Update and uncomment the following lines:
# RETRIEVAL_QUERY="your-retrieval-query"
#
# Full RAG corpus resource name
# Format:
# "projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}"
# RAG_CORPUS_RESOURCE="your-rag-corpus-resource"
# Call RetrieveContexts API to retrieve relevant contexts
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
},
"query": {
"text": '\""${RETRIEVAL_QUERY}"\"',
"similarity_top_k": 10
}
}'
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Generare contenuti utilizzando l'API Gemini di Vertex AI
Per generare contenuti utilizzando i modelli Gemini, effettua una chiamata all'API GenerateContent
Vertex AI. Se specifichi RAG_CORPUS_RESOURCE
nella richiesta, l'API recupera automaticamente i dati dall'indice di ricerca vettoriale.
REST
# TODO(developer): Update and uncomment the following lines:
# MODEL_ID=gemini-1.5-flash-001
# GENERATE_CONTENT_PROMPT="your-generate-content-prompt"
# GenerateContent with contexts retrieved from the FeatureStoreOnline index
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": {
"role": "user",
"parts": {
"text": '\""${GENERATE_CONTENT_PROMPT}"\"'
}
},
"tools": {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"similarity_top_k": 8,
"vector_distance_threshold": 0.32
}
}
}
}'
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Passaggi successivi
- Per scoprire di più sulla scelta dei modelli di embedding, consulta Utilizzare i modelli di embedding con RAG Engine.
- Per scoprire di più sull'importazione dei file, consulta Importare i file RAG.