Questa pagina mostra come configurare Vertex AI Feature Store come database vettoriale da utilizzare con il motore RAG.
Puoi anche seguire la procedura utilizzando il notebook RAG Engine con Vertex AI Feature Store.
Integrando Vertex AI Feature Store come database vettoriale aggiuntivo, il motore RAG può utilizzare Vertex AI Feature Store per gestire grandi volumi di dati con bassa latenza, il che contribuisce a migliorare le prestazioni e la scalabilità delle tue applicazioni RAG.
Configura un Vertex AI Feature Store
Vertex AI Feature Store, un servizio cloud-native gestito, è un componente essenziale di Gemini Enterprise Agent Platform. Semplifica la gestione delle caratteristiche di machine learning (ML) e l'erogazione online consentendoti di gestire i dati delle caratteristiche all'interno di una tabella o vista BigQuery. In questo modo, l'erogazione delle caratteristiche online avviene con bassa latenza.
Per le istanze FeatureOnlineStore create con l'erogazione online ottimizzata, puoi sfruttare una ricerca di similarità vettoriale per recuperare un elenco di entità semanticamente simili o correlate, note come vicini più prossimi approssimati.
Le sezioni seguenti mostrano come configurare un'istanza di Vertex AI Feature Store per la tua applicazione RAG.
Crea uno schema di tabella BigQuery
Utilizza la console Google Cloud per creare uno schema di tabella BigQuery. Per fungere da origine dati, deve contenere i seguenti campi.
| Nome campo | Tipo di dati | Stato |
|---|---|---|
corpus_id |
String |
Obbligatorio |
file_id |
String |
Obbligatorio |
chunk_id |
String |
Obbligatorio |
chunk_data_type |
String |
Ammette valori Null |
chunk_data |
String |
Ammette valori Null |
file_original_uri |
String |
Ammette valori Null |
embeddings |
Float |
Ripetuto |
Questo esempio di codice mostra come definire lo schema della tabella BigQuery.
SQL
CREATE TABLE `PROJECT_ID.input_us_central1.rag_source_new` (
`corpus_id` STRING NOT NULL,
`file_id` STRING NOT NULL,
`chunk_id` STRING NOT NULL,
`chunk_data_type` STRING,
`chunk_data` STRING,
`embeddings` ARRAY<FLOAT64>,
`file_original_uri` STRING
);
Esegui il provisioning di un'istanza FeatureOnlineStore
Per abilitare l'erogazione online delle caratteristiche, utilizza l'API Vertex AI Feature Store CreateFeatureOnlineStore per configurare un'istanza FeatureOnlineStore. Se stai eseguendo il provisioning di un FeatureOnlineStore per la prima volta, il completamento dell'operazione potrebbe richiedere circa cinque minuti.
REST
Per creare un'istanza di negozio online, invia una richiesta POST utilizzando il metodo featureOnlineStores.create.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui vuoi creare l'istanza
FeatureOnlineStore, ad esempious-central1. - PROJECT_ID: il tuo ID progetto.
- FEATUREONLINESTORE_NAME: il nome della nuova istanza
FeatureOnlineStore.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
Corpo JSON della richiesta:
{
"optimized": {}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureOnlineStoreOperationMetadata",
"genericMetadata": {
"createTime": "2023-09-18T17:49:23.847496Z",
"updateTime": "2023-09-18T17:49:23.847496Z"
}
}
}
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
project: il tuo ID progetto.location: la regione in cui vuoi creare l'istanzaFeatureOnlineStore, ad esempious-central1.feature_online_store_id: il nome della nuova istanzaFeatureOnlineStore.
Crea una risorsa FeatureView
Per connettere la tabella BigQuery, che archivia l'origine dati delle caratteristiche, all'istanza FeatureOnlineStore, chiama l'API CreateFeatureView per creare una risorsa FeatureView. Quando crei una risorsa FeatureView, scegli la metrica di distanza predefinita DOT_PRODUCT_DISTANCE, definita come il valore negativo del prodotto scalare (un valore DOT_PRODUCT_DISTANCE più piccolo indica una somiglianza maggiore).
Questo esempio di codice mostra come creare una risorsa FeatureView.
REST
# TODO(developer): Update and uncomment the following lines:
# Set feature_view_id
# Example: "feature_view_test"
# FEATURE_VIEW_ID = "your-feature-view-id"
#
# The big_query_uri generated in the above BigQuery table schema creation step
# The format should be "bq://" + BigQuery table ID
# Example: "bq://tester.ragtest1.rag_testdata"
# BIG_QUERY_URI=YOUR_BIG_QUERY_URI
# Call CreateFeatureView API to create a FeatureView
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews?feature_view_id=${FEATURE_VIEW_ID} \
-d '{
"vertex_rag_source": {
"uri": '\""${BIG_QUERY_URI}"\"'
}
}'
# Call ListFeatureViews API to verify the FeatureView is created successfully
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Caricamento dei dati ed erogazione online
L'API RAG gestisce il caricamento dei dati e l'erogazione online. Per scoprire di più sull'API RAG Engine su Gemini Enterprise Agent Platform, consulta quanto segue:
Utilizza Vertex AI Feature Store in RAG Engine
Dopo aver configurato l'istanza di Vertex AI Feature Store, le sezioni seguenti mostrano come configurarla come database vettoriale da utilizzare con l'applicazione RAG.
Utilizza l'istanza Vertex AI Feature Store come database vettoriale per creare un corpus RAG
Per creare il corpus RAG, devi utilizzare FEATURE_VIEW_RESOURCE_NAME. Il corpus RAG viene creato e associato automaticamente all'istanza di Vertex AI Feature Store. Le API RAG utilizzano i rag_corpus_id generati per gestire il caricamento dei dati nell'istanza di Vertex AI Feature Store e per recuperare i contesti pertinenti dai rag_corpus_id.
Questo esempio di codice mostra come utilizzare l'istanza di Vertex AI Feature Store come database vettoriale per creare un corpus RAG.
REST
# TODO(developer): Update and uncomment the following lines:
# CORPUS_DISPLAY_NAME = "your-corpus-display-name"
#
# Full feature view resource name
# Format: projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews/${FEATURE_VIEW_ID}
# FEATURE_VIEW_RESOURCE_NAME = "your-feature-view-resource-name"
# Call CreateRagCorpus API to create a new RAG corpus
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 -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_feature_store": {
"feature_view_resource_name":'\""${FEATURE_VIEW_RESOURCE_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RAG corpus is created successfully
curl -sS -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"
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Importa i file nella tabella BigQuery utilizzando l'API RAG
Utilizza l'API ImportRagFiles per importare file da Google Cloud Storage o
Google Drive nella tabella BigQuery dell'istanza
Vertex AI Feature Store. I file vengono incorporati e archiviati nella tabella BigQuery.
Questo esempio di codice mostra come importare i file nella tabella BigQuery utilizzando l'API RAG.
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 Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Esegui un processo di sincronizzazione per creare un indice FeatureOnlineStore
Dopo aver caricato i dati nella tabella BigQuery, esegui un processo di sincronizzazione per renderli disponibili per l'erogazione online. Devi generare un indice FeatureOnlineStore utilizzando FeatureView e il processo di sincronizzazione potrebbe richiedere 20 minuti.
Questo esempio di codice mostra come eseguire un processo di sincronizzazione per creare un indice FeatureOnlineStore.
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION_ID: la regione in cui si trova il negozio online, ad esempio
us-central1. - PROJECT_ID: il tuo ID progetto.
- FEATUREONLINESTORE_NAME: il nome del negozio online contenente la vista delle caratteristiche.
- FEATUREVIEW_NAME: il nome della visualizzazione delle caratteristiche in cui vuoi avviare manualmente la sincronizzazione dei dati.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{
"featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID"
}
Recupera i contesti pertinenti utilizzando l'API RAG
Al termine del processo di sincronizzazione, puoi recuperare i contesti pertinenti dall'indice FeatureOnlineStore tramite 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 Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Genera contenuti utilizzando l'API Gemini di Agent Platform
Chiama l'API Agent Platform GenerateContent per utilizzare i modelli Gemini per generare contenuti e specifica RAG_CORPUS_RESOURCE nella richiesta per recuperare i dati dall'indice FeatureOnlineStore.
REST
# TODO(developer): Update and uncomment the following lines:
# MODEL_ID=gemini-2.5-flash
# 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,
}
}
}
}'
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installa l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.