Questa pagina mostra come configurare Vertex AI Feature Store come database di vettori da utilizzare con RAG Engine.
Puoi anche seguire la procedura utilizzando questo notebook RAG Engine con Vertex AI Feature Store.
RAG Engine utilizza un database vettoriale integrato basato su Spanner per archiviare e gestire le rappresentazioni vettoriali dei documenti di testo. Il database vettoriale recupera i documenti pertinenti in base alla loro somiglianza semantica con una determinata query.
Se integri Vertex AI Feature Store come database vettoriale aggiuntivo, RAG Engine può utilizzarlo 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 cloud-native, è un componente essenziale di Vertex AI. Semplifica la gestione delle funzionalità di machine learning (ML) e la pubblicazione online consentendoti di gestire i dati delle funzionalità all'interno di una tabella o vista BigQuery. In questo modo, è possibile pubblicare funzionalità online a bassa latenza.
Per le istanze FeatureOnlineStore
create con la pubblicazione online ottimizzata, puoi usufruire di una ricerca di similarità vettoriale per recuperare un elenco di entità semanticamente simili o correlate, note come vicino più prossimo approssimato.
Le sezioni seguenti mostrano come configurare un'istanza di Vertex AI Feature Store per la tua applicazione RAG.
Creare uno schema della tabella BigQuery
Utilizza la console Google Cloud per creare uno schema di tabella BigQuery. Deve contenere i seguenti campi per poter essere utilizzata come 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 abilitare l'erogazione online delle funzionalità, utilizza l'API CreateFeatureOnlineStore
Vertex AI Feature Store 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: regione in cui vuoi creare l'istanza
FeatureOnlineStore
, ad esempious-central1
. - PROJECT_ID: l'ID del tuo 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 delle seguenti 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 per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
project
: l'ID del tuo progetto.location
: regione in cui vuoi creare l'istanzaFeatureOnlineStore
, ad esempious-central1
.feature_online_store_id
: il nome della nuova istanzaFeatureOnlineStore
.
Crea una risorsa FeatureView
Per collegare la tabella BigQuery, che memorizza 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 della distanza predefinita DOT_PRODUCT_DISTANCE
, che è definita come
il valore 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 per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Caricamento dei dati e pubblicazione 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 configurarlo 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 Vertex AI Feature Store. Le API RAG utilizzano il rag_corpus_id
generato per gestire il caricamento dei dati nell'istanza Vertex AI Feature Store e per recuperare i contesti pertinenti dal rag_corpus_id
.
Questo esempio di codice mostra come utilizzare l'istanza Vertex AI Feature Store come database di vettori 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 per Python, consulta Installare l'SDK Vertex AI per 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 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 per Python, consulta Installare l'SDK Vertex AI per 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
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: regione in cui si trova il negozio online, ad esempio
us-central1
. - PROJECT_ID: l'ID del tuo progetto.
- FEATUREONLINESTORE_NAME: il nome del negozio online contenente la visualizzazione delle funzionalità.
- FEATUREVIEW_NAME: il nome della visualizzazione della 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 delle seguenti 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 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 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
Chiama l'API GenerateContent
di Vertex AI 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-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,
}
}
}
}'
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.