Vetores na Pesquisa de IA do Azure

A pesquisa vetorial é uma abordagem na recuperação de informações que suporta indexação e execução de consultas sobre representações numéricas de conteúdo. Como o conteúdo é numérico em vez de texto sem formatação, a correspondência é baseada em vetores que são mais semelhantes ao vetor de consulta, o que permite a correspondência entre eles:

  • semelhança semântica ou conceptual ("cão" e "canino", conceptualmente semelhantes, mas linguisticamente distintos)
  • conteúdo multilingue ("cão" em inglês e "hund" em alemão)
  • vários tipos de conteúdo ("cão" em texto simples e uma fotografia de um cão num ficheiro de imagem)

Este artigo fornece uma introdução de alto nível aos vetores no Azure AI Search. Ele também explica a integração com outros serviços do Azure e abrange terminologia e conceitos relacionados ao desenvolvimento de pesquisa vetorial.

Recomendamos este artigo para plano de fundo, mas se preferir começar, siga estas etapas:

Você também pode começar com o início rápido do vetor ou os exemplos de código no GitHub.

Que cenários a pesquisa vetorial pode suportar?

Os cenários para pesquisa vetorial incluem:

  • Pesquisa de semelhança. Codifique texto usando modelos de incorporação, como incorporações OpenAI ou modelos de código aberto, como SBERT, e recupere documentos com consultas que também são codificadas como vetores.

  • Pesquisa em diferentes tipos de conteúdo (multimodal). Codifique imagens e texto usando incorporações multimodais (por exemplo, com OpenAI CLIP ou GPT-4 Turbo com Visão no Azure OpenAI) e consulte um espaço de incorporação composto por vetores de ambos os tipos de conteúdo.

  • Pesquisa híbrida. No Azure AI Search, a pesquisa híbrida refere-se à execução de consultas de vetor e palavra-chave na mesma solicitação. O suporte vetorial é implementado no nível do campo, com um índice contendo campos vetoriais e campos de texto pesquisáveis. As consultas são executadas em paralelo e os resultados são mesclados em uma única resposta. Opcionalmente, adicione classificação semântica para maior precisão com a reclassificação L2 usando os mesmos modelos de linguagem que alimentam o Bing.

  • Pesquisa multilingue. Fornecer uma experiência de pesquisa no próprio idioma dos usuários é possível através da incorporação de modelos e modelos de bate-papo treinados em vários idiomas. Se precisar de mais controlo sobre a tradução, pode complementar com as capacidades multilingues que o Azure AI Search suporta para conteúdo não vetorial, em cenários de pesquisa híbrida.

  • Pesquisa vetorial filtrada. Uma solicitação de consulta pode incluir uma consulta vetorial e uma expressão de filtro. Os filtros aplicam-se a campos de texto e numéricos e são úteis para filtros de metadados e para incluir ou excluir resultados de pesquisa com base em critérios de filtro. Embora um campo vetorial não seja filtrável, você pode configurar um texto filtrável ou um campo numérico. O mecanismo de pesquisa pode processar o filtro antes ou depois da execução da consulta vetorial.

  • Banco de dados vetorial. O Azure AI Search armazena os dados que você consulta. Use-o como um armazenamento vetorial puro sempre que precisar de memória de longo prazo ou uma base de conhecimento, ou dados de aterramento para arquitetura de Geração Aumentada de Recuperação (RAG) ou qualquer aplicativo que use vetores.

O suporte a vetores inclui indexação, armazenamento e consulta de incorporações vetoriais a partir de um índice de pesquisa.

O diagrama a seguir mostra os fluxos de trabalho de indexação e consulta para pesquisa vetorial.

Arquitetura do fluxo de trabalho de pesquisa vetorial.

No lado da indexação, a Pesquisa de IA do Azure usa incorporações de vetores e usa um algoritmo de vizinhos mais próximos para colocar vetores semelhantes próximos em um índice. Internamente, ele cria índices vetoriais para cada campo vetorial.

A forma como obtém incorporações do seu conteúdo de origem na Pesquisa de IA do Azure depende da sua abordagem e da possibilidade de utilizar funcionalidades de pré-visualização. Você pode vetorizar ou gerar incorporações como uma etapa preliminar usando modelos do OpenAI, Azure OpenAI e qualquer número de provedores, em uma ampla variedade de conteúdo de origem, incluindo texto, imagens e outros tipos de conteúdo suportados pelos modelos. Em seguida, você pode enviar conteúdo pré-vetorizado para campos vetoriais em um repositório vetorial. Essa é a abordagem geralmente disponível. Se você puder usar recursos de visualização, o Azure AI Search oferece fragmentação e vetorização de dados integradas em um pipeline de indexador. Você ainda fornece os recursos (pontos de extremidade e informações de conexão para o Azure OpenAI), mas o Azure AI Search faz todas as chamadas e lida com as transições.

No lado da consulta, em seu aplicativo cliente, você coleta a entrada de consulta de um usuário, geralmente por meio de um fluxo de trabalho de prompt. Em seguida, você pode adicionar uma etapa de codificação que converte a entrada em um vetor e, em seguida, enviar a consulta vetorial para seu índice no Azure AI Search para uma pesquisa de similaridade. Assim como na indexação, você pode implantar a vetorização integrada (visualização) para converter a pergunta em um vetor. Para qualquer uma das abordagens, o Azure AI Search retorna documentos com os vizinhos mais próximos (kNN) solicitados k nos resultados.

O Azure AI Search dá suporte a cenários híbridos que executam a pesquisa vetorial e de palavra-chave em paralelo, retornando um conjunto de resultados unificado que geralmente fornece melhores resultados do que apenas a pesquisa por vetor ou palavra-chave isoladamente. Para conteúdo híbrido, vetorial e não vetorial é ingerido no mesmo índice, para consultas que são executadas lado a lado.

Disponibilidade e preços

A pesquisa vetorial está disponível como parte de todas as camadas do Azure AI Search em todas as regiões, sem custos adicionais.

Serviços mais recentes criados após 3 de abril de 2024 suportam cotas mais altas para índices vetoriais.

A pesquisa vetorial está disponível em:

Nota

Alguns serviços de pesquisa mais antigos criados antes de 1º de janeiro de 2019 são implantados em infraestruturas que não suportam cargas de trabalho vetoriais. Se você tentar adicionar um campo vetorial a um esquema e receber um erro, isso é resultado de serviços desatualizados. Nessa situação, você deve criar um novo serviço de pesquisa para experimentar o recurso de vetor.

O Azure AI Search está profundamente integrado na plataforma Azure AI. A tabela a seguir lista vários que são úteis em cargas de trabalho vetoriais.

Produto Integração
Azure OpenAI Studio No bate-papo com seu data playground, Adicionar seus próprios dados usa a Pesquisa de IA do Azure para fundamentar dados e pesquisa conversacional. Esta é a abordagem mais fácil e rápida para conversar com seus dados.
Azure OpenAI O Azure OpenAI fornece modelos de incorporação e modelos de chat. Demonstrações e amostras têm como alvo o text-embedding-ada-002. Recomendamos o Azure OpenAI para gerar incorporações para texto.
Serviços de IA do Azure Image Retrieval Vectorize Image API(Preview) suporta vetorização de conteúdo de imagem. Recomendamos esta API para gerar incorporações para imagens.
Plataformas de dados do Azure: Azure Blob Storage, Azure Cosmos DB Você pode usar indexadores para automatizar a ingestão de dados e, em seguida, usar vetorização integrada (visualização) para gerar incorporações. O Azure AI Search pode indexar automaticamente dados vetoriais de duas fontes de dados: indexadores de blob do Azure e indexadores do Azure Cosmos DB para NoSQL. Para obter mais informações, consulte Adicionar campos vetoriais a um índice de pesquisa..

Também é comumente usado em frameworks de código aberto como LangChain.

Conceitos de pesquisa vetorial

Se você é novo em vetores, esta seção explica alguns conceitos principais.

A pesquisa vetorial é um método de recuperação de informações onde documentos e consultas são representados como vetores em vez de texto sem formatação. Na pesquisa vetorial, os modelos de aprendizado de máquina geram as representações vetoriais das entradas de origem, que podem ser texto, imagens ou outro conteúdo. Ter uma representação matemática do conteúdo fornece uma base comum para cenários de pesquisa. Se tudo for um vetor, uma consulta poderá encontrar uma correspondência no espaço vetorial, mesmo que o conteúdo original associado esteja em mídia ou idioma diferente da consulta.

Quando o conteúdo pesquisável é representado como vetores, uma consulta pode encontrar correspondências próximas em conteúdo semelhante. O modelo de incorporação usado para geração de vetores sabe quais palavras e conceitos são semelhantes, e coloca os vetores resultantes próximos no espaço de incorporação. Por exemplo, documentos de origem vetorizados sobre "nuvens" e "névoa" são mais propensos a aparecer em uma consulta sobre "névoa" porque são semanticamente semelhantes, mesmo que não sejam uma correspondência lexical.

Incorporações e vetorização

As incorporações são um tipo específico de representação vetorial de conteúdo ou consulta, criado por modelos de aprendizado de máquina que capturam o significado semântico de texto ou representações de outro conteúdo, como imagens. Os modelos de aprendizagem automática em linguagem natural são treinados em grandes quantidades de dados para identificar padrões e relações entre palavras. Durante o treinamento, eles aprendem a representar qualquer entrada como um vetor de números reais em uma etapa intermediária chamada codificador. Após a conclusão do treinamento, esses modelos de linguagem podem ser modificados para que a representação vetorial intermediária se torne a saída do modelo. As incorporações resultantes são vetores de alta dimensão, onde palavras com significados semelhantes estão mais próximas no espaço vetorial, conforme explicado em Compreender incorporações (Azure OpenAI).

A eficácia da pesquisa vetorial na recuperação de informações relevantes depende da eficácia do modelo de incorporação em destilar o significado de documentos e consultas no vetor resultante. Os melhores modelos são bem treinados sobre os tipos de dados que representam. Você pode avaliar modelos existentes, como o Azure OpenAI text-embedding-ada-002, trazer seu próprio modelo treinado diretamente no espaço do problema ou ajustar um modelo de uso geral. O Azure AI Search não impõe restrições sobre qual modelo você escolher, portanto, escolha o melhor para seus dados.

Para criar incorporações eficazes para pesquisa vetorial, é importante levar em conta as limitações de tamanho de entrada. Recomendamos seguir as diretrizes para fragmentar dados antes de gerar incorporações. Essa prática recomendada garante que as incorporações capturem com precisão as informações relevantes e permitam uma pesquisa vetorial mais eficiente.

O que é o espaço de incorporação?

O espaço de incorporação é o corpus para consultas vetoriais. Dentro de um índice de pesquisa, um espaço de incorporação é todos os campos vetoriais preenchidos com incorporações do mesmo modelo de incorporação. Os modelos de aprendizado de máquina criam o espaço de incorporação mapeando palavras, frases ou documentos individuais (para processamento de linguagem natural), imagens ou outras formas de dados em uma representação composta por um vetor de números reais que representam uma coordenada em um espaço de alta dimensão. Neste espaço de incorporação, itens semelhantes estão localizados próximos uns dos outros, e itens diferentes estão localizados mais distantes.

Por exemplo, documentos que falam sobre diferentes espécies de cães seriam agrupados juntos no espaço de incorporação. Documentos sobre gatos estariam próximos, mas mais distantes do aglomerado de cães enquanto ainda estavam no bairro para animais. Conceitos diferentes, como a computação em nuvem, estariam muito mais distantes. Na prática, esses espaços de incorporação são abstratos e não têm significados bem definidos e interpretáveis pelo ser humano, mas a ideia central permanece a mesma.

Na pesquisa vetorial, o mecanismo de pesquisa verifica vetores dentro do espaço de incorporação para identificar os vetores mais próximos do vetor de consulta. Esta técnica é chamada de busca de vizinhos mais próximos. Os vizinhos mais próximos ajudam a quantificar a semelhança entre os itens. Um alto grau de semelhança vetorial indica que os dados originais também eram semelhantes. Para facilitar a pesquisa rápida do vizinho mais próximo, o mecanismo de pesquisa realiza otimizações, ou emprega estruturas de dados e particionamento de dados, para reduzir o espaço de pesquisa. Cada algoritmo de pesquisa vetorial resolve os problemas do vizinho mais próximo de maneiras diferentes, pois otimiza para latência mínima, taxa de transferência máxima, recuperação e memória. Para calcular a semelhança, as métricas de semelhança fornecem o mecanismo para calcular a distância.

Atualmente, o Azure AI Search suporta os seguintes algoritmos:

  • Mundo pequeno navegável hierárquico (HNSW): O HNSW é um algoritmo ANN líder otimizado para aplicações de alta recuperação e baixa latência onde a distribuição de dados é desconhecida ou pode mudar com frequência. Ele organiza pontos de dados de alta dimensão em uma estrutura gráfica hierárquica que permite uma pesquisa de similaridade rápida e escalável, permitindo um compromisso ajustável entre a precisão da pesquisa e o custo computacional. Como o algoritmo requer que todos os pontos de dados residam na memória para acesso aleatório rápido, esse algoritmo consome cota de tamanho de índice vetorial.

  • Vizinhos K-nearest exaustivos (KNN): Calcula as distâncias entre o vetor de consulta e todos os pontos de dados. É computacionalmente intensivo, por isso funciona melhor para conjuntos de dados menores. Como o algoritmo não requer acesso aleatório rápido de pontos de dados, esse algoritmo não consome cota de tamanho de índice vetorial. No entanto, este algoritmo fornece o conjunto global de vizinhos mais próximos.

Dentro de uma definição de índice, você pode especificar um ou mais algoritmos e, em seguida, para cada campo vetorial, especificar qual algoritmo usar:

Os parâmetros de algoritmo usados para inicializar o índice durante a criação do índice são imutáveis e não podem ser alterados depois que o índice é criado. No entanto, os parâmetros que afetam as características de tempo de consulta (efSearch) podem ser modificados.

Além disso, os campos que especificam o algoritmo HNSW também suportam a pesquisa KNN exaustiva usando o parâmetro "exhaustive": truequery request. No entanto, o contrário não é verdade. Se um campo estiver indexado para exhaustiveKnn, você não poderá usar HNSW na consulta porque as estruturas de dados extras que permitem uma pesquisa eficiente não existem.

Vizinhos aproximados mais próximos

A pesquisa de vizinho mais próximo aproximado (ANN) é uma classe de algoritmos para encontrar correspondências no espaço vetorial. Esta classe de algoritmos emprega diferentes estruturas de dados ou métodos de particionamento de dados para reduzir significativamente o espaço de pesquisa para acelerar o processamento de consultas.

Os algoritmos ANN sacrificam alguma precisão, mas oferecem recuperação escalável e mais rápida de vizinhos aproximados mais próximos, o que os torna ideais para equilibrar a precisão com a eficiência em aplicações modernas de recuperação de informações. Você pode ajustar os parâmetros do seu algoritmo para ajustar os requisitos de recuperação, latência, memória e espaço ocupado pelo disco do seu aplicativo de pesquisa.

O Azure AI Search usa HNSW para seu algoritmo ANN.

Próximos passos