Questa pagina mostra come configurare Vertex AI Feature Store come database vettoriale da utilizzare con RAG Engine.
Puoi anche seguire le istruzioni utilizzando il notebook RAG Engine con Vertex AI Feature Store.
Integrando Vertex AI Feature Store come database vettoriale aggiuntivo, RAG Engine 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.
Configurare un Vertex AI Feature Store
Vertex AI Feature Store, un servizio gestito nativo per il cloud, è un componente essenziale di Vertex AI. Semplifica la gestione delle funzionalità di machine learning (ML) e il servizio online consentendoti di gestire i dati delle funzionalità all'interno di una tabella o vista BigQuery. Ciò consente la distribuzione online di funzionalità a bassa latenza.
Per le istanze FeatureOnlineStore
create con la pubblicazione 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 l'applicazione RAG.
Crea uno schema della tabella BigQuery
Utilizza la console Google Cloud per creare uno schema della tabella BigQuery. Deve contenere i seguenti campi per fungere da origine dati.
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 attivare la pubblicazione online delle funzionalità, utilizza l'API Vertex AI Feature Store
CreateFeatureOnlineStore
per configurare un'istanza FeatureOnlineStore
. Se
esegui il provisioning di un FeatureOnlineStore
per la prima volta, l'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 seguenti sostituzioni:
- 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 Installare 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 funzionalità, 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 negativo del prodotto scalare (un valore DOT_PRODUCT_DISTANCE
più piccolo indica una
maggiore somiglianza).
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 Installare 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 la pubblicazione online.
Utilizzare 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 di 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 il rag_corpus_id
generato per gestire il caricamento dei dati nell'istanza di Vertex AI Feature Store e per recuperare i contesti pertinenti da 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 Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Importare 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 di Vertex AI Feature Store. I file vengono incorporati e archiviati nella tabella BigQuery.
Questo esempio di codice mostra come importare 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 Installare 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 la pubblicazione online. Devi
generare un indice FeatureOnlineStore
utilizzando FeatureView
e il
completamento della procedura 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 seguenti sostituzioni:
- 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 dell'archivio online contenente la visualizzazione delle funzionalità.
- FEATUREVIEW_NAME: il nome della vista delle funzionalità 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" }
Recuperare contesti pertinenti utilizzando l'API RAG
Una volta completata la procedura 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 Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Genera contenuti utilizzando l'API Gemini di Vertex AI
Chiama l'API Vertex AI 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.0-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 Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.