Usa incorporaciones personalizadas

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:

  1. Antes de comenzar: Verifica que tus incorporaciones cumplan con todos los requisitos
  2. Transfiere datos con incorporaciones: Transfiere tus documentos con sus incorporaciones.
  3. Actualiza tu esquema: Actualiza tu esquema con los campos de propiedades clave y las especificaciones de dimensiones.
  4. 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:

  1. 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.

  2. 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:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. En la columna Nombre, haz clic en el almacén de datos con el esquema que deseas actualizar.

  4. Haz clic en la pestaña Esquema para ver el esquema de tus datos.

  5. Haz clic en el botón Editar.

  6. 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.

  7. 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.

  8. 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:

  1. 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:

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.

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. Haz clic en Ver para el almacén de datos con el esquema que deseas actualizar.

  3. Ve a la página Configuraciones y haz clic en la pestaña Entrega.

  4. En Ruta de acceso al campo de incorporación, ingresa el nombre del campo que asignaste a la propiedad de clave de incorporación.

  5. 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 formato function, { " + ", 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 para embeddingVector.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.

  1. Aplica el parche a la entidad servingConfig con los campos que deseas actualizar. Especifica los campos que actualizarás con updateMask.

    En el siguiente ejemplo, embeddingConfig usa embeddings en el campo example_embedding_field y le asigna un peso de 0.5 a relevance_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 formato function, { " + ", 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 a embeddingVector.fieldPath.

    Por ejemplo:

    • 0.3 * relevance_score
    • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. 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 anula servingConfig.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.

  1. Envía una solicitud de búsqueda que incluya embeddingSpec.

    En el siguiente ejemplo de embeddingSpec, se usan las incorporaciones en el campo example_embedding_field, se especifica "Ejemplo de búsqueda" como el vector de entrada y se asigna un peso de 0.5 a relevance_score y de 0.3 a example_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 formato function, { " + ", 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 para embeddingVector.fieldPath.

      Por ejemplo:

      • 0.3 * relevance_score
      • 0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
  2. 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?