Schema angeben oder automatisch erkennen

Wenn Sie strukturierte Daten über die Google Cloud -Konsole importieren, wird das Schema von AI Applications automatisch erkannt. Sie können entweder dieses automatisch erkannte Schema in Ihrer Engine verwenden oder über die API ein Schema angeben, um die Struktur der Daten anzugeben.

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: KI-Anwendungen können automatisch ein anfängliches 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 den Google Cloud Console-Anleitungen für strukturierte Daten in Suchdatenspeicher erstellen und Benutzerdefinierten Empfehlungsdatenspeicher erstellen folgen.

  • Schema als JSON-Objekt angeben: Stellen Sie das Schema AI Applications 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.

    So können 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.

  • Media: Stellen Sie Ihre Daten im von Google definierten Schema bereit. Wenn Sie einen Datenspeicher für Media erstellen, können Sie das vordefinierte Schema von Google verwenden. Wenn Sie diese Option auswählen, wird davon ausgegangen, dass Sie Ihr JSON-Objekt im Format aus Mediendokumente und Datenspeicher strukturiert haben. Standardmäßig werden dem Schema durch die automatische Erkennung alle neuen Felder hinzugefügt, die während der Datenerfassung gefunden werden.

    So gehen Sie vor, wenn Sie der Anleitung unter Media-App und Datenspeicher erstellen folgen. Das ist auch der Ansatz in den Anleitungen Erste Schritte: Medienempfehlungen und Erste Schritte: Mediensuche, in denen die Beispieldaten im vordefinierten Google-Schema bereitgestellt werden.

  • Media: Automatische Erkennung und Bearbeitung, wobei die erforderlichen Media-Properties berücksichtigt werden. Bei Media-Daten können Sie die automatische Erkennung verwenden, um das Schema vorschlagen zu lassen und es dann zu bearbeiten. Ihr JSON-Objekt muss Felder enthalten, die den Media-Schlüsseleigenschaften title, uri, category, media_duration und media_available_time zugeordnet werden können.

    So gehen Sie vor, wenn Sie Media-Daten über dieGoogle Cloud -Konsole importieren und die Media-Daten nicht dem von Google definierten Schema entsprechen.

  • Media: Geben Sie Ihr eigenes Schema als JSON-Objekt an. Stellen Sie das Schema AI Applications als JSON-Objekt zur Verfügung. Sie müssen ein korrektes JSON-Objekt vorbereitet haben. Das Schema muss Felder enthalten, die den Media-Schlüsselattributen title, uri, category, media_duration und media_available_time zugeordnet werden können.

    Ein Beispiel für ein JSON-Objekt finden Sie unter Beispielschema als JSON-Objekt. Nachdem Sie das Schema erstellt haben, laden Sie Ihre Media-Daten entsprechend hoch.

    Bei diesem Ansatz verwenden Sie die API über einen curl-Befehl (oder ein Programm). Anleitung

Automatische Erkennung und Bearbeitung

Wenn Sie mit dem Importieren von Daten beginnen, werden in Vertex AI Search 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 Vertex AI Search 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
    },
    "runtime": {
      "type": "string",
      "keyPropertyMapping": "media_duration"
    },
    "releaseDate": {
      "type": "string",
      "keyPropertyMapping": "media_available_time"
    }
  }
}

Wenn Sie ein Media-Schema definieren, müssen Sie Felder einfügen, die den Media-Schlüsselattributen zugeordnet werden können. Diese wichtigen Attribute werden in diesem Beispiel gezeigt.

Hier einige der Felder in diesem Schema-Beispiel:

  • dynamic: Wenn dynamic auf den Stringwert "true" festgelegt ist, werden alle neuen Properties, die in den importierten Daten gefunden werden, dem Schema hinzugefügt. Wenn dynamic 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 und description. Sie laden Daten hoch, die Attribute für title, description und rating enthalten. Wenn dynamic "true" ist, werden die Property für Bewertungen und die entsprechenden Daten importiert. Wenn dynamic "false" ist, werden die rating-Attribute nicht importiert, title und description aber schon.

    Der Standardwert ist "true".

  • datetime_detection: Wenn datetime_detection auf den booleschen Wert true festgelegt ist, wird der Schematyp beim Import von Daten im Datums-/Uhrzeitformat auf datetime 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 Wert false festgelegt ist, wird der Schematyp beim Import von Daten im Datums-/Uhrzeitformat auf string festgelegt.

    Der Standardwert ist true.

  • geolocation_detection: Wenn geolocation_detection auf den booleschen Wert true gesetzt ist, wird der Schematyp beim Import von Daten im Geolocation-Format auf geolocation 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 Wert false festgelegt ist, wird der Schematyp beim Import von Daten im Geolocation-Format auf object 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 sind title, description, uri und category. Der Feldname muss nicht mit dem Wert keyPropertyValues übereinstimmen. Für ein Feld mit dem Namen my_title können Sie beispielsweise ein Feld keyPropertyValues mit dem Wert title einfügen.

    Bei Datenspeichern für die Suche sind Felder, die mit keyPropertyMapping gekennzeichnet sind, standardmäßig indexierbar und durchsuchbar, aber nicht abrufbar, vervollständigbar oder dynamisch darstellbar. Das bedeutet, dass Sie die Felder indexable oder searchable nicht mit einem keyPropertyValues-Feld angeben müssen, um das erwartete Standardverhalten zu erhalten.

  • type: Der Typ des Felds. Dies ist ein Stringwert, der datetime, geolocation oder einer der einfachen Typen (integer, boolean, object, array, number oder string) ist.

Die folgenden Attributfelder gelten nur für Such-Apps:

  • retrievable: Gibt an, ob dieses Feld in einer Suchantwort zurückgegeben werden kann. Dies kann für Felder vom Typ number, string, boolean, integer, datetime und geolocation festgelegt werden. Es können maximal 50 Felder als abrufbar festgelegt werden. Benutzerdefinierte Felder und keyPropertyValues-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 Methode servingConfigs.search gefiltert, facettiert, verstärkt oder sortiert werden kann. Dies kann für Felder vom Typ number, string, boolean, integer, datetime und geolocation 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 Feld keyPropertyMapping 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 Typs number, string, boolean und integer 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 Typ string 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 Feld keyPropertyMapping 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 Typ string festgelegt werden. Wenn ein Feld ausgefüllt werden soll, fügen Sie "completable": true hinzu.

Außerdem gilt das folgende Feld nur für Empfehlungs-Apps:

  • recommendationsFilterable: Gibt an, dass das Feld in einem Empfehlungsfilterausdruck verwendet werden kann. Allgemeine Informationen zum Filtern von Empfehlungen finden Sie unter Empfehlungen filtern.

      ...
        "genres": {
        "type": "string",
        "recommendationsFilterable": true,
        ...
      },

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:

  1. Bereiten Sie das Schema als JSON-Objekt vor. Verwenden Sie dazu das Beispielschema als JSON-Objekt als Leitfaden.

  2. 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 ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers, den Sie erstellen möchten. Diese ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Vertex AI Search-Datenspeichers, den Sie erstellen möchten.
    • INDUSTRY_VERTICAL: GENERIC oder MEDIA
  3. 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 ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-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"
          }
        }
      }
  4. Optional: Sehen Sie sich das Schema an, indem Sie der Anleitung unter Schemadefinition ansehen folgen.

Nächste Schritte