Proporciona o detecta automáticamente un esquema

Cuando importas datos estructurados con la consola de Google Cloud, Vertex AI Agent Builder detecta automáticamente el esquema. Puedes usar este esquema detectado automáticamente en tu o usar la API para proporcionar un esquema que indique la estructura de los datos.

Si proporcionas un esquema y, luego, lo actualizas con uno nuevo, este debe ser retrocompatible con el original. De lo contrario, la actualización del esquema falla.

Para obtener información de referencia sobre el esquema, consulta dataStores.schemas

Enfoques para proporcionar el esquema de tu almacén de datos

Existen varios enfoques para determinar el esquema de los datos estructurados.

  • Detección y edición automáticas. Permite que Vertex AI Agent Builder detecte y sugiera automáticamente un esquema inicial. Luego, definirás mejor el esquema de la consola de Cloud. Google recomienda que, después de la detección automática de tus campos, asignas propiedades clave a todos los campos importantes.

    Este es el enfoque que usarás cuando sigas la consola de Google Cloud instrucciones para datos estructurados en Cómo crear datos de búsqueda store y Crear un almacén de datos de recomendaciones genérico.

  • Proporciona el esquema como un objeto JSON. Proporciona el esquema a Vertex AI Agent Builder como un objeto JSON. Necesitas tener preparado un objeto JSON correcto. Para ver un ejemplo de un objeto JSON, consulta Ejemplo de esquema como objeto JSON. Después de crear el esquema, sube tus datos de acuerdo con ese esquema.

    Este es el enfoque que puedes usar cuando creas un almacén de datos a través de la API con un comando (o programa) curl. Por ejemplo, consulta Cómo importar una vez desde BigQuery. Consulta también lo siguiente Proporciona tu propio esquema.

  • Contenido multimedia: Proporciona tus datos en el esquema definido por Google. Si creas una canalización para medios, puedes elegir usar el esquema predefinido de Google. Eligiendo esta opción supone que has estructurado tu objeto JSON en el formato que se proporciona en Acerca de los documentos multimedia y el almacén de datos. De forma predeterminada, la detección automática agrega al esquema cualquier campo nuevo que encuentre durante la transferencia de datos.

    Este es el enfoque que usas cuando sigues las instrucciones de Crea una app de música y un almacén de datos. Este es también el enfoque de los instructivos Comienza a usar las recomendaciones de contenido multimedia y Comienza a usar la búsqueda multimedia, en los que los datos de muestra se proporcionan en el esquema predefinido de Google.

  • Contenido multimedia: Detecta y edita contenido automáticamente, y asegúrate de incluir las propiedades de contenido multimedia requeridas. En el caso de los datos multimedia, puedes usar la detección automática para sugerir el esquema y editarlo para definirlo mejor. En tu objeto JSON, debes incluir campos que se puedan asignar a las propiedades de clave de contenido multimedia: title, uri, category, media_duration y media_available_time.

    Este es el enfoque que usarás cuando importes datos de medios a través del la consola de Google Cloud si los datos multimedia no están en el esquema definido por Google.

  • Media: Proporciona tu propio esquema como un objeto JSON. Proporciona el de Vertex AI Agent Builder como un objeto JSON. Debes haber preparado un objeto JSON correcto. El esquema debe incluir campos que se puedan asignar a las propiedades de clave de contenido multimedia: title, uri, category, media_duration y media_available_time.

    Para ver un ejemplo de un objeto JSON, consulta Esquema de ejemplo como un objeto JSON. Después de crear el esquema, y subir los datos de contenido multimedia según ese esquema.

    Para este enfoque, se usa la API mediante un comando (o programa) curl. Consulta las siguientes instrucciones para Proporcionar tu propio esquema.

Información acerca de la detección y edición automáticas

Cuando comienzas a importar datos, Vertex AI Search toma muestras de los primeros documentos que se importan. En función de estos documentos, se propone un esquema para los datos, que puedes revisar o editar.

Si los campos que deseas asignar a propiedades clave no están presentes en los documentos muestreados, puedes agregarlos manualmente cuando revises el esquema.

Si Vertex AI Search encuentra campos adicionales más adelante en la importación de datos, de todos modos, los importará y los agregará al esquema. Si editar el esquema después de que se importaron todos los datos, consulta Actualizar tu esquema.

Esquema de ejemplo como objeto JSON

Puedes definir tu propio esquema con el formato JSON Schema, que es un lenguaje declarativo de código abierto para definir, anotar y validar documentos JSON. Por ejemplo, esta es una anotación de esquema JSON válida:

{
  "$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"
    }
  }
}

Si defines un esquema de medios, debes incluir campos que se puedan se asigna a las propiedades de la clave multimedia. Estas propiedades clave se muestran en este ejemplo.

Estos son algunos de los campos de este ejemplo de esquema:

  • dynamic: Si dynamic se establece en el valor de cadena "true", todas las propiedades nuevas que se encuentren en los datos importados se agregarán al esquema. Si dynamic se establece como "false", las propiedades nuevas que se encuentren en importadas los datos se ignoran; las propiedades no se agregan al esquema ni se y se importarán los valores predeterminados.

    Por ejemplo, un esquema tiene dos propiedades: title y description. subes datos que contengan propiedades para title, description y rating Si dynamic es "true", se importan la propiedad y los datos de calificaciones. Si dynamic es "false", no se importan las propiedades rating, aunque sí title y description.

    El valor predeterminado es "true".

  • datetime_detection Si datetime_detection se establece como el valor booleano true, cuando se importan datos en formato de fecha y hora, el tipo de esquema se se establece en datetime. Los formatos admitidos son RFC 3339 e ISO 8,601.

    Por ejemplo:

    • 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

    Si datatime_detection se establece en el valor booleano false, cuando se importan datos en formato de fecha y hora, el tipo de esquema se establece en string.

    El valor predeterminado es true.

  • geolocation_detection Si geolocation_detection se establece como el valor booleano true, cuando se importan los datos en formato de ubicación geográfica, el tipo de esquema es se establece en geolocation. Los datos se detectan como ubicación geográfica si son objeto que contiene un número de latitud y un número de longitud, o bien un objeto que contenga una cadena de dirección.

    Por ejemplo:

    • "myLocation": {"latitude":37.42, "longitude":-122.08}

    • "myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}

    Si geolocation_detection se establece como el booleano false. Luego, cuando se importan los datos en formato de ubicación geográfica, el tipo de esquema es se define en object.

    El valor predeterminado es true.

  • keyPropertyMapping Un campo que asigna las palabras clave predefinidas a las campos en tus documentos, lo que ayuda a aclarar su significado semántico. Valores incluyen title, description, uri y category. Ten en cuenta que el campo no es necesario que coincida con el valor keyPropertyValues. Por ejemplo, para un al que asignaste el nombre my_title, puedes incluir un campo keyPropertyValues. con un valor de title.

    Para los almacenes de datos de búsqueda, los campos marcados con keyPropertyMapping se pueden indexar y buscar de forma predeterminada, pero no Recuperables, Completable o DynamicFacetable Esto significa que no debes incluir los campos indexable o searchable con una keyPropertyValues para obtener el comportamiento predeterminado esperado.

  • type: Es el tipo de campo. Es un valor de cadena que es datetime, geolocation o uno de los tipos primitivos (integer, boolean, object, array, number o string).

Los siguientes campos de propiedad solo se aplican a las apps de búsqueda:

  • retrievable Indica si se puede devolver este campo en una búsqueda. respuesta. Se puede configurar para campos de tipo number, string, boolean, integer, datetime y geolocation. Se puede establecer un máximo de 50 campos como recuperables. Los campos definidos por el usuario y los campos keyPropertyValues no se pueden recuperar de forma predeterminada. Para crear un campo recuperables, incluye "retrievable": true con el campo.

  • indexable Indica si este campo se puede filtrar, en facetas, potenciados u ordenados en la servingConfigs.search . Esto se puede configurar para campos de tipo number, string, boolean, integer, datetime y geolocation. Se puede establecer un máximo de 50 campos como indexables. Los campos definidos por el usuario no se pueden indexar de forma predeterminada, excepto los campos que contienen el campo keyPropertyMapping. Para que un campo se pueda indexar, incluye "indexable": true con el campo.

  • dynamicFacetable: Indica que el campo se puede usar como faceta dinámica. Esto se puede configurar para campos de tipo number, string, boolean y integer. Para hacer que un campo se pueda facetar de forma dinámica, también debe ser indexable: Incluye "dynamicFacetable": true y "indexable": true con el campo.

  • searchable Indica si este campo se puede indexar de forma inversa a coincidan con las consultas de texto no estructurado. Solo se puede configurar para campos de tipo string. Se puede establecer un máximo de 50 campos como campos de búsqueda. Los campos definidos por el usuario no se pueden buscar de forma predeterminada, excepto los campos que contienen el campo keyPropertyMapping. Para que un campo se pueda buscar, incluye "searchable": true con el campo

  • completable Indica si este campo puede devolverse como un sugerencia de autocompletar. Esto solo se puede configurar para campos de tipo string. Para que un campo se pueda completar, incluye "completable": true con el campo.

Además, el siguiente campo solo se aplica a las apps de recomendaciones:

  • recommendationsFilterable: Indica que el campo se puede usar en una expresión de filtro de recomendaciones. Para obtener información general sobre el filtrado recomendaciones, consulta Filtrar recomendaciones.

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

Proporciona tu propio esquema como un objeto JSON

Para proporcionar tu propio esquema, creas un almacén de datos que contiene un esquema vacío y, luego, lo actualizas y lo proporcionas como un objeto JSON. Lleva a cabo los pasos siguientes:

  1. Prepara el esquema como un objeto JSON con el Esquema de ejemplo como objeto JSON como guía.

  2. Crea un almacén de datos.

    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"
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search que deseas crear. Este ID solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
    • DATA_STORE_DISPLAY_NAME: Es el nombre visible del almacén de datos de Vertex AI Search que deseas crear.
    • INDUSTRY_VERTICAL: GENERIC o MEDIA
  3. Usa el método de la API schemas.patch para proporcionar tu nuevo esquema JSON como un objeto JSON.

    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
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: el ID del almacén de datos de Vertex AI Search.
    • JSON_SCHEMA_OBJECT: Es tu esquema JSON nuevo como un JSON. Por ejemplo:

      {
        "$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. Opcional: Para revisar el esquema, sigue el procedimiento Cómo ver la definición de un esquema.

¿Qué sigue?