Si ya has creado tus propias inserciones de vectores personalizadas para tus datos, puedes subirlas a Vertex AI Search y usarlas al hacer consultas con Vertex AI Search.
Esta función está disponible para almacenes de datos con datos estructurados personalizados o datos sin estructurar con metadatos. Esta función no está disponible para búsquedas de contenido multimedia ni de atención sanitaria.
De forma predeterminada, Vertex AI Search genera automáticamente incrustaciones vectoriales sin necesidad de configuración. Si no sabes cómo crear embeddings, Google te recomienda que dejes que Vertex AI Search los cree y los use por ti. Sin embargo, si has creado tus propias inserciones para tus datos, puede que prefieras usarlas en lugar de las generadas por la búsqueda de Vertex AI, sobre todo si tus inserciones personalizadas contienen contexto adicional que puede enriquecer la recuperación y la clasificación de tus búsquedas. Por ejemplo:
- Tus inserciones se han entrenado con palabras personalizadas, como términos internos, cuya similitud semántica no se captaría si se entrenaran con datos públicos. Por ejemplo, términos específicos de la organización que solo aparecen en documentos privados.
- Has creado representaciones para perfiles de usuario y quieres usarlas para crear una clasificación de documentos personalizada y semánticamente relevante. Puedes usar tus inserciones para obtener una clasificación basada en la personalización, que puede aumentar las inserciones de documentos de Google para obtener una clasificación basada en la relevancia.
Para incorporar tus propios elementos insertados, sigue estos pasos:
- Antes de empezar: comprueba que tus inserciones cumplen todos los requisitos
- Ingerir datos con inserciones: ingiere tus documentos con sus inserciones.
- Actualiza tu esquema: actualiza tu esquema con los campos de propiedad clave y las especificaciones de dimensión.
- Especifica la inserción: puedes especificar la inserción de forma global o por solicitud de búsqueda.
Antes de empezar
Antes de empezar, asegúrate de que tus inserciones cumplan los siguientes requisitos:
- Se admiten las inserciones en datos estructurados y sin estructurar con metadatos
- Las inserciones deben proporcionarse como arrays unidimensionales
- La dimensionalidad de la inserción debe estar entre 1 y 768, ambos incluidos
- Se admiten las inserciones de texto e imágenes. No se admiten vídeos
- Se pueden etiquetar hasta dos campos como campos de propiedad de clave de inserción. Puedes usar dos campos en casos como las pruebas A/B de tus inserciones.
- Actualmente, no se pueden eliminar las designaciones de propiedades de clave de campo de inserción después de definirlas.
Ingerir datos con inserciones
Puedes ingerir las inserciones de un documento en uno o dos campos incluidos en los datos o los metadatos de ese documento durante la ingestión.
Para ingerir datos con inserciones, sigue estos pasos:
Prepara los datos para la ingestión en función del tipo de datos que tengas:
Datos estructurados: cuando prepare sus datos, incluya las inserciones de cada documento como matrices unidimensionales en uno o dos campos del documento. Puedes proporcionar hasta dos inserciones (por ejemplo, si quieres hacer pruebas A/B entre inserciones). Cada inserción debe proporcionarse en su propio campo del documento. Por ejemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Sigue las directrices para preparar los datos estructurados que se indican en la documentación Preparar datos para la ingesta.
Datos no estructurados con metadatos: cuando prepares los datos, incluye la inserción de cada documento como una matriz unidimensional en un campo de los metadatos del documento. Puede proporcionar hasta dos inserciones (por ejemplo, al hacer pruebas A/B entre inserciones). Cada inserción debe proporcionarse en su propio campo de los metadatos del documento. Por ejemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Sigue las directrices para preparar datos sin estructurar con metadatos para tu método de ingesta (Cloud Storage o BigQuery) en la documentación Preparar datos para la ingesta.
Sigue las instrucciones correspondientes a tu tipo de datos en Crear un almacén de datos de búsqueda para ingerir tus documentos con embeddings.
A continuación, actualiza el esquema para usar los campos de inserción correctos.
Actualizar el esquema
Actualiza tu esquema con las asignaciones de propiedades clave y las dimensiones de tus campos de inserción mediante la Google Cloud consola o la API.
Consola
Para actualizar tu esquema mediante la consola Google Cloud , sigue estos pasos:
En la Google Cloud consola, ve a la página Aplicaciones de IA.
En el menú de navegación, haga clic en Almacenes de datos.
En la columna Nombre, haga clic en el almacén de datos con el esquema que quiera actualizar.
Haga clic en la pestaña Esquema para ver el esquema de sus datos.
Haz clic en el botón Edit (Editar).
Busca el campo de inserción en el esquema y, en la columna Propiedades clave, selecciona embedding_vector como propiedad clave de ese campo.
Si tienes otro campo de inserción, repite este paso con ese campo.
En la columna Dimensión, introduzca el número de dimensiones de ese campo de inserción.
Si tienes otro campo de inserción, repite este paso con ese campo.
Haz clic en Guardar para aplicar los cambios en el esquema.
Después de actualizar el esquema, el proceso de reindexación puede tardar hasta 24 horas, en función del tamaño de tu almacén de datos.
REST
Para actualizar tu esquema mediante la API, sigue estos pasos:
Sigue las instrucciones de REST en Actualizar un esquema para especificar la asignación de la propiedad de clave y el número de dimensiones de cada campo de inserción:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Por ejemplo, aquí tienes un esquema JSON con 768 dimensiones para el campo
example_embedding_vector
:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "example_embedding_vector": { "type": "array", "keyPropertyMapping": 'embedding_vector', "dimension": 768, "items": { "type": "number" } } } }
En una solicitud de esquema de actualización, el JSON con el formato anterior se incluiría como una cadena JSON:
"jsonSchema": "{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"type\":\"object\",\"properties\":{\"example_embedding_vector\":{\"type\":\"array\",\"keyPropertyMapping\":\"embedding_vector\",\"dimension\":768,\"items\":{\"type\":\"number\"}}}}"
Después de actualizar el esquema, el proceso de reindexación puede tardar hasta 24 horas, en función del tamaño de tu almacén de datos.
A continuación, especifica la inserción.
Especifica la inserción
Una vez que se haya completado la indexación a partir de la actualización del esquema, podrá enviar solicitudes de búsqueda que incluyan una especificación de inserción.
Hay dos formas de especificar una inserción:
- Especificar una inserción de forma global: para especificar la misma inserción en todas las solicitudes de búsqueda, actualiza la configuración de servicio para incluir una especificación de inserción mediante la Google Cloud consola o la API.
- Especificar una inserción por solicitud de búsqueda: envía
embeddingSpec
en cada solicitud de búsqueda mediante la API. Esta opción anula la configuración global si está definida.
Especificar una inserción de forma global
Puedes especificar la misma inserción en todas las solicitudes de búsqueda mediante laGoogle Cloud consola o la API.
Consola
Para proporcionar la misma especificación de inserción a todas las solicitudes de búsqueda, actualice sus ajustes de servicio con una especificación de inserción.
En la Google Cloud consola, ve a la página Aplicaciones de IA.
Haz clic en Ver en el almacén de datos con el esquema que quieras actualizar.
Ve a la página Configurations (Configuraciones) y haz clic en la pestaña Serving (Publicación).
En Ruta del campo de inserción, introduce el nombre del campo que has asignado a la propiedad de clave de inserción.
En Expresión de clasificación, introduce una o varias funciones para controlar la clasificación de los resultados. Las variables se ponderan según la expresión que introduzcas. La expresión de clasificación es una función o varias funciones unidas por
+
con el formatofunction, { " + ", function }
.Las funciones admitidas son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: variable predefinida proporcionada por Vertex AI Search para medir la relevancia de un documento. La puntuación va de 0 a 1, ambos incluidos.dotProduct()
: función predefinida proporcionada por Vertex AI Search. Debes proporcionar a esta función el mismo nombre de campo que aembeddingVector.fieldPath
.
Por ejemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
REST
Para proporcionar la misma especificación de inserción a todas las solicitudes de búsqueda, actualice servingConfig
con embeddingConfig
.
Aplica un parche a la entidad
servingConfig
con los campos que quieras actualizar. Especifica los campos que vas a actualizar conupdateMask
.En el siguiente ejemplo,
embeddingConfig
usa las inserciones en el campoexample_embedding_field
y asigna un peso de 0,5 arelevance_score
.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search", "embeddingConfig": { "fieldPath": "example_embedding_field" }, "ranking_expression": "0.5 * relevance_score" }' \ 'https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search?updateMask=embeddingConfig,rankingExpression'
fieldPath
: El nombre del campo que ha asignado a la propiedad de clave de inserción.ranking_expression
: controla la clasificación de los resultados. Las variables se ponderan según la expresión que introduzcas. La expresión de clasificación es una función o varias funciones unidas por+
en el formatofunction, { " + ", function }
.
Las funciones admitidas son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: una variable predefinida proporcionada por Vertex AI Search.dotProduct()
: función predefinida proporcionada por Vertex AI Search. El producto escalar se normaliza. Debes proporcionar a esta función el mismo nombre de campo que proporcionaste aembeddingVector.fieldPath
.
Por ejemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Cuando envías solicitudes de búsqueda,
servingConfig.embeddingConfig
se incluye automáticamente.Si envías una solicitud de búsqueda que incluye explícitamente un
embeddingSpec
diferente, se anulaservingConfig.embeddingConfig
. Consulta las instrucciones de la sección Por solicitud para saber cómo proporcionar especificaciones de inserción en solicitudes de búsqueda individuales.
Especificar una inserción por solicitud de búsqueda
Puedes proporcionar una especificación de inserción para una sola solicitud de búsqueda mediante la API. Una especificación de inserción por solicitud anula cualquier especificación de inserción global.
Envía una solicitud de búsqueda que incluya
embeddingSpec
.En el siguiente ejemplo de
embeddingSpec
se usan las inserciones en el campoexample_embedding_field
, se especifica "Consulta de ejemplo" como vector de entrada y se asigna un peso de 0,5 arelevance_score
y de 0,3 aexample_embedding_field
al calcular la clasificación."embeddingSpec": { "embeddingVectors": [{ "fieldPath": "example_embedding_field", "vector": [ 0.96241474, -0.45999944, 0.108588696 ] }] }, "ranking_expression": "0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)"
fieldPath
: El nombre del campo que ha asignado a la propiedad de clave de inserción.vector
: vector de entrada proporcionado como una matriz.ranking_expression
: controla la clasificación de los resultados. Las variables se ponderan según la expresión que introduzcas. La expresión de clasificación es una sola función o varias funciones que se unen mediante+
con el formatofunction, { " + ", function }
.Las funciones admitidas son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: variable predefinida proporcionada por Vertex AI Search para medir la relevancia de un documento. La puntuación va de 0 a 1, ambos incluidos.dotProduct()
: función predefinida proporcionada por Vertex AI Search. Debes proporcionar el mismo nombre de campo a esta función que aembeddingVector.fieldPath
.
Por ejemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Obtener resultados en la respuesta de búsqueda. Cada resultado de búsqueda incluye su puntuación de relevancia y los valores del producto escalar. Por ejemplo:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: el producto escalar calculado del documento de resultado de búsqueda.relevance_score
: la puntuación de relevancia calculada del documento del resultado de búsqueda.
Siguientes pasos
- Prepara los datos para la ingestión.
- Actualizar un esquema.
- Previsualizar los resultados de búsqueda.
- Para saber cómo influyen las inserciones personalizadas en la calidad de búsqueda de una aplicación de búsqueda personalizada, evalúa la calidad de búsqueda. Para obtener más información, consulta el artículo Evaluar la calidad de la búsqueda.