Schema angeben oder automatisch erkennen

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

Wenn Sie ein Schema angeben und später mit einem neuen Schema aktualisieren, wird das neue Schema muss mit dem Original abwärtskompatibel sein. Andernfalls schlägt die Schemaaktualisierung fehl.

Weitere Informationen zum Schema finden Sie unter dataStores.schemas.

Vorgehensweise zum Bereitstellen des Schemas für den Datenspeicher

Es gibt verschiedene Ansätze, um das Schema für strukturierte Daten zu bestimmen.

  • Automatische Erkennung und Bearbeitung Vertex AI Agent Builder automatisch erkennen und vorschlagen lassen ein anfängliches Schema. Anschließend können Sie das Schema über die Console-Benutzeroberfläche optimieren. Google empfiehlt Folgendes: Nachdem die Felder automatisch erkannt wurden, ordnen Sie wichtige Eigenschaften allen wichtigen Feldern.

    Diesen Ansatz verwenden Sie, wenn Sie der Google Cloud Console folgen Anleitung für strukturierte Daten im Artikel Suchdaten erstellen Speichern und Erstellen einen generischen Empfehlungsdatenspeicher.

  • Stellen Sie das Schema als JSON-Objekt bereit. Stellen Sie die Schema in Vertex AI Agent Builder als JSON-Objekt um. Sie müssen sich vorbereitet haben, ein korrektes JSON-Objekt enthält. Ein Beispiel für ein JSON-Objekt finden Sie unter Beispielschema. als JSON-Objekt. Nach dem Erstellen des Schemas und laden Sie Ihre Daten nach diesem Schema hoch.

    Dieser Ansatz kann verwendet werden, wenn Sie einen Datenspeicher über die API mit einem Curl-Befehl (oder -Programm) erstellen. Siehe beispielsweise Einmal aus BigQuery Weitere Informationen finden Sie in der Anleitung Eigenes Schema angeben.

  • Medien: Stellen Sie Ihre Daten im von Google definierten Schema bereit. Wenn Sie einen Datenspeicher für Medien 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 strukturiert haben, das unter Mediendokumente und Datenspeicher beschrieben wird. Standardmäßig werden dem Schema bei der automatischen Erkennung alle neuen Felder hinzugefügt, die bei der Datenaufnahme gefunden werden.

    Dies ist der Ansatz, den Sie verwenden, wenn Sie die Anweisungen in Erstellen Sie eine Medien-App und einen Datenspeicher. Es ist auch die in den Anleitungen unter Erste Schritte mit Medien Empfehlungen und Erste Schritte mit Medien Suche, wobei die Beispieldaten im Von Google vordefiniertes Schema.

  • Medien: Automatische Erkennung und Bearbeitung. Achten Sie darauf, die erforderlichen Medieneigenschaften anzugeben. Bei Mediendaten können Sie die automatische Erkennung verwenden, um ein Schema vorzuschlagen, und es dann bearbeiten, um es zu optimieren. Dein JSON-Objekt muss Felder enthalten, die den Media-Schlüsseleigenschaften title, uri, category, media_duration und media_available_time zugeordnet werden können.

    Dies ist der Ansatz, den Sie beim Importieren von Mediendaten über die Google Cloud Console, wenn sich die Mediendaten nicht im von Google definierten Schema befinden

  • Medien: Geben Sie ein eigenes Schema als JSON-Objekt an. Geben Sie das Schema als JSON-Objekt in Vertex AI Agent Builder an. Sie müssen ein korrektes JSON-Objekt vorbereitet haben. Das Schema muss Felder enthalten, die den Media-Schlüsseleigenschaften title, uri, category, media_duration und media_available_time zugeordnet werden können.

    Ein Beispiel für ein JSON-Objekt finden Sie unter Beispiel für ein Schema als JSON-Objekt. Nach dem Erstellen des Schemas und laden Sie die Mediendaten gemäß diesem Schema hoch.

    Bei diesem Ansatz verwenden Sie die API über einen Curl-Befehl (oder ein Curl-Programm). Weitere Informationen finden Sie in der Anleitung Eigenes Schema bereitstellen.

Automatische Erkennung und Bearbeitung

Wenn Sie mit dem Importieren von Daten beginnen, werden in Vertex AI Search die ersten paar importierten Dokumente als Stichprobe verwendet. Basierend auf diesen Dokumenten wird ein Schema für die Sie dann überprüfen oder bearbeiten können.

Wenn Felder, die Sie Schlüsseleigenschaften zuordnen möchten, in der Stichprobe nicht vorhanden sind Dokumente enthalten, können Sie diese Felder manuell hinzufügen, wenn Sie die Schema.

Wenn Vertex AI Search später im Datenimport auf zusätzliche Felder stößt, werden diese Felder trotzdem importiert und dem Schema hinzugefügt. Wenn wenn Sie das Schema bearbeiten möchten, nachdem alle Daten importiert wurden, finden Sie unter Aktualisieren Ihr Schema.

Beispielschema als JSON-Objekt

Sie können Ihr eigenes Schema mit dem JSON Schema-Format definieren. Das ist eine Open-Source-deklarative Sprache zum Definieren, Annotieren und Validieren von JSON-Dokumenten. Das folgende Beispiel zeigt eine gültige JSON-Schemaanmerkung:

{
  "$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 Medienschema definieren, müssen Sie Felder angeben, die den Schlüsseleigenschaften der Medien zugeordnet werden können. Diese wichtigen Properties sind in diesem Beispiel zu sehen.

Hier sind einige der Felder in diesem Schemabeispiel:

  • dynamic: Wenn dynamic auf den Stringwert "true" gesetzt ist, werden dem Schema alle neuen Properties hinzugefügt, die in den importierten Daten gefunden werden. Wenn dynamic auf "false" gesetzt ist, werden neue Properties, die in importierten Daten gefunden werden, ignoriert. Sie werden weder dem Schema hinzugefügt noch importiert.

    Ein Schema hat beispielsweise zwei Attribute: title und description. laden Sie Daten hoch, die Eigenschaften für title, description und rating Wenn dynamic "true" ist, werden die Bewertungseigenschaft und die Daten importiert. Wenn dynamic den Wert "false" hat, werden rating-Attribute nicht importiert, obwohl title und description bereits sind.

    Der Standardwert ist "true".

  • datetime_detection Wenn datetime_detection auf den booleschen Wert festgelegt ist true eingeben, lautet der Schematyp beim Importieren von Daten im Datetime-Format: auf datetime festgelegt. 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 festgelegt ist false lautet, lautet der Schematyp beim Importieren von Daten im Datetime-Format: auf string festgelegt.

    Der Standardwert ist true.

  • geolocation_detection: Wenn geolocation_detection auf den booleschen Wert true gesetzt ist, wird beim Importieren von Daten im Geolocation-Format der Schematyp auf geolocation festgelegt. Daten werden als Standort erkannt, wenn es sich um ein Objekt mit einem Breiten- und einem Längengrad 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 beim Importieren von Daten im Geolocation-Format der Schematyp auf object festgelegt.

    Der Standardwert ist true.

  • keyPropertyMapping Ein Feld, das vordefinierte Keywords wichtigen -Felder in Ihren Dokumenten, wodurch ihre semantische Bedeutung verdeutlicht wird. Werte umfassen title, description, uri und category. Beachten Sie, dass Ihr Feld Name muss nicht mit dem Wert keyPropertyValues übereinstimmen. Beispiel: Für eine my_title benannt haben, können Sie das keyPropertyValues-Feld einfügen. mit dem Wert title.

    Für Suchdatenspeicher sind Felder mit mit keyPropertyMapping sind standardmäßig indexiert und suchbar, aber nicht „retrievable“, „completable“ oder „dynamicFacetable“. Das bedeutet, dass Sie die Felder indexable oder searchable nicht in ein Feld vom Typ keyPropertyValues aufnehmen müssen, um das erwartete Standardverhalten zu erhalten.

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

Die folgenden Property-Felder gelten nur für Such-Apps:

  • retrievable Gibt an, ob dieses Feld in einer Suche zurückgegeben werden kann Antwort. Diese Option 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. So erstellen Sie ein Feld: abrufbar ist, fügen Sie "retrievable": true in das Feld ein.

  • indexable: Gibt an, ob dieses Feld mit der Methode servingConfigs.search gefiltert, facettiert, geboostet oder sortiert werden kann. Diese Option 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. Benutzerdefiniert -Felder sind standardmäßig nicht indexierbar, mit Ausnahme der Felder, die die keyPropertyMapping. Wenn ein Feld indexiert werden soll, fügen Sie "indexable": true in das Feld ein.

  • dynamicFacetable: Gibt an, dass das Feld als dynamisches Attribut verwendet werden kann. Dies kann für Felder vom Typ number, string, boolean und integer. Damit ein Feld dynamisch facettiert werden kann, muss es auch indexierbar sein. Fügen Sie dazu "dynamicFacetable": true und "indexable": true in das Feld ein.

  • searchable Gibt an, ob dieses Feld umgekehrt indexiert werden kann Abfragen mit unstrukturiertem Text abgeglichen. Dies kann nur für Felder vom Typ festgelegt werden string Maximal 50 Felder können als suchbar festgelegt werden. Benutzerdefiniert -Felder können standardmäßig nicht durchsucht werden, mit Ausnahme der Felder, die den keyPropertyMapping. Um ein Feld durchsuchbar zu machen, fügen Sie "searchable": true durch das Feld.

  • completable Gibt an, ob dieses Feld als für die automatische Vervollständigung. Dies kann nur für Felder vom Typ string festgelegt werden. Wenn Sie ein Feld ausfüllen möchten, fügen Sie "completable": true in das Feld ein.

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

  • recommendationsFilterable Gibt an, dass das Feld in einem Filterausdruck für Empfehlungen. Allgemeine Informationen zum Filtern finden Sie unter Empfehlungen filtern.

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

Eigenes Schema als JSON-Objekt angeben

Um Ihr eigenes Schema bereitzustellen, erstellen Sie einen Datenspeicher, der eine leere Schema und aktualisieren Sie dann das Schema. Geben Sie das Schema als JSON-Objekt an. Gehen Sie so vor:

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

  2. Erstellen Sie einen Datenspeicher.

    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 ist 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 enthalten Buchstaben, Ziffern, Unterstriche und Bindestriche.
    • DATA_STORE_DISPLAY_NAME: der Anzeigename von Vertex AI Suchdatenspeicher, den Sie erstellen möchten.
    • INDUSTRY_VERTICAL: GENERIC oder MEDIA
  3. Verwenden Sie die Datei schemas.patch API-Methode zum Bereitstellen des neuen JSON-Schemas als JSON-Objekt.

    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 ist 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. Folgen Sie dazu der Anleitung unter Schemadefinition ansehen.

Nächste Schritte