Comparteix a través de


Configuración de un vectorizador en un índice de búsqueda

En Azure AI Search, un vectorizador es software que realiza la vectorización, como un modelo de inserción implementado en Azure OpenAI, que convierte texto (o imágenes) en vectores durante la ejecución de consultas.

Se define en un índice de búsqueda, se aplica a los campos vectoriales que se pueden buscar y se usa en el momento de la consulta para generar una inserción para una entrada de consulta de texto o imagen. Si en su lugar necesita vectorizar contenido como parte del proceso de indexación, consulte Vectorización integrada (versión preliminar). Para la vectorización integrada durante la indexación, puede configurar un indexador y un conjunto de aptitudes que llame a un modelo de inserción para el contenido de texto sin formato.

Para agregar un vectorizador a un índice de búsqueda, puede usar el diseñador de índices en Azure Portal, llamar a la API de REST de Crear o actualizar índice o usar cualquier paquete del SDK de Azure que se haya actualizado para proporcionar esta característica.

Los vectorizadores ahora están disponibles con carácter general siempre que use un par de vectorizadores de aptitudes que estén disponibles en general. El vectorizador AzureOpenAIEmbedding y la aptitud AzureOpenAIEmbedding están disponibles con carácter general. El vectorizador de API web personalizado también está disponible con carácter general.

El vectorizador de Azure AI Vision, el vectorizador del catálogo de modelos de Azure AI Studio y sus aptitudes equivalentes aún están en versión preliminar. El conjunto de aptitudes debe especificar la API de REST 2024-05-01-preview para usar aptitudes y vectorizadores en versión preliminar.

Requisitos previos

Se recomienda habilitar el registro de diagnóstico en el servicio de búsqueda para confirmar la ejecución de consultas vectoriales.

Prueba de un vectorizador con datos de ejemplo

El Asistente para importar y vectorizar datos lee los archivos de Azure Blob Storage, crea un índice con campos fragmentados y vectorizados y agrega un vectorizador. Por diseño, el vectorizador creado por el asistente se establece en el mismo modelo de inserción que se usa para indexar el contenido del blob.

  1. Cargue los archivos de datos de ejemplo en un contenedor en Azure Storage. Usamos algunos archivos de texto pequeños del libro de la Tierra de la NASA para probar estas instrucciones en un servicio de búsqueda gratuito.

  2. Ejecute el Asistente para importar y vectorizar datos, eligiendo el contenedor de blobs para el origen de datos.

    Captura de pantalla de la página Conexión a los datos.

  3. Elija una implementación existente de text-embedding-ada-002. Este modelo genera incrustaciones durante la indexación y también se usa para configurar el vectorizador usado durante las consultas.

    Captura de pantalla de la página vectorizar y enriquecer datos.

  4. Una vez finalizado el asistente y completado todo el procesamiento del indexador, debe tener un índice con un campo vectorial que se puede buscar. La definición JSON del campo tiene este aspecto:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. También debe tener un perfil de vector y un vectorizador, similar al ejemplo siguiente:

    "profiles": [
       {
         "name": "vector-nasa-ebook-text-profile",
         "algorithm": "vector-nasa-ebook-text-algorithm",
         "vectorizer": "vector-nasa-ebook-text-vectorizer"
       }
     ],
     "vectorizers": [
       {
         "name": "vector-nasa-ebook-text-vectorizer",
         "kind": "azureOpenAI",
         "azureOpenAIParameters": {
           "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "modelName": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Vaya directamente a probar el vectorizador para la conversión de texto a vector durante la ejecución de la consulta.

Definir un vectorizador y un perfil de vector

En esta sección se explican las modificaciones en un esquema de índice para definir manualmente un vectorizador.

  1. Use Crear o actualizar índice para agregar vectorizers a un índice de búsqueda.

  2. Agregue el siguiente JSON a la definición del índice. La sección vectorizadores proporciona información de conexión a un modelo de inserción implementado. En este paso se muestran dos ejemplos de vectorizador para que pueda comparar un modelo de inserción de Azure OpenAI y una API web personalizada en paralelo.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "modelName": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. En el mismo índice, agregue una sección de perfiles vectoriales que especifique uno de los vectorizadores. Los perfiles de vector también requieren un algoritmo de vector de búsqueda que se usa para crear estructuras de navegación.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Asigne un perfil de vector a un campo vectorial. En el ejemplo siguiente se muestra una colección de campos con el campo de clave necesario, un campo de cadena de título y dos campos vectoriales con una asignación de perfil vectorial.

    "fields": [ 
            { 
                "name": "ID", 
                "type": "Edm.String", 
                "key": true, 
                "sortable": true, 
                "analyzer": "keyword" 
            }, 
            { 
                "name": "title", 
                "type": "Edm.String"
            }, 
            { 
                "name": "vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1536, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }, 
            { 
                "name": "my-second-vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1024, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }
    ]
    

Prueba de un vectorizador

Use un cliente de búsqueda para enviar una consulta a través de un vectorizador. En este ejemplo se supone que use Visual Studio Code con un cliente REST y un índice de ejemplo.

  1. En Visual Studio Code, proporcione un punto de conexión de búsqueda y una clave de API de consulta de búsqueda:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Pegue una solicitud de consulta vectorial.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2024-07-01 HTTP/1.1
         Content-Type: application/json
         api-key: {{queryApiKey}}
    
         {
             "count": true,
             "select": "title,chunk",
             "vectorQueries": [
                 {
                     "kind": "text",
                     "text": "what cloud formations exists in the troposphere",
                     "fields": "vector",
                     "k": 3,
                     "exhaustive": true
                 }
             ]
         }
    

    Entre los puntos clave de la consulta se incluyen:

    • "kind": "text" indica al motor de búsqueda que la entrada es una cadena de texto y que usa el vectorizador asociado al campo de búsqueda.

    • "text": "what cloud formations exists in the troposphere" es la cadena de texto que se va a vectorizar.

    • "fields": "vector" es el nombre del campo que se va a consultar. Si usa el índice de ejemplo generado por el asistente, el campo vectorial generado se denomina vector.

  3. Envíe la solicitud. Debe obtener tres resultados k, donde el primer resultado es el más relevante.

Observe que no hay propiedades del vectorizador que establecer al momento de la consulta. La consulta lee las propiedades del vectorizador según la asignación de campos de perfil de vector en el índice.

Compruebe los registros

Si ha habilitado el registro de diagnóstico para el servicio de búsqueda, ejecute una consulta de Kusto para confirmar la ejecución de consultas en el campo vectorial:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

procedimientos recomendados

Si va a configurar un vectorizador de Azure OpenAI, tenga en cuenta los mismos procedimientos recomendados que se aconsejan para la aptitud de inserción de Azure OpenAI.

Consulte también