Si ya creaste tus propias incorporaciones vectoriales personalizadas para tus datos, puedes subirlas a Vertex AI Search y usarlas cuando realices consultas con Vertex AI Search.
Esta función está disponible para almacenes de datos con datos estructurados genéricos o datos no estructurados con metadatos. Esta función no está disponible para la búsqueda de contenido multimedia ni de atención médica.
De forma predeterminada, la Búsqueda de Vertex AI genera incorporaciones de vectores automáticamente sin necesidad de realizar ninguna configuración. Si no conoces la creación de incorporaciones, Google recomienda que permitas que Vertex AI Search las cree y use por ti. Sin embargo, si creaste tus propias incorporaciones para tus datos, es posible que prefieras usarlas en lugar de las que genera la búsqueda de Vertex AI, en especial si tus incorporaciones personalizadas contienen contexto adicional que puede enriquecer la recuperación y clasificación de la búsqueda. Por ejemplo:
- Tus incorporaciones se entrenaron con palabras personalizadas, como términos internos cuya similitud semántica no se capturaría con el entrenamiento en datos públicos, por ejemplo, términos específicos de la organización que solo aparecen en documentos privados.
- Creaste incorporaciones para los perfiles de usuario y quieres usarlas para crear una clasificación de documentos personalizada y semánticamente relevante. Puedes usar tus incorporaciones para obtener una clasificación basada en la personalización, que puede mejorar las incorporaciones de documentos de Google para la clasificación basada en la relevancia.
Para incorporar tus propias incorporaciones, sigue estos pasos:
- Antes de comenzar: Verifica que tus incorporaciones cumplan con todos los requisitos
- Transferir datos con incorporaciones: Transfiere tus documentos con sus incorporaciones.
- Actualiza tu esquema: Actualiza tu esquema con los campos de la propiedad clave y las especificaciones de dimensión.
- Especifica tu incorporación: Especifica tu incorporación de forma global o por solicitud de búsqueda.
Antes de comenzar
Antes de comenzar, asegúrate de que tus incorporaciones cumplan con los siguientes requisitos:
- Las incorporaciones son compatibles con datos estructurados y no estructurados con metadatos.
- Las incorporaciones se deben proporcionar como arrays unidimensionales.
- La dimensionalidad de la incorporación debe estar entre 1 y 768, ambos inclusive.
- Las incorporaciones son compatibles con texto e imágenes. No se admiten videos
- Se pueden etiquetar hasta dos campos como campos de propiedades clave de incorporación. Puedes usar dos campos para casos como las pruebas A/B de tus incorporaciones.
- Actualmente, no se pueden quitar las designaciones de propiedades clave de los campos de incorporación después de que se establezcan.
Transfiere datos con incorporaciones
Puedes transferir las incorporaciones de un documento en uno o dos campos incluidos como parte de los datos o metadatos de ese documento durante la transferencia.
Para transferir datos con incorporaciones, sigue estos pasos:
Prepara tus datos para la transferencia según el tipo de datos:
Datos estructurados: Cuando prepares tus datos, incluye las incorporaciones de cada documento como arrays unidimensionales en uno o dos campos del documento. Puedes proporcionar hasta dos incorporaciones (por ejemplo, si se realizan pruebas A/B entre incorporaciones). Cada incorporación se debe proporcionar en su propio campo en el documento, por ejemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Sigue las instrucciones para preparar datos estructurados en la documentación sobre cómo preparar los datos para la transferencia.
Datos no estructurados con metadatos: Cuando prepares tus datos, incluye la incorporación de cada documento como un array unidimensional en un campo de los metadatos del documento. Puedes proporcionar hasta dos incorporaciones (por ejemplo, cuando se realizan pruebas A/B entre incorporaciones). Cada incorporación se debe proporcionar en su propio campo en los metadatos del documento, por ejemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Sigue las instrucciones para preparar datos no estructurados con metadatos para tu método de transferencia (Cloud Storage o BigQuery) en la documentación Cómo preparar datos para la transferencia.
Sigue las instrucciones para tu tipo de datos en Crea un motor y transfiere datos con Vertex AI Search para transferir tus documentos con incorporaciones.
A continuación, actualiza tu esquema para usar los campos de incorporación correctos.
Actualiza tu esquema
Actualiza tu esquema con asignaciones de propiedades clave y dimensiones para tus campos de incorporación con la consola de Google Cloud o la API.
Console
Para actualizar tu esquema con la consola de Google Cloud, sigue estos pasos:
En la consola de Google Cloud, ve a la página Agent Builder.
En el menú de navegación, haz clic en Almacenes de datos.
En la columna Nombre, haz clic en el almacén de datos con el esquema que deseas actualizar.
Haz clic en la pestaña Esquema para ver el esquema de tus datos.
Haz clic en el botón Editar.
Busca tu campo de incorporación en el esquema y, en la columna Key properties, selecciona embedding_vector como la propiedad clave para ese campo.
Si tienes un segundo campo de incorporación, repite este paso para ese campo.
En la columna Dimension, ingresa la cantidad de dimensiones de ese campo de inserción.
Si tienes un segundo campo de incorporación, repite este paso para ese campo.
Haz clic en Guardar para aplicar los cambios en el esquema.
Después de actualizar el esquema, la reindeksación puede tardar hasta 24 horas, según el tamaño de tu almacén de datos.
REST
Para actualizar tu esquema con la API, sigue estos pasos:
Sigue las instrucciones de REST en Cómo actualizar un esquema y especifica la asignación de propiedades clave y la cantidad de dimensiones para cada campo de incorporación:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Por ejemplo, este es un esquema JSON con formato y 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 actualización de esquema, el JSON con 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, la reindeksación puede tardar hasta 24 horas, según el tamaño de tu almacén de datos.
A continuación, especifica tu incorporación.
Especifica tu incorporación
Una vez que se complete la indexación de la actualización de tu esquema, podrás enviar solicitudes de búsqueda que incluyan una especificación de incorporación.
Existen dos maneras de especificar una incorporación:
- Especifica una incorporación de forma global: Para especificar la misma incorporación en todas las solicitudes de búsqueda, actualiza la configuración de publicación para incluir una especificación de incorporación con la consola de Google Cloud o la API.
- Especifica una incorporación por solicitud de búsqueda: Envía
embeddingSpec
en cada solicitud de búsqueda con la API. Esto anula la configuración global si está configurada.
Especifica una incorporación de forma global
Puedes especificar la misma incorporación en todas las solicitudes de búsqueda con la consola de Google Cloud o la API.
Console
Para proporcionar la misma especificación de incorporación a todas las solicitudes de búsqueda, actualiza la configuración de publicación con una especificación de incorporación.
En la consola de Google Cloud, ve a la página Agent Builder.
Haz clic en Ver para el almacén de datos con el esquema que deseas actualizar.
Ve a la página Configuraciones y haz clic en la pestaña Publicación.
En Ruta de acceso del campo de inserción, ingresa el nombre del campo que asignaste a la propiedad de clave de inserción.
En Expresión de clasificación, ingresa una o varias funciones para controlar la clasificación de los resultados. Las variables se ponderan según la expresión que ingreses. La expresión de clasificación es una sola función o varias funciones que se unen con
+
en el formatofunction, { " + ", function }
.Las funciones compatibles son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: Es una variable predefinida que proporciona Vertex AI Search para medir la relevancia de un documento. La puntuación varía de 0 a 1.0, inclusive.dotProduct()
: Es una función predefinida que proporciona la búsqueda de Vertex AI. Debes proporcionar el mismo nombre de campo a esta función que hiciste paraembeddingVector.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 incorporación a todas las solicitudes de búsqueda, actualiza servingConfig
con embeddingConfig
.
Aplica un parche a la entidad
servingConfig
con los campos que deseas actualizar. Especifica los campos que deseas actualizar conupdateMask
.En el siguiente ejemplo,
embeddingConfig
usa incorporaciones en el campoexample_embedding_field
y le da 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
: Es el nombre del campo que asignaste a la propiedad de clave de incorporación.ranking_expression
: Controla la clasificación de los resultados. Las variables se ponderan según la expresión que ingresas. La expresión de clasificación es una sola función o varias funciones unidas por+
en el formatofunction, { " + ", function }
.
Las funciones compatibles son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: Es una variable predefinida que proporciona la búsqueda de Vertex AI.dotProduct()
: Es una función predefinida que proporciona la búsqueda de Vertex AI. El producto punto se normaliza. Debes proporcionar el mismo nombre de campo a esta función que hiciste paraembeddingVector.fieldPath
.
Por ejemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Cuando envías solicitudes de búsqueda, se incluye
servingConfig.embeddingConfig
automáticamente.Si envías una solicitud de búsqueda que incluye de forma explícita un
embeddingSpec
diferente, se anulaservingConfig.embeddingConfig
. Consulta las instrucciones Por solicitud para obtener información sobre cómo proporcionar especificaciones de incorporación para solicitudes de búsqueda individuales.
Especifica una incorporación por solicitud de búsqueda
Puedes proporcionar una especificación de incorporación para una sola solicitud de búsqueda con la API. Una especificación de incorporación por solicitud anula cualquier especificación de incorporación global.
Envía una solicitud de búsqueda que incluya
embeddingSpec
.En el siguiente ejemplo de
embeddingSpec
, se usan incorporaciones en el campoexample_embedding_field
, se especifica “Búsqueda de ejemplo” como el vector de entrada y se le asigna un peso de 0.5 arelevance_score
y de 0.3 aexample_embedding_field
cuando se calcula 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
: Es el nombre del campo que asignaste a la propiedad de clave de incorporación.vector
: Es el vector de entrada proporcionado como un array.ranking_expression
: Controla la clasificación de los resultados. Las variables se ponderan según la expresión que ingresas. La expresión de clasificación es una sola función o varias funciones que se unen con+
en el formatofunction, { " + ", function }
.Las funciones compatibles son las siguientes:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
Se aceptan las siguientes variables:
relevance_score
: Es una variable predefinida que proporciona Vertex AI Search para medir la relevancia de un documento. La puntuación varía de 0 a 1.0, inclusive.dotProduct()
: Es una función predefinida que proporciona la búsqueda de Vertex AI. Debes proporcionar el mismo nombre de campo a esta función que hiciste paraembeddingVector.fieldPath
.
Por ejemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Obtén resultados en la respuesta de la búsqueda. Cada resultado de la búsqueda incluye su puntuación de relevancia y los valores del producto punto. Por ejemplo:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: Es el producto punto calculado para el documento del resultado de la búsqueda.relevance_score
: Es la puntuación de relevancia calculada para el documento del resultado de la búsqueda.
¿Qué sigue?
- Prepara los datos para la transferencia.
- Actualiza un esquema.
- Obtén una vista previa de los resultados de la búsqueda.
- Para comprender el impacto de las incorporaciones personalizadas en la calidad de la búsqueda de una app de búsqueda genérica, evalúa la calidad de la búsqueda. Para obtener más información, consulta Evalúa la calidad de la búsqueda.