Partilhar via


Configurar um vetorizador em um índice de pesquisa

Importante

Esta funcionalidade está em pré-visualização pública em Termos de Utilização Suplementares. A API REST 2023-10-01-preview e a API REST 2024-03-01-preview suportam o vetorizador AzureOpenAIEmbedding e o vetorizador personalizado. 2024-05-01-preview A API REST adiciona suporte para o vetorizador Azure AI Vision e o vetorizador de catálogo de modelos do Azure AI Studio.

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 ou chamar a API REST Criar ou Atualizar Índice 2024-05-01-preview ou usar qualquer pacote SDK beta do Azure atualizado para fornecer esse recurso.

Pré-requisitos

  • Um índice com campos vetoriais pesquisáveis no Azure AI Search.

  • Um modelo de incorporação implantado, como text-embedding-ada-002 no Azure OpenAI. Ele é usado para vetorizar uma consulta. Ele deve ser idêntico ao modelo usado para gerar as incorporações em seu índice. Você também pode usar modelos implantados a partir do catálogo de modelos do Azure AI Studio ou de um modelo do Azure AI Vision.

  • Permissões para usar o modelo de incorporação. Se você estiver usando o Azure OpenAI, o chamador deverá ter permissões de Usuário OpenAI dos Serviços Cognitivos. Ou, você pode fornecer uma chave de API.

  • Código do Visual Studio com um cliente REST para enviar a consulta e aceitar uma resposta.

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 (visualização) 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. Certifique-se de usar uma versão da API REST de visualização.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2023-10-01-preview  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