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 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, 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.
Detecta y edita automáticamente. Permite que Vertex AI Agent Builder detecte y sugiera automáticamente un esquema inicial. Luego, debes definir mejor 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 Cómo crear un almacén de datos de búsqueda y Cómo crear un almacén de datos de recomendaciones genéricas.
Proporciona el esquema como un objeto JSON. Proporciona el esquema a Vertex AI Agent Builder 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, debes subir 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 Cómo importar una vez desde BigQuery. Consulta también las siguientes instrucciones para proporcionar tu propio esquema.
Contenido multimedia: Proporciona tus datos en el esquema definido por Google. Si creas un almacén de datos para el contenido multimedia, puedes 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 almacenamiento 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 debes usar cuando sigas las instrucciones de Cómo crear una app de música 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.
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
ymedia_available_time
.Este es el enfoque que usarás cuando importes datos multimedia a través de 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 esquema a 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
ymedia_available_time
.Para ver un ejemplo de un objeto JSON, consulta Ejemplo de esquema como objeto JSON. Después de crear el esquema, debes subir tus datos de contenido multimedia según ese esquema.
En este enfoque, usas la API a través de un comando (o programa) de 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 quieres editar el esquema después de importar todos los datos, consulta Cómo 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 contenido multimedia, debes incluir campos que se puedan asignar a las propiedades clave de este tipo de contenido. Estas propiedades clave se muestran en este ejemplo.
Estos son algunos de los campos de este ejemplo de esquema:
dynamic
: Sidynamic
se establece en el valor de cadena"true"
, todas las propiedades nuevas que se encuentren en los datos importados se agregarán al esquema. Sidynamic
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
ydescription
, y subes datos que contienen propiedades paratitle
,description
yrating
. Sidynamic
es"true"
, se importan la propiedad y los datos de calificaciones. Sidynamic
es"false"
, no se importan las propiedadesrating
, aunque sítitle
ydescription
.El valor predeterminado es
"true"
.datetime_detection
. Sidatetime_detection
se establece en el valor booleanotrue
, cuando se importan datos en formato de fecha y hora, el tipo de esquema se establece endatetime
. 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 booleanofalse
, cuando se importan datos en formato de fecha y hora, el tipo de esquema se establece enstring
.El valor predeterminado es
true
.geolocation_detection
. Sigeolocation_detection
se establece en el valor booleanotrue
, cuando se importan datos en formato de geolocalización, el tipo de esquema se establece engeolocation
. Los datos se detectan como geolocalización si se trata de un objeto que contiene un número de latitud y un número de longitud, o 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 booleanofalse
, cuando se importan datos en formato de geolocalización, el tipo de esquema se establece enobject
.El valor predeterminado es
true
.keyPropertyMapping
: Es un campo que asigna palabras clave predefinidas a campos críticos en tus documentos, lo que ayuda a aclarar su significado semántico. Los valores incluyentitle
,description
,uri
ycategory
. Ten en cuenta que el nombre del campo no es necesario que coincida con el valorkeyPropertyValues
. Por ejemplo, para un campo al que le asignaste el nombremy_title
, puedes incluir un campokeyPropertyValues
con un valor detitle
.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 crear facetas dinámicas. Esto significa que no necesitas incluir los camposindexable
osearchable
con un campokeyPropertyValues
para obtener el comportamiento predeterminado esperado.type
: Es el tipo de campo. Es un valor de cadena que esdatetime
,geolocation
o uno de los tipos primitivos (integer
,boolean
,object
,array
,number
ostring
).
Los siguientes campos de propiedad solo se aplican a las apps de búsqueda:
retrievable
: Indica si este campo se puede mostrar en una respuesta de búsqueda. Esto se puede configurar para campos de tiponumber
,string
,boolean
,integer
,datetime
ygeolocation
. Se puede establecer un máximo de 50 campos como recuperables. Los campos definidos por el usuario y los camposkeyPropertyValues
no se pueden recuperar de forma predeterminada. Para que un campo sea recuperable, incluye"retrievable": true
con él.indexable
: Indica si este campo se puede filtrar, facetear, mejorar o ordenar en el métodoservingConfigs.search
. Esto se puede configurar para campos de tiponumber
,string
,boolean
,integer
,datetime
ygeolocation
. 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 campokeyPropertyMapping
. Para que un campo sea indexable, 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 tiponumber
,string
,boolean
yinteger
. Para que un campo sea facetado 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 para hacer coincidir las consultas de texto no estructurado. Solo se puede configurar para campos de tipostring
. 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 campokeyPropertyMapping
. Para que un campo sea consultable, incluye"searchable": true
con él.completable
: Indica si este campo se puede mostrar como una sugerencia de autocompletado. Solo se puede configurar para campos de tipostring
. Para que un campo se pueda completar, incluye"completable": true
con él.
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 cómo filtrar recomendaciones, consulta Cómo 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:
Prepara el esquema como un objeto JSON. Para ello, usa el esquema de ejemplo como objeto JSON como guía.
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
: 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
oMEDIA
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
: Tu nuevo esquema JSON como 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" } } }
Opcional: Para revisar el esquema, sigue el procedimiento Cómo ver la definición de un esquema.
¿Qué sigue?
- Cómo crear una app de búsqueda
- Cómo crear una app de recomendaciones
- Cómo crear una app multimedia
- Obtén la definición del esquema para los datos estructurados
- Actualiza un esquema para datos estructurados