Auf dieser Seite erfahren Sie, wie Sie den Vertex AI Feature Store als Vektordatenbank für die Verwendung mit der RAG-Engine einrichten.
Sie können auch das Notebook „RAG Engine with Vertex AI Feature Store“ verwenden.
Durch die Einbindung des Vertex AI Feature Store als zusätzliche Vektordatenbank kann die RAG-Engine große Datenmengen mit niedriger Latenz verarbeiten. Das trägt dazu bei, die Leistung und Skalierbarkeit Ihrer RAG-Anwendungen zu verbessern.
Vertex AI Feature Store einrichten
Vertex AI Feature Store ist ein verwalteter, cloudnativer Dienst und eine wesentliche Komponente der Gemini Enterprise Agent Platform. Er vereinfacht die Verwaltung von Features für maschinelles Lernen (ML) und die Onlinebereitstellung, da Sie Featuredaten in einer BigQuery-Tabelle oder -Ansicht verwalten können. Dadurch wird eine Onlinebereitstellung von Features mit niedriger Latenz ermöglicht.
Bei FeatureOnlineStore-Instanzen, die mit optimierter Onlinebereitstellung erstellt wurden, können Sie eine Suche nach Vektorähnlichkeiten durchführen, um eine Liste von semantisch ähnlichen oder verwandten Entitäten abzurufen, die als ungefähre nächste Nachbarn bezeichnet werden.
In den folgenden Abschnitten wird beschrieben, wie Sie eine Vertex AI Feature Store-Instanz für Ihre RAG-Anwendung einrichten.
BigQuery-Tabellenschema erstellen
Erstellen Sie mit der Google Cloud console ein BigQuery-Tabellenschema. Es muss die folgenden Felder enthalten, um als Datenquelle zu dienen.
| Feldname | Datentyp | Status |
|---|---|---|
corpus_id |
String |
Erforderlich |
file_id |
String |
Erforderlich |
chunk_id |
String |
Erforderlich |
chunk_data_type |
String |
Nullwerte zulässig |
chunk_data |
String |
Nullwerte zulässig |
file_original_uri |
String |
Nullwerte zulässig |
embeddings |
Float |
Wiederholt |
Dieses Codebeispiel zeigt, wie Sie Ihr BigQuery-Tabellenschema definieren.
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
);
FeatureOnlineStore-Instanz bereitstellen
Verwenden Sie die Vertex AI Feature Store
CreateFeatureOnlineStore API, um eine FeatureOnlineStore Instanz einzurichten und die Onlinebereitstellung von Features zu aktivieren. Wenn Sie zum ersten Mal eine FeatureOnlineStore-Instanz bereitstellen, kann der Vorgang etwa fünf Minuten dauern.
REST
Senden Sie zum Erstellen einer Onlineshop-Instanz eine POST Anfrage mit der
featureOnlineStores.create
Methode.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION_ID: Region, in der Sie die
FeatureOnlineStore-Instanz erstellen möchten, z. B.us-central1. - PROJECT_ID: Ihre Projekt-ID.
- FEATUREONLINESTORE_NAME: Name der neuen
FeatureOnlineStore-Instanz.
HTTP-Methode und URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
JSON-Text der Anfrage:
{
"optimized": {}
}
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
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
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
$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
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
project: Ihre Projekt-ID.location: Region, in der Sie dieFeatureOnlineStore-Instanz erstellen möchten, z. B.us-central1.feature_online_store_id: Name der neuenFeatureOnlineStore-Instanz.
FeatureView-Ressource erstellen
Rufen Sie die CreateFeatureView API auf, um eine
FeatureView Ressource zu erstellen und die BigQuery-Tabelle, in der die Datenquelle für Features gespeichert ist, mit
der FeatureOnlineStore Instanz zu verbinden. Wählen Sie beim Erstellen einer FeatureView-Ressource den Standardabstands-Messwert DOT_PRODUCT_DISTANCE aus, der als Negativ des Punktprodukts definiert ist (ein kleinerer Wert für DOT_PRODUCT_DISTANCE bedeutet eine höhere Ähnlichkeit).
Dieses Codebeispiel zeigt, wie Sie eine FeatureView-Ressource erstellen.
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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Daten hochladen und online bereitstellen
Die RAG API verarbeitet das Hochladen von Daten und die Onlinebereitstellung. Weitere Informationen zur RAG-Engine auf der Gemini Enterprise Agent Platform API finden Sie unter:
Vertex AI Feature Store in der RAG-Engine verwenden
Nachdem die Vertex AI Feature Store-Instanz eingerichtet wurde, erfahren Sie in den folgenden Abschnitten, wie Sie sie als Vektordatenbank für die Verwendung mit der RAG-Anwendung einrichten.
Vertex AI Feature Store-Instanz als Vektordatenbank verwenden, um einen RAG-Korpus zu erstellen
Zum Erstellen des RAG-Korpus müssen Sie FEATURE_VIEW_RESOURCE_NAME verwenden. Der RAG-Korpus wird erstellt und automatisch mit der Vertex AI Feature Store-Instanz verknüpft. Die RAG APIs verwenden die generierte rag_corpus_id, um das Hochladen von Daten in die Vertex AI Feature Store-Instanz zu verarbeiten und relevante Kontexte aus der rag_corpus_id abzurufen.
Dieses Codebeispiel zeigt, wie Sie die Vertex AI Feature Store-Instanz als Vektordatenbank verwenden, um einen RAG-Korpus zu erstellen.
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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Dateien mit der RAG API in die BigQuery-Tabelle importieren
Verwenden Sie die ImportRagFiles API, um Dateien aus Google Cloud Storage oder
Google Drive in die BigQuery-Tabelle der Vertex AI Feature Store
Instanz zu importieren. Die Dateien werden eingebettet und in der BigQuery-Tabelle gespeichert.
Dieses Codebeispiel zeigt, wie Sie Dateien mit der RAG API in die BigQuery-Tabelle importieren.
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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Synchronisierungsprozess ausführen, um einen FeatureOnlineStore-Index zu erstellen
Nachdem Sie Ihre Daten in die BigQuery-Tabelle hochgeladen haben, führen Sie einen Synchronisierungsprozess aus, um Ihre Daten für die Onlinebereitstellung verfügbar zu machen. Sie müssen mit der FeatureView einen FeatureOnlineStore-Index generieren. Der Synchronisierungsprozess kann bis zu 20 Minuten dauern.
Dieses Codebeispiel zeigt, wie Sie einen Synchronisierungsprozess ausführen, um einen FeatureOnlineStore-Index zu erstellen.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION_ID: Die Region, in der sich der Onlinespeicher befindet, z. B.
us-central1. - PROJECT_ID ist die Projekt-ID.
- FEATUREONLINESTORE_NAME: Der Name des Onlinespeichers, der die Featureansicht enthält.
- FEATUREVIEW_NAME: Der Name der Featureansicht, für die Sie die Datensynchronisierung manuell starten möchten.
HTTP-Methode und URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Senden Sie die Anfrage mithilfe einer der folgenden Optionen:
curl
Führen Sie folgenden Befehl aus:
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
Führen Sie folgenden Befehl aus:
$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
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID"
}
Relevante Kontexte mit der RAG API abrufen
Nach Abschluss des Synchronisierungsprozesses können Sie relevante Kontexte aus dem FeatureOnlineStore-Index über die RetrieveContexts API abrufen.
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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.
Inhalte mit der Agent Platform Gemini API generieren
Rufen Sie die Agent Platform GenerateContent API auf, um mit Gemini-Modellen Inhalte zu generieren, und geben Sie in der Anfrage RAG_CORPUS_RESOURCE an, um Daten aus dem FeatureOnlineStore-Index abzurufen.
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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Python API-Referenzdokumentation.