Proporciona o detecta automáticamente un esquema

Cuando importas datos estructurados con la consola de Google Cloud , las aplicaciones basadas en IA detectan automáticamente el esquema. Puedes usar este esquema detectado automáticamente en tu motor 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, el esquema nuevo debe ser retrocompatible con el original. De lo contrario, la actualización del esquema fallará.

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 las aplicaciones basadas en IA detecten y sugieran automáticamente un esquema inicial. Luego, refina el esquema a través de la interfaz de la consola. Google recomienda que, después de que se detecten automáticamente tus campos, asignes propiedades clave a todos los campos importantes.

    Este es el enfoque que usarás cuando sigas las instrucciones de la consola de Google Cloud para los datos estructurados en Crea un almacén de datos de búsqueda y Crea un almacén de datos de recomendaciones personalizado.

  • Proporciona el esquema como un objeto JSON. Proporciona el esquema a las aplicaciones basadas en IA como un objeto JSON. Debes haber 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 según 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 Importa una vez desde BigQuery. Consulta también las siguientes instrucciones: Proporciona tu propio esquema.

  • Medios: Proporciona tus datos en el esquema definido por Google. Si creas un almacén de datos para contenido multimedia, puedes optar por usar el esquema predefinido de Google. Si eliges esta opción, se supone que estructuraste tu objeto JSON en el formato que se indica en Acerca de los documentos multimedia y el almacén de datos. De forma predeterminada, la detección automática agrega al esquema los campos nuevos que encuentra durante la transferencia de datos.

    Este es el enfoque que usas cuando sigues las instrucciones en Crea una app de medios y un almacén de datos. También es 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.

  • Medios: Detecta y edita automáticamente, y asegúrate de incluir las propiedades de medios requeridas. En el caso de los datos de medios, 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 la clave de medios: title, uri, category, media_duration y media_available_time.

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

  • Media: Proporciona tu propio esquema como un objeto JSON. Proporciona el esquema a las aplicaciones basadas en IA como un objeto JSON. Debes haber preparado un objeto JSON correcto. El esquema debe incluir campos que se puedan asignar a las propiedades de la clave de medios: title, uri, category, media_duration y media_available_time.

    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 medios según ese esquema.

    En este enfoque, usas la API a través de un comando (o programa) curl. Consulta las siguientes instrucciones: Proporciona tu propio esquema.

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, propone un esquema para los datos, que luego puedes revisar o editar.

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

Si Vertex AI Search encuentra campos adicionales más adelante en la importación de datos, los importará y los agregará al esquema. Si deseas editar el esquema después de importar todos los datos, consulta Cómo actualizar tu esquema.

Ejemplo de esquema como objeto JSON

Puedes definir tu propio esquema con el formato de esquema JSON, 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 asignar a las propiedades clave de los medios. Estas propiedades clave se muestran en este ejemplo.

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

  • dynamic: Si dynamic se establece en el valor de cadena "true", las propiedades nuevas que se encuentren en los datos importados se agregarán al esquema. Si dynamic se establece en "false", se ignoran las propiedades nuevas que se encuentran en los datos importados. Las propiedades no se agregan al esquema ni se importan los valores.

    Por ejemplo, un esquema tiene dos propiedades: title y description, y subes datos que contienen 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 de rating, aunque sí se importan title y description.

    El valor predeterminado es "true".

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

    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 en el valor booleano true, cuando se importan datos en formato de ubicación geográfica, el tipo de esquema se establece en geolocation. Los datos se detectan como de ubicación geográfica si son un objeto que contiene un número de latitud y un número de longitud, o bien un objeto que contiene 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 en el valor booleano false, cuando se importan datos en formato de ubicación geográfica, el tipo de esquema se establece en object.

    El valor predeterminado es true.

  • keyPropertyMapping: Es un campo que asigna palabras clave predefinidas a campos críticos de tus documentos, lo que ayuda a aclarar su significado semántico. Los valores incluyen title, description, uri y category. Ten en cuenta que el nombre del campo no tiene que coincidir con el valor de keyPropertyValues. Por ejemplo, para un campo que llamaste my_title, puedes incluir un campo keyPropertyValues con un valor de title.

    En el caso de los almacenes de datos de búsqueda, los campos marcados con keyPropertyMapping son indexables y se pueden buscar de forma predeterminada, pero no se pueden recuperar, completar ni usar para crear facetas dinámicas. Esto significa que no es necesario que incluyas los campos indexable o searchable con un campo keyPropertyValues para obtener el comportamiento predeterminado esperado.

  • type: Es el tipo del 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 este campo se puede devolver en una respuesta de búsqueda. Se puede configurar para los 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 que un campo sea recuperable, incluye "retrievable": true con el campo.

  • indexable: Indica si este campo se puede filtrar, segmentar, potenciar o ordenar en el método servingConfigs.search. Se puede configurar para los 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 que contienen el campo keyPropertyMapping. Para que un campo sea indexable, incluye "indexable": true con el campo.

  • dynamicFacetable: Indica que el campo se puede usar como faceta dinámica. Se puede configurar para los campos de tipo number, string, boolean y integer. Para que un campo sea apto para la generación dinámica de facetas, 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 para que coincida con las búsquedas de texto no estructurado. Solo se puede configurar para campos de tipo string. Se puede establecer un máximo de 50 campos como aptos para la búsqueda. Los campos definidos por el usuario no se pueden buscar de forma predeterminada, excepto los que contienen el campo keyPropertyMapping. Para que un campo se pueda buscar, incluye "searchable": true con el campo.

  • completable: Indica si este campo se puede devolver como sugerencia de autocompletar. 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 de recomendaciones, consulta Cómo filtrar recomendaciones.

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

Proporciona tu propio esquema como un objeto JSON

Para proporcionar tu propio esquema, crea un almacén de datos que contenga un esquema vacío y, luego, actualiza el esquema proporcionando tu esquema como un objeto JSON. Lleva a cabo los pasos siguientes:

  1. Prepara el esquema como un objeto JSON, usando el esquema de ejemplo como un 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: Es el ID de tu 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 de 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: Es el ID de tu proyecto de Google Cloud .
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search.
    • JSON_SCHEMA_OBJECT: Tu nuevo esquema JSON como un objeto 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: Revisa el esquema siguiendo el procedimiento Cómo ver una definición de esquema.

¿Qué sigue?