Auf dieser Seite erfahren Sie, wie Sie Vertex AI Feature Store als Vektordatenbank für die Verwendung mit der RAG Engine einrichten.
Sie können auch das Notebook RAG Engine mit Vertex AI Feature Store verwenden.
Durch die Einbindung von Vertex AI Feature Store als zusätzliche Vektordatenbank kann die RAG Engine Vertex AI Feature Store verwenden, um große Datenmengen mit niedriger Latenz zu verarbeiten. Dies trägt zur Verbesserung der Leistung und Skalierbarkeit Ihrer RAG-Anwendungen bei.
Vertex AI Feature Store einrichten
Vertex AI Feature Store, ein verwalteter, cloudnativer Dienst, ist eine wichtige Komponente der Gemini Enterprise Agent Platform. Er vereinfacht die Verwaltung von maschinellem Lernen (ML)-Features und die Onlinebereitstellung, da Sie Featuredaten in einer BigQuery-Tabelle oder -Ansicht verwalten können. Dies ermöglicht die Onlinebereitstellung von Features mit niedriger Latenz.
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
Verwenden Sie die Google Cloud Console, um ein BigQuery-Tabellenschema zu erstellen. Sie 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 |
In diesem Codebeispiel wird gezeigt, 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
Wenn Sie die Onlinebereitstellung von Features aktivieren möchten, verwenden Sie die Vertex AI Feature Store CreateFeatureOnlineStore API, um eine FeatureOnlineStore-Instanz einzurichten. Wenn Sie zum ersten Mal einen FeatureOnlineStore bereitstellen, kann der Vorgang etwa fünf Minuten dauern.
REST
Senden Sie zum Erstellen einer Onlineshopinstanz eine POST-Anfrage mit der Methode featureOnlineStores.create.
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 API-Referenzdokumentation zu Python.
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.
Ressource FeatureView erstellen
Wenn Sie die BigQuery-Tabelle, in der die Feature-Datenquelle gespeichert ist, mit der FeatureOnlineStore-Instanz verbinden möchten, rufen Sie die CreateFeatureView API auf, um eine FeatureView-Ressource zu erstellen. Wählen Sie beim Erstellen einer FeatureView-Ressource den Standard-Distanzmesswert DOT_PRODUCT_DISTANCE aus, der als Negativ des Punktprodukts definiert ist (ein kleinerer DOT_PRODUCT_DISTANCE-Wert weist auf eine höhere Ähnlichkeit hin).
In diesem Codebeispiel wird gezeigt, 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 API-Referenzdokumentation zu Python.
Daten hochladen und Onlinebereitstellung
Die RAG API übernimmt den Datenupload und die Onlinebereitstellung. Weitere Informationen zur RAG Engine in der Gemini Enterprise Agent Platform API finden Sie hier:
Vertex AI Feature Store in der RAG-Engine verwenden
Nachdem die Vertex AI Feature Store-Instanz eingerichtet wurde, wird in den folgenden Abschnitten beschrieben, wie Sie sie als Vektordatenbank für die RAG-Anwendung einrichten.
Vertex AI Feature Store-Instanz als Vektordatenbank zum Erstellen eines RAG-Korpus verwenden
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. RAG APIs verwenden die generierte rag_corpus_id, um den Datenupload in die Vertex AI Feature Store-Instanz zu verarbeiten und relevante Kontexte aus der rag_corpus_id abzurufen.
In diesem Codebeispiel wird gezeigt, 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 API-Referenzdokumentation zu Python.
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.
In diesem Codebeispiel wird gezeigt, 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 API-Referenzdokumentation zu Python.
Synchronisierungsvorgang 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 dem FeatureView einen FeatureOnlineStore-Index generieren. Der Synchronisierungsvorgang kann bis zu 20 Minuten dauern.
In diesem Codebeispiel wird gezeigt, 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 der Synchronisierung können Sie relevante Kontexte über die RetrieveContexts API aus dem FeatureOnlineStore-Index 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 API-Referenzdokumentation zu Python.
Inhalte mit der Agent Platform Gemini API generieren
Rufen Sie die Agent Platform API GenerateContent auf, um Gemini-Modelle zum Generieren von Inhalten zu verwenden, und geben Sie RAG_CORPUS_RESOURCE in der Anfrage 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 API-Referenzdokumentation zu Python.