Compartilhar via


Gerar inserções para consultas de pesquisa e documentos

O Azure AI Search não hospeda modelos de inserção, portanto, você é responsável por criar vetores para entradas e saídas de consulta. Escolha uma das abordagens a seguir:

Abordagem Descrição
Vetorização integrada Use a fragmentação e a vetorização de dados integradas no Azure AI Search. Essa abordagem depende de indexadores de dados, conjuntos de habilidades e habilidades internas ou personalizadas que apontam para modelos de incorporação externos, como aqueles no Azure AI Foundry.
Vetorização manual Gerencie o agrupamento de dados e a vetorização por conta própria. Para indexação, você envia documentos pré‐vetorizados para campos vetoriais em um índice de pesquisa. Para consultar, você fornece vetores pré-compilados para o mecanismo de pesquisa. Para obter demonstrações dessa abordagem, consulte o repositório GitHub azure-search-vector-samples .

Recomendamos a vetorização integrada para a maioria dos cenários. Embora você possa usar qualquer modelo de inserção com suporte, este artigo usa modelos do Azure OpenAI para ilustração.

Como os modelos de inserção são usados em consultas de vetor

Os modelos de inserção geram vetores para entradas de consulta e saídas de consulta. As entradas de consulta incluem:

  • Texto ou imagens que são convertidas em vetores durante o processamento da consulta. Como parte da vetorização integrada, um vetorizador executa essa tarefa.

  • Vetores pré-compilados. Você pode gerar esses vetores passando a entrada de consulta para um modelo de inserção de sua escolha. Para evitar a limitação de taxa, implemente a lógica de repetição em sua carga de trabalho. Nossa demonstração do Python usa tenacity.

Com base na entrada da consulta, o mecanismo de pesquisa recupera documentos correspondentes do índice de pesquisa. Esses documentos são as saídas de consulta.

O índice de pesquisa já deve conter documentos com um ou mais campos de vetor preenchidos por inserções. Você pode criar essas inserções por meio de vetorização integrada ou manual. Para garantir resultados precisos, use o mesmo modelo de inserção para indexação e consulta.

Dicas para integração de modelo de inserção

  • Identificar casos de uso. Avalie casos de uso específicos em que a integração de modelo de inserção para recursos de pesquisa de vetor agrega valor à sua solução de pesquisa. Exemplos incluem pesquisa multimodal ou conteúdo de imagem correspondente com conteúdo de texto, pesquisa multilíngue e pesquisa de similaridade.

  • Crie uma estratégia de agrupamento. Os modelos de inserção têm limites no número de tokens que aceitam, portanto, o agrupamento de dados é necessário para arquivos grandes.

  • Otimize o custo e o desempenho. A pesquisa de vetor é intensiva em recursos e está sujeita a limites máximos, portanto, vetorize apenas os campos que contêm significado semântico. Reduza o tamanho do vetor para armazenar mais vetores pelo mesmo preço.

  • Escolha o modelo de inserção correto. Selecione um modelo para seu caso de uso, como inserções de palavras para pesquisas baseadas em texto ou inserções de imagem para pesquisas visuais. Considere modelos pré-treinados, como text-embedding-ada-002 do OpenAI ou a API REST de Recuperação de Imagem da Visão de IA do Azure.

  • Normalizar comprimentos de vetor. Para melhorar a precisão e o desempenho da pesquisa de similaridade, normalize os comprimentos de vetor antes de armazená-los em um índice de pesquisa. A maioria dos modelos pré-treinados já está normalizada.

  • Ajuste o modelo. Se necessário, ajuste o modelo em seus dados específicos do domínio para melhorar seu desempenho e relevância para seu aplicativo de pesquisa.

  • Testar e iterar. Teste e refine continuamente a integração do modelo de incorporação para obter o desempenho de pesquisa desejado e a satisfação do usuário.

Criar recursos na mesma região

Embora a vetorização integrada com modelos de inserção do Azure OpenAI não exija que os recursos estejam na mesma região, usar a mesma região pode melhorar o desempenho e reduzir a latência.

Para usar a mesma região para seus recursos:

  1. Verifique a disponibilidade regional dos modelos de inserção de texto.

  2. Verifique a disponibilidade regional do Azure AI Search.

  3. Crie um recurso do Azure OpenAI e um serviço do Azure AI Search na mesma região.

Dica

Deseja usar a classificação semântica para consultas híbridas ou um modelo de machine learning em uma habilidade personalizada para enriquecimento de IA? Escolha uma região do Azure AI Search que forneça esses recursos.

Escolher um modelo de inserção no Azure AI Foundry

Quando você adiciona conhecimento a um fluxo de trabalho do agente no portal do Azure AI Foundry, você tem a opção de criar um índice de pesquisa. Um assistente orienta você durante as etapas.

Uma etapa envolve a seleção de um modelo de inserção para vetorizar seu conteúdo de texto sem formatação. Os seguintes modelos têm suporte:

  • text-embedding-3-small
  • text-embedding-3-large
  • text-embedding-ada-002
  • Cohere-embed-v3-english
  • Cohere-embed-v3-multilingual

Seu modelo já deve ser implantado e você deve ter permissão para acessá-lo. Para obter mais informações, consulte a visão geral da implantação para modelos do Azure AI Foundry.

Gerar uma inserção para uma consulta improvisada

Se você não quiser usar a vetorização integrada, poderá gerar manualmente uma inserção e colá-la na vectorQueries.vector propriedade de uma consulta de vetor. Para obter mais informações, consulte Criar uma consulta de vetor no Azure AI Search.

Os exemplos a seguir pressupõem o modelo text-embedding-ada-002. Substitua YOUR-API-KEY e YOUR-OPENAI-RESOURCE pelos detalhes do recurso do Azure OpenAI.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static async Task Main(string[] args)
    {
        var apiKey = "YOUR-API-KEY";
        var apiBase = "https://YOUR-OPENAI-RESOURCE.openai.azure.com";
        var apiVersion = "2024-02-01";
        var engine = "text-embedding-ada-002";

        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

        var requestBody = new
        {
            input = "How do I use C# in VS Code?"
        };

        var response = await client.PostAsync(
            $"{apiBase}/openai/deployments/{engine}/embeddings?api-version={apiVersion}",
            new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json")
        );

        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}

A saída é uma matriz de vetores de 1.536 dimensões.