Auf dieser Seite erfahren Sie, wie Sie Vertex AI Feature Store als Vektordatenbank für die Verwendung mit RAG Engine einrichten.
Sie können auch das Notebook RAG Engine with Vertex AI Feature Store verwenden.
Durch die Integration von Vertex AI Feature Store als zusätzliche Vektordatenbank kann die RAG Engine große Datenmengen mit niedriger Latenz verarbeiten. Dies 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 ein wesentlicher Bestandteil von Vertex AI. 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. 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 nutzen, um eine Liste semantisch ähnlicher oder verwandter 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 Konsole, um ein BigQuery-Tabellenschema zu erstellen. Sie muss die folgenden Felder enthalten, um als Datenquelle dienen zu können.
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 das 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
Um die Onlinebereitstellung von Features zu aktivieren, verwenden Sie die Vertex AI Feature Store-CreateFeatureOnlineStore
API, um eine FeatureOnlineStore
-Instanz einzurichten. Wenn Sie zum ersten Mal eine 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 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.
Ressource FeatureView
erstellen
Um die BigQuery-Tabelle, in der die Feature-Datenquelle gespeichert ist, mit der FeatureOnlineStore
-Instanz zu verbinden, rufen Sie die CreateFeatureView
API auf, um eine FeatureView
-Ressource zu erstellen. Wenn Sie eine FeatureView
-Ressource erstellen, wählen Sie den Standardmesswert für die Distanz DOT_PRODUCT_DISTANCE
aus, der als Negativ des Skalarprodukts definiert ist (ein kleinerer DOT_PRODUCT_DISTANCE
-Wert weist auf eine höhere Ähnlichkeit hin).
In diesem Codebeispiel wird gezeigt, wie eine FeatureView
-Ressource erstellt wird.
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 übernimmt das Hochladen und die Onlinebereitstellung der Daten.
Vertex AI Feature Store in 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 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 das generierte rag_corpus_id
, um den Daten-Upload in die Vertex AI Feature Store-Instanz zu verarbeiten und relevante Kontexte aus dem 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 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.
In diesem Codebeispiel wird gezeigt, wie Dateien mit der RAG API in die BigQuery-Tabelle importiert werden.
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 die Daten für die Onlinebereitstellung verfügbar zu machen. Sie müssen einen FeatureOnlineStore
-Index mit FeatureView
erstellen. Die Synchronisierung 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 Python-API-Referenzdokumentation.
Inhalte mit der Vertex AI Gemini API generieren
Rufen Sie die Vertex AI GenerateContent
API auf, um mit Gemini-Modellen Inhalte zu generieren, 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.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
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.