Wenn Sie strukturierte Daten mit der Google Cloud -Console importieren, erkennt Gemini Enterprise das Schema automatisch. Sie können entweder dieses automatisch erkannte Schema in Ihrer Engine verwenden oder die API nutzen, um ein Schema anzugeben, das die Struktur der Daten angibt.
Wenn Sie ein Schema angeben und es später mit einem neuen Schema aktualisieren, muss das neue Schema mit dem ursprünglichen Schema abwärtskompatibel sein. Andernfalls schlägt die Schemaaktualisierung fehl.
Weitere Informationen zum Schema finden Sie unter dataStores.schemas
.
Möglichkeiten zum Bereitstellen des Schemas für Ihren Datenspeicher
Es gibt verschiedene Ansätze, um das Schema für strukturierte Daten zu bestimmen.
Automatische Erkennung und Bearbeitung: Lassen Sie Gemini Enterprise automatisch ein erstes Schema erkennen und vorschlagen. Anschließend verfeinern Sie das Schema über die Konsolenoberfläche. Google empfiehlt dringend, nach der automatischen Erkennung der Felder wichtige Eigenschaften allen wichtigen Feldern zuzuordnen.
Dieser Ansatz wird verwendet, wenn Sie der Anleitung für strukturierte Daten in der Google Cloud Console unter Einen Speicher für eigene Daten erstellen folgen.
Schema als JSON-Objekt angeben: Stellen Sie das Schema Gemini Enterprise als JSON-Objekt zur Verfügung. Sie müssen ein korrektes JSON-Objekt vorbereitet haben. Ein Beispiel für ein JSON-Objekt finden Sie unter Beispielschema als JSON-Objekt. Nachdem Sie das Schema erstellt haben, laden Sie Ihre Daten entsprechend hoch.
Dieser Ansatz kann verwendet werden, wenn Sie einen Datenspeicher über die API mit einem curl-Befehl (oder einem Programm) erstellen. Einmaliger Import aus BigQuery Weitere Informationen finden Sie in der Anleitung Eigenes Schema bereitstellen.
Automatische Erkennung und Bearbeitung
Wenn Sie mit dem Importieren von Daten beginnen, werden in Gemini Enterprise die ersten importierten Dokumente als Stichprobe verwendet. Anhand dieser Dokumente wird ein Schema für die Daten vorgeschlagen, das Sie dann überprüfen oder bearbeiten können.
Wenn Felder, die Sie Schlüsselattributen zuordnen möchten, in den Stichprobendokumenten nicht vorhanden sind, können Sie sie manuell hinzufügen, wenn Sie das Schema überprüfen.
Wenn Gemini Enterprise später beim Datenimport auf zusätzliche Felder stößt, werden diese Felder trotzdem importiert und dem Schema hinzugefügt. Wenn Sie das Schema bearbeiten möchten, nachdem alle Daten importiert wurden, lesen Sie den Abschnitt Schema aktualisieren.
Beispiel für ein Schema als JSON-Objekt
Sie können Ihr eigenes Schema im JSON-Schema-Format definieren. Das ist eine deklarative Open-Source-Sprache zum Definieren, Annotieren und Validieren von JSON-Dokumenten. Beispiel für eine gültige JSON-Schema-Anmerkung:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "dynamic": "true", "datetime_detection": true, "geolocation_detection": true, "properties": { "title": { "type": "string", "keyPropertyMapping": "title", "retrievable": true, "completable": true }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" }, "brand": { "type": "string", "indexable": true, "dynamicFacetable": true }, "location": { "type": "geolocation", "indexable": true, "retrievable": true }, "creationDate": { "type": "datetime", "indexable": true, "retrievable": true }, "isCurrent": { "type": "boolean", "indexable": true, "retrievable": true } } }
Hier einige der Felder in diesem Schema-Beispiel:
dynamic
: Wenndynamic
auf den Stringwert"true"
festgelegt ist, werden alle neuen Properties, die in den importierten Daten gefunden werden, dem Schema hinzugefügt. Wenndynamic
auf"false"
gesetzt ist, werden neue Properties, die in importierten Daten gefunden werden, ignoriert. Die Properties werden weder dem Schema hinzugefügt noch werden die Werte importiert.Angenommen, ein Schema hat zwei Attribute:
title
unddescription
. Sie laden Daten hoch, die Attribute fürtitle
,description
undrating
enthalten. Wenndynamic
"true"
ist, werden die Property für Bewertungen und die entsprechenden Daten importiert. Wenndynamic
"false"
ist, werden dierating
-Attribute nicht importiert,title
unddescription
aber schon.Der Standardwert ist
"true"
.datetime_detection
: Wenndatetime_detection
auf den booleschen Werttrue
festgelegt ist, wird der Schematyp beim Import von Daten im Datums-/Uhrzeitformat aufdatetime
gesetzt. Die unterstützten Formate sind RFC 3339 und ISO 8601.Beispiel:
2024-08-05 08:30:00 UTC
2024-08-05T08:30:00Z
2024-08-05T01:30:00-07:00
2024-08-05
2024-08-05T08:30:00+00:00
Wenn
datatime_detection
auf den booleschen Wertfalse
festgelegt ist, wird der Schematyp beim Import von Daten im Datums-/Uhrzeitformat aufstring
festgelegt.Der Standardwert ist
true
.geolocation_detection
: Wenngeolocation_detection
auf den booleschen Werttrue
gesetzt ist, wird der Schematyp beim Import von Daten im Geolocation-Format aufgeolocation
gesetzt. Daten werden als geografische Daten erkannt, wenn es sich um ein Objekt mit einer Breitengrad- und einer Längengradzahl oder um ein Objekt mit einer Adresszeichenfolge handelt.Beispiel:
"myLocation": {"latitude":37.42, "longitude":-122.08}
"myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}
Wenn
geolocation_detection
auf den booleschen Wertfalse
festgelegt ist, wird der Schematyp beim Import von Daten im Geolocation-Format aufobject
festgelegt.Der Standardwert ist
true
.keyPropertyMapping
: Ein Feld, in dem vordefinierte Keywords kritischen Feldern in Ihren Dokumenten zugeordnet werden, um ihre semantische Bedeutung zu verdeutlichen. Mögliche Werte sindtitle
,description
,uri
undcategory
. Der Feldname muss nicht mit dem WertkeyPropertyValues
übereinstimmen. Für ein Feld mit dem Namenmy_title
können Sie beispielsweise ein FeldkeyPropertyValues
mit dem Werttitle
einfügen.Felder, die mit
keyPropertyMapping
gekennzeichnet sind, sind standardmäßig indexierbar und durchsuchbar, aber nicht abrufbar, vervollständigbar oder dynamisch facettenfähig. Das bedeutet, dass Sie die Felderindexable
odersearchable
nicht zusammen mit dem FeldkeyPropertyValues
angeben müssen, um das erwartete Standardverhalten zu erhalten.type
: Der Typ des Felds. Dies ist ein Stringwert, derdatetime
,geolocation
oder einer der einfachen Typen (integer
,boolean
,object
,array
,number
oderstring
) ist.retrievable
: Gibt an, ob dieses Feld in einer Suchantwort zurückgegeben werden kann. Dies kann für Felder vom Typnumber
,string
,boolean
,integer
,datetime
undgeolocation
festgelegt werden. Es können maximal 50 Felder als abrufbar festgelegt werden. Benutzerdefinierte Felder undkeyPropertyValues
-Felder können standardmäßig nicht abgerufen werden. Wenn Sie ein Feld abrufbar machen möchten, fügen Sie"retrievable": true
in das Feld ein.indexable
: Gibt an, ob dieses Feld in der MethodeservingConfigs.search
gefiltert, facettiert, verstärkt oder sortiert werden kann. Dies kann für Felder vom Typnumber
,string
,boolean
,integer
,datetime
undgeolocation
festgelegt werden. Es können maximal 50 Felder als indexierbar festgelegt werden. Benutzerdefinierte Felder sind standardmäßig nicht indexierbar, mit Ausnahme von Feldern, die das FeldkeyPropertyMapping
enthalten. Wenn Sie ein Feld indexierbar machen möchten, fügen Sie"indexable": true
in das Feld ein.dynamicFacetable
: Gibt an, dass das Feld als dynamische Facette verwendet werden kann. Dies kann für Felder des Typsnumber
,string
,boolean
undinteger
festgelegt werden. Damit ein Feld dynamisch attributierbar ist, muss es auch indexierbar sein. Fügen Sie dazu"dynamicFacetable": true
und"indexable": true
in das Feld ein.searchable
: Gibt an, ob dieses Feld rückwärts indexiert werden kann, um mit unstrukturierten Textanfragen übereinzustimmen. Diese Option kann nur für Felder vom Typstring
festgelegt werden. Es können maximal 50 Felder als durchsuchbar festgelegt werden. Benutzerdefinierte Felder sind standardmäßig nicht durchsuchbar, mit Ausnahme von Feldern, die das FeldkeyPropertyMapping
enthalten. Wenn Sie ein Feld durchsuchbar machen möchten, fügen Sie"searchable": true
in das Feld ein.completable
: Gibt an, ob dieses Feld als Vorschlag für die automatische Vervollständigung zurückgegeben werden kann. Diese Option kann nur für Felder vom Typstring
festgelegt werden. Wenn ein Feld ausgefüllt werden soll, fügen Sie"completable": true
hinzu.
Eigenes Schema als JSON-Objekt bereitstellen
Wenn Sie ein eigenes Schema bereitstellen möchten, erstellen Sie einen Datenspeicher, der ein leeres Schema enthält. Anschließend aktualisieren Sie das Schema und stellen Ihr Schema als JSON-Objekt bereit. Gehen Sie so vor:
Bereiten Sie das Schema als JSON-Objekt vor. Verwenden Sie dazu das Beispielschema als JSON-Objekt als Leitfaden.
Datenspeicher erstellen.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "INDUSTRY_VERTICAL" }'
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID.DATA_STORE_ID
: Die ID des zu erstellenden Datenspeichers. Diese ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.DATA_STORE_DISPLAY_NAME
: Der Anzeigename des Datenspeichers, den Sie erstellen möchten.INDUSTRY_VERTICAL
:GENERIC
Verwenden Sie die API-Methode schemas.patch, um Ihr neues JSON-Schema als JSON-Objekt bereitzustellen.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID.DATA_STORE_ID
: die ID des Datenspeichers.JSON_SCHEMA_OBJECT
: Ihr neues JSON-Schema als JSON-Objekt. Beispiel:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
Optional: Sehen Sie sich das Schema an, indem Sie der Anleitung unter Schemadefinition ansehen folgen.
Nächste Schritte
- Suchanwendung erstellen
- Schemadefinition für strukturierte Daten abrufen
- Schema für strukturierte Daten aktualisieren