Configurar um vetorizador em um índice de pesquisa

No Azure AI Search, um vetorizador é um software que executa vetorização, como um modelo de incorporação implantado no Azure OpenAI, que converte texto (ou imagens) em vetores durante a execução da consulta.

Ele é definido em um índice de pesquisa, aplica-se a campos vetoriais pesquisáveis e é usado no momento da consulta para gerar uma incorporação para uma entrada de consulta de texto ou imagem. Se, em vez disso, você precisar vetorizar o conteúdo como parte do processo de indexação, consulte Vetorização integrada (visualização). Para vetorização interna durante a indexação, você pode configurar um indexador e um conjunto de habilidades que chame um modelo de incorporação para seu conteúdo de texto bruto.

Para adicionar um vetorizador ao índice de pesquisa, você pode usar o designer de índice no portal do Azure, chamar a API REST Criar ou Atualizar Índice ou usar qualquer pacote SDK do Azure atualizado para fornecer esse recurso.

Os vetorizadores agora estão geralmente disponíveis, desde que você use um par de vetorizador de habilidade geralmente disponível. AzureOpenAIEmbedding vectorizer e AzureOpenAIEmbedding habilidade estão geralmente disponíveis. O vetorizador de API da Web personalizado também está disponível em geral.

O vetorizador Azure AI Vision, o vetorizador de catálogo de modelos do Azure AI Studio e suas habilidades equivalentes ainda estão em visualização. Seu conjunto de habilidades deve especificar 2024-05-01-preview REST API para usar habilidades de visualização e vetorizadores.

Pré-requisitos

Recomendamos que você habilite o log de diagnóstico em seu serviço de pesquisa para confirmar a execução da consulta vetorial.

Experimente um vetorizador com dados de exemplo

O assistente Importar e vetorizar dados lê arquivos do armazenamento de Blob do Azure, cria um índice com campos fragmentados e vetorizados e adiciona um vetorizador. Por design, o vetorizador criado pelo assistente é definido para o mesmo modelo de incorporação usado para indexar o conteúdo do blob.

  1. Carregue arquivos de dados de exemplo em um contêiner no Armazenamento do Azure. Usamos alguns pequenos arquivos de texto do livro da Terra da NASA para testar essas instruções em um serviço de pesquisa gratuito.

  2. Execute o assistente Importar e vetorizar dados, escolhendo o contêiner de blob para a fonte de dados.

    Captura de ecrã da página Ligar aos seus dados.

  3. Escolha uma implantação existente de text-embedding-ada-002. Esse modelo gera incorporações durante a indexação e também é usado para configurar o vetorizador usado durante as consultas.

    Captura de tela da página de vetorização e enriquecimento de dados.

  4. Depois que o assistente for concluído e todo o processamento do indexador estiver concluído, você deverá ter um índice com um campo vetorial pesquisável. A definição JSON do campo tem esta aparência:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. Você também deve ter um perfil vetorial e um vetorizador, semelhante ao exemplo a seguir:

    "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. Pule para testar o vetorizador para conversão de texto em vetor durante a execução da consulta.

Definir um vetorizador e um perfil vetorial

Esta seção explica as modificações em um esquema de índice para definir um vetorizador manualmente.

  1. Use Criar ou Atualizar Índice para adicionar vectorizers a um índice de pesquisa.

  2. Adicione o JSON a seguir à sua definição de índice. A seção vetorizadores fornece informações de conexão para um modelo de incorporação implantado. Esta etapa mostra dois exemplos de vetorizador para que você possa comparar um modelo de incorporação do Azure OpenAI e uma API da Web personalizada lado a lado.

      "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. No mesmo índice, adicione uma seção de perfis de vetor que especifique um dos seus vetorizadores. Os perfis vetoriais também requerem um algoritmo de pesquisa vetorial usado para criar estruturas de navegação.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Atribua um perfil de vetor a um campo vetorial. O exemplo a seguir mostra uma coleção de campos com o campo de chave obrigatório, um campo de cadeia de caracteres de título e dois campos vetoriais com uma atribuição de perfil de vetor.

    "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
            }
    ]
    

Testar um vetorizador

Use um cliente de pesquisa para enviar uma consulta através de um vetorizador. Este exemplo pressupõe o Visual Studio Code com um cliente REST e um índice de exemplo.

  1. No Visual Studio Code, forneça um ponto de extremidade de pesquisa e uma chave de API de consulta de pesquisa:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Cole em uma solicitação de consulta vetorial.

     ### 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
                 }
             ]
         }
    

    Os principais pontos sobre a consulta incluem:

    • "kind": "text" informa ao mecanismo de pesquisa que a entrada é uma cadeia de texto e para usar o vetorizador associado ao campo de pesquisa.

    • "text": "what cloud formations exists in the troposphere" é a cadeia de texto a ser vetorizada.

    • "fields": "vector" é o nome do campo a ser consultado. Se você usar o índice de exemplo produzido pelo assistente, o campo de vetor gerado será chamado vector.

  3. Envie o pedido. Você deve obter três k resultados, onde o primeiro resultado é o mais relevante.

Observe que não há propriedades do vetorizador para definir no momento da consulta. A consulta lê as propriedades do vetorizador, de acordo com a atribuição de campo de perfil vetorial no índice.

Verificar registos

Se você habilitou o log de diagnóstico para seu serviço de pesquisa, execute uma consulta Kusto para confirmar a execução da consulta no campo vetorial:

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

Melhores práticas

Se você estiver configurando um vetorizador do Azure OpenAI, considere as mesmas práticas recomendadas que recomendamos para a habilidade de incorporação do Azure OpenAI.

Consulte também