Auf dieser Seite wird beschrieben, wie Sie die schemabasierte Metadatensuche in der RAG Engine auf der Gemini Enterprise Agent Platform verwenden. Sie können ein Metadatenschema für einen Korpus definieren, Metadaten an Dateien in diesem Korpus anhängen und diese Metadaten verwenden, um Kontexte beim Abrufen zu filtern.
Hinweis
Wenn Sie die Metadatensuche verwenden möchten, benötigen Sie einen vorhandenen RAG-Korpus und RAG-Dateien. Informationen zum Erstellen eines Corpus und zum Hochladen von Dateien finden Sie unter RAG-Wissensdatenbank verwalten.
Wenn Sie einen Korpus erstellen oder eine Datei hochladen, gibt die API eine numerische RAG_CORPUS_ID und RAG_FILE_ID zurück (z. B. 123456789). Sie benötigen diese IDs, um Ihre Metadatenressourcen zu verwalten.
Metadaten-Ressourcen
Für die Metadatensuche wird die folgende Ressourcenhierarchie verwendet:
RagCorpus:Die Ressource der obersten Ebene, die Ihre RAG-Dateien und deren Konfigurationen enthält.
- RagDataSchema:Eine untergeordnete Ressource von
RagCorpus. Sie definiert die Struktur für ein einzelnes Metadatenfeld, das im Korpus verwendet wird. Jedes Schema gibt einen Schlüssel (z. B.year) und einen Datentyp (INTEGER,FLOAT,STRING,DATETIME,BOOLEANoderLIST) an. Sie müssen für jeden Metadatenschlüssel, den Sie zum Filtern verwenden möchten, einenRagDataSchemadefinieren. RagFile:Eine untergeordnete Ressource von
RagCorpus, die ein einzelnes aufgenommenes Dokument darstellt.- RagMetadata:Eine untergeordnete Ressource von
RagFile. Sie stellt ein einzelnes Schlüssel/Wert-Metadatenpaar dar, das an diese bestimmte Datei angehängt ist (z. B.year=2024). Der in einerRagMetadata-Ressource verwendete Schlüssel muss einem Schlüssel entsprechen, der in einerRagDataSchemafür den übergeordneten Korpus definiert ist. An eine einzelne Datei können mehrereRagMetadata-Ressourcen angehängt werden.
- RagMetadata:Eine untergeordnete Ressource von
- RagDataSchema:Eine untergeordnete Ressource von
Metadatenschemas verwalten
Nachdem Sie einen RAG-Korpus erstellt haben, definieren Sie die Metadatenstruktur mit der RagDataSchema-Ressource auf Korpusebene. Sie können die von Ihnen definierten Schemas auch ansehen und löschen.
Metadatenschemas definieren
Wenn Sie ein Schema definieren, geben Sie einen Schlüssel und einen Datentyp an. Die gültigen Typen für einen Schlüssel sind:
INTEGER: Übergebene Metadatenwerte alsint_value.FLOAT: Übergebene Metadatenwerte alsfloat_value.STRING: Übergebene Metadatenwerte alsstr_value.DATETIME: Übergebene Metadatenwerte alsdatetime_value(RFC 3339-formatierter String, z. B. „2024-01-01T00:00:00Z“).BOOLEAN: Übergebene Metadatenwerte alsbool_value.LIST: Übergebene Metadatenwerte alslist_value. Im folgenden REST-Beispiel wird gezeigt, wie Sie Metadatenschemas im Batch erstellen, die die Felderyearundmonthfür einen Korpus definieren.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragDataSchemas:batchCreate \
-d '{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'",
"requests": [
{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'",
"rag_data_schema": {
"key": "year",
"schema_details": {"type": "INTEGER"}
}
},
{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'",
"rag_data_schema": {
"key": "month",
"schema_details": {"type": "STRING"}
}
}
]
}'
Metadatenschemas auflisten
Im folgenden REST-Beispiel wird gezeigt, wie Sie die für einen Korpus definierten Metadatenschemas auflisten.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragDataSchemas
Metadatenschemas löschen
Im folgenden REST-Beispiel wird gezeigt, wie Metadatenschemas in einem Batch aus einem Korpus gelöscht werden.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
- RAG_DATA_SCHEMA_KEY_1: Der Schlüsselname des ersten zu löschenden Metadatenschemas.
- RAG_DATA_SCHEMA_KEY_2: Der Schlüsselname des zweiten zu löschenden Metadatenschemas.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
RAG_DATA_SCHEMA_KEY_1=RAG_DATA_SCHEMA_KEY_1
RAG_DATA_SCHEMA_KEY_2=RAG_DATA_SCHEMA_KEY_2
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragDataSchemas:batchDelete \
-d '{
"names": [
"projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragDataSchemas/'"${RAG_DATA_SCHEMA_KEY_1}"'",
"projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragDataSchemas/'"${RAG_DATA_SCHEMA_KEY_2}"'"
]
}'
Dateimetadaten verwalten
Nachdem Sie Dateien in Ihren Korpus hochgeladen oder importiert haben, können Sie Metadaten, die mit diesen Dateien verknüpft sind, anhängen, aktualisieren, ansehen und löschen.
Metadaten an eine Datei anhängen
Die angehängten Metadaten müssen dem für den Korpus definierten Schema entsprechen. Das folgende REST-Beispiel zeigt, wie Sie einer Datei mehrere Metadatenwerte zuweisen.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
- RAG_FILE_ID: Die ID der RAG-Datei.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
RAG_FILE_ID=RAG_FILE_ID
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles/${RAG_FILE_ID}/ragMetadata:batchCreate \
-d '{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragFiles/'"${RAG_FILE_ID}"'",
"requests": [
{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragFiles/'"${RAG_FILE_ID}"'",
"rag_metadata": {
"user_specified_metadata": { "key": "year", "value": { "int_value": 2024 } }
}
},
{
"parent": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragFiles/'"${RAG_FILE_ID}"'",
"rag_metadata": {
"user_specified_metadata": { "key": "month", "value": { "str_value": "May" } }
}
}
]
}'
Metadaten für eine Datei auflisten
Das folgende REST-Beispiel zeigt, wie die Metadaten einer bestimmten Datei aufgelistet werden.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
- RAG_FILE_ID: Die ID der RAG-Datei.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
RAG_FILE_ID=RAG_FILE_ID
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles/${RAG_FILE_ID}/ragMetadata
Metadaten aktualisieren
Sie können die Metadatenwerte aktualisieren, die einer Datei zugeordnet sind. Im folgenden REST-Beispiel wird gezeigt, wie der Metadatenwert aktualisiert wird, der dem Schlüssel year zugeordnet ist. RAG_METADATA_KEY ist der String, der beim Erstellen der Metadaten verwendet wurde.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
- RAG_FILE_ID: Die ID der RAG-Datei.
- RAG_METADATA_KEY: Der Schlüsselname der zu aktualisierenden Metadaten.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
RAG_FILE_ID=RAG_FILE_ID
RAG_METADATA_KEY=RAG_METADATA_KEY
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles/${RAG_FILE_ID}/ragMetadata/${RAG_METADATA_KEY} \
-d '{
"user_specified_metadata": { "key": "'"${RAG_METADATA_KEY}"'", "value": { "int_value": 2025 } }
}'
Metadaten aus einer Datei löschen
Im folgenden REST-Beispiel wird gezeigt, wie Metadatenwerte aus einer Datei im Batch gelöscht werden.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
- RAG_FILE_ID: Die ID der RAG-Datei.
- RAG_METADATA_KEY_1: Der Schlüsselname des ersten zu löschenden Metadatenwerts.
- RAG_METADATA_KEY_2: Der Schlüsselname des zweiten zu löschenden Metadatenwerts.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
RAG_FILE_ID=RAG_FILE_ID
RAG_METADATA_KEY_1=RAG_METADATA_KEY_1
RAG_METADATA_KEY_2=RAG_METADATA_KEY_2
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles/${RAG_FILE_ID}/ragMetadata:batchDelete \
-d '{
"names": [
"projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragFiles/'"${RAG_FILE_ID}"'/ragMetadata/'"${RAG_METADATA_KEY_1}"'",
"projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'/ragFiles/'"${RAG_FILE_ID}"'/ragMetadata/'"${RAG_METADATA_KEY_2}"'"
]
}'
Kontexte mit Metadaten filtern
Um die Relevanz Ihrer Ergebnisse zu verbessern, können Sie die Dateimetadaten verwenden, um den Suchbereich beim Abrufen von Kontextinformationen einzugrenzen. Fügen Sie Ihrer RetrieveContexts-Anfrage einen metadata_filter-Ausdruck mit CEL (Common Expression Language) hinzu, z. B. year == 2024 && month == "May". Nur Dateien mit Metadaten, die dem Filterausdruck entsprechen, werden für den Abruf berücksichtigt.
Im folgenden REST-Beispiel wird gezeigt, wie Sie Kontexte mit einem Metadatenfilter abrufen.
REST
Ersetzen Sie die folgenden Variablen:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- RAG_CORPUS_ID: Die ID des RAG-Korpus.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
RAG_CORPUS_ID=RAG_CORPUS_ID
QUERY="except share amounts"
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:retrieveContexts -d '{
"vertex_rag_store": {
"rag_resources": [
{
"rag_corpus": "projects/'"${PROJECT_ID}"'/locations/'"${LOCATION}"'/ragCorpora/'"${RAG_CORPUS_ID}"'"
}
]
},
"query": {
"text": "'"${QUERY}"'",
"rag_retrieval_config": {
"top_k": 10,
"filter": {
"vector_distance_threshold": 0.5,
"metadata_filter": "year == 2024 && month == \"May\""
}
}
}
}'
Nächste Schritte
- Weitere Informationen zum Hochladen und Verwalten von Dateien finden Sie unter RAG-Wissensdatenbank verwalten.
- Weitere Informationen zur Standard-Vektorsuche in RAG finden Sie unter Vektorsuche mit RAG verwenden.