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 los almacenes de datos con datos estructurados personalizados 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, Vertex AI Search genera automáticamente embeddings de vectores sin necesidad de configuración. Si no sabes cómo crear incorporaciones, Google recomienda 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 con Vertex AI, en especial si tus incorporaciones personalizadas contienen contexto adicional que puede enriquecer la recuperación y la 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 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).
- Creaste incorporaciones para los perfiles de usuario y deseas usarlas para crear una clasificación de documentos personalizada y pertinente desde el punto de vista semántico. Puedes usar tus incorporaciones para obtener una clasificación basada en la personalización, lo que puede aumentar las incorporaciones de documentos de Google para la clasificación basada en la relevancia.
Para integrar tus propias incorporaciones, sigue estos pasos:
- Antes de comenzar: Verifica que tus incorporaciones cumplan con todos los requisitos
- Transfiere datos con incorporaciones: Transfiere tus documentos con sus incorporaciones.
- Actualiza tu esquema: Actualiza tu esquema con los campos de propiedades clave y las especificaciones de dimensiones.
- 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:
- Se admiten las incorporaciones para 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 incluidos
- Los embeddings son compatibles con imágenes y texto. No se admiten los videos
- Se pueden etiquetar hasta dos campos como campos de propiedad de 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 propiedad de clave de campo de incorporación después de que se establecen.
Transfiere datos con embeddings
Puedes transferir las incorporaciones de un documento a uno o dos campos incluidos como parte de los datos o los metadatos de ese documento durante la transferencia.
Para transferir datos con incorporaciones, haz lo siguiente:
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 realizas una prueba A/B entre incorporaciones). Cada incorporación debe proporcionarse en su propio campo del documento, por ejemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Sigue las instrucciones para preparar datos estructurados en la documentación de Prepara 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 realizas pruebas A/B entre incorporaciones). Cada incorporación debe proporcionarse 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 de Preparación de datos para la transferencia.
Sigue las instrucciones para tu tipo de datos en Crea un almacén de datos de búsqueda 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 las asignaciones de propiedades clave y las dimensiones de 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 AI Applications.
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 Propiedades clave, 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 Dimensión, ingresa la cantidad de dimensiones para ese campo de embedding.
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 reindexació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 Actualiza un esquema, especifica la asignación de propiedades de clave y la cantidad de dimensiones para cada campo de incorporación:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Por ejemplo, aquí se muestra 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 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, la reindexació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 a partir de la actualización del 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 para todas las solicitudes de búsqueda, actualiza la configuración de la 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 el parámetro de configuración global si está establecido.
Cómo especificar un embedding de forma global
Puedes especificar la misma incorporación en todas las solicitudes de búsqueda con la consola deGoogle 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 la entrega con una especificación de incorporación.
En la consola de Google Cloud , ve a la página AI Applications.
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 Entrega.
En Ruta de acceso al campo de incorporación, ingresa el nombre del campo que asignaste a la propiedad de clave de incorporación.
En Ranking expression, ingresa una o más 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 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 Vertex AI Search para medir la relevancia de un documento. La puntuación varía de 0 a 1.0, con límites inclusivos.dotProduct()
: Es una función predefinida que proporciona Vertex AI Search. Debes proporcionar el mismo nombre de campo a esta función que el que proporcionaste 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 el parche a la entidad
servingConfig
con los campos que deseas actualizar. Especifica los campos que actualizarás conupdateMask
.En el siguiente ejemplo,
embeddingConfig
usa embeddings en el campoexample_embedding_field
y le 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
: 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 ingreses. 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 Vertex AI Search.dotProduct()
: Es una función predefinida que proporciona Vertex AI Search. El producto punto se normaliza. Debes proporcionar el mismo nombre de campo a esta función que el 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 Por solicitud para obtener información sobre cómo proporcionar especificaciones de incorporación para solicitudes de búsqueda individuales.
Especifica un embedding 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 las incorporaciones en el campoexample_embedding_field
, se especifica "Ejemplo de búsqueda" como el vector de entrada y se 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 ingreses. 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 Vertex AI Search para medir la relevancia de un documento. La puntuación varía de 0 a 1.0, con límites inclusivos.dotProduct()
: Es una función predefinida que proporciona Vertex AI Search. Debes proporcionar el mismo nombre de campo a esta función que el que proporcionaste 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 escalar. Por ejemplo:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: Es el producto escalar 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 personalizada, evalúa la calidad de la búsqueda. Para obtener más información, consulta Cómo evaluar la calidad de la búsqueda.