Auf dieser Seite erfahren Sie, wie Sie Vertex AI Feature Store als Vektordatenbank für die RAG Engine einrichten.
Sie können auch mit diesem Notebook RAG Engine mit Vertex AI Feature Store weitermachen.
Die RAG-Engine verwendet eine integrierte Vektordatenbank, die von Spanner unterstützt wird, um Vektordarstellungen von Textdokumenten zu speichern und zu verwalten. Die Vektordatenbank ruft relevante Dokumente basierend auf ihrer semantischen Ähnlichkeit mit einer bestimmten Suchanfrage ab.
Wenn Sie Vertex AI Feature Store als zusätzliche Vektordatenbank einbinden, kann die RAG Engine damit 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 wichtige Komponente von Vertex AI. Er vereinfacht die Verwaltung von ML-Features (Maschinelles Lernen) und die Onlinebereitstellung, da Sie Featuredaten in einer BigQuery-Tabelle oder -Ansicht verwalten können. So ist die Onlinebereitstellung von Funktionen mit niedriger Latenz möglich.
Bei FeatureOnlineStore
-Instanzen, die mit der optimierten Onlinebereitstellung erstellt wurden, können Sie eine Suche nach Vektorähnlichkeiten verwenden, um eine Liste von semantisch ähnlichen oder verwandten Entitäten abzurufen, die als ungefähre nächste Nachbarn bezeichnet werden.
In den folgenden Abschnitten erfahren Sie, 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. 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 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
Wenn Sie die Onlinebereitstellung von Features aktivieren möchten, richten Sie mit der CreateFeatureOnlineStore
API von Vertex AI Feature Store eine FeatureOnlineStore
-Instanz ein. Wenn Sie eine FeatureOnlineStore
zum ersten Mal 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 Referenzdokumentation zur Python API.
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 verknüpfen möchten, rufen Sie die CreateFeatureView
API auf, um eine FeatureView
-Ressource zu erstellen. Wählen Sie beim Erstellen einer FeatureView
-Ressource den Standardmesswert für die Entfernung DOT_PRODUCT_DISTANCE
aus. Dieser wird als negatives Skalarprodukt definiert. Je kleiner DOT_PRODUCT_DISTANCE
ist, desto ähnlicher sind die Elemente.
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 Referenzdokumentation zur Python API.
Daten hochladen und online bereitstellen
Die RAG API verarbeitet den Datenupload und die Onlinebereitstellung.
Vertex AI Feature Store in der RAG-Engine verwenden
Nachdem die Vertex AI Feature Store-Instanz eingerichtet ist, erfahren Sie in den folgenden Abschnitten, wie Sie sie als Vektordatenbank für die RAG-Anwendung einrichten.
Vertex AI Feature Store-Instanz als Vektordatenbank verwenden, um einen RAG-Korpus zu erstellen
Zum Erstellen des RAG-Corpus 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 Referenzdokumentation zur Python API.
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 mit der RAG API Dateien 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 Referenzdokumentation zur Python API.
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 einen FeatureOnlineStore
-Index mit dem FeatureView
generieren. Die Synchronisierung kann 20 Minuten dauern.
In diesem Codebeispiel wird gezeigt, wie ein Synchronisierungsprozess ausgeführt wird, 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 in etwa folgende JSON-Antwort 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 Referenzdokumentation zur Python API.
Inhalte mit der Vertex AI Gemini API generieren
Rufen Sie die Vertex AI GenerateContent
API auf, um Inhalte mit Gemini-Modellen 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-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
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Nächste Schritte
- Weitere Informationen zur Erdung finden Sie unter Fundierungsübersicht.
- Weitere Informationen zur RAG Engine finden Sie unter RAG Engine verwenden.
- Weitere Informationen zu Fundierung und RAG finden Sie unter Fundierungsantworten mit RAG.