Vetores na Pesquisa de IA do Azure

A busca em vetores é uma abordagem na recuperação de informações que dá suporte à indexação e à execução de consultas nas representações numéricas de conteúdo. Como o conteúdo é numérico em vez de texto sem formatação, a correspondência é baseada nos vetores mais semelhantes ao vetor de consulta, o que permite a correspondência entre:

  • semelhança semântica ou conceitual ("cão" e "canino", conceitualmente semelhantes, mas linguisticamente distintos)
  • conteúdo multilíngue ("dog" em inglês e "hund" em alemão)
  • vários tipos de conteúdo ("cachorro" em texto sem formatação e uma fotografia de um cachorro em um arquivo de imagem)

Este artigo fornece uma introdução de alto nível aos vetores na Pesquisa de IA do Azure. Também explica a integração com outros serviços do Azure e aborda a terminologia e conceitos relacionados ao desenvolvimento de busca em vetores.

Recomendamos este artigo para obter informações, mas se você preferir começar já, siga estas etapas:

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

Quais cenários podem dar suporte à busca em vetores?

Os cenários para busca em vetores incluem:

  • Pesquisa de similaridade. Codifique o texto usando modelos de inserção, como inserções do OpenAI, ou modelos de software livre, como SBERT, e recupere os documentos com consultas que também são codificadas como vetores.

  • Pesquisar entre vários tipos de conteúdo (multimodal). Codificar imagens e texto usando inserções multimodal (por exemplo, com OpenAI CLIP ou GPT-4 Turbo with Vision no OpenAI do Azure) e consultar um espaço de inserção composto por vetores de ambos os tipos de conteúdo.

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

  • Pesquisa multilíngue. Fornecer uma experiência de pesquisa no próprio idioma dos usuários é possível por meio da inserção de modelos e modelos de chat treinados em vários idiomas. Se você precisar de mais controle sobre a tradução, poderá complementar com os recursos de vários idiomas que a Pesquisa de IA do Azure dá suporte para conteúdo não vetorial, em cenários de pesquisa híbrida.

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

  • Bancos de dados vetoriais. A Pesquisa de IA do Azure armazena os dados que você consulta. Use-a como um repositório de vetores puro sempre que precisar de memória de longo prazo ou de uma base de dados ou dados de fundamentação para a arquitetura de RAG (Geração Aumentada de Recuperação) ou qualquer aplicativo que use vetores.

O suporte ao vetor inclui indexação, armazenamento e consulta de inserções de vetor em um índice de pesquisa.

O diagrama a seguir mostra os fluxos de trabalho de indexação e consulta para busca em vetores.

Arquitetura do fluxo de trabalho de busca em vetores.

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

A forma como você obtém inserções do conteúdo de origem na Pesquisa de IA do Azure depende da sua abordagem e se você pode usar versão prévia dos recursos. Você pode vetorizar ou gerar inserções como uma etapa preliminar usando modelos do OpenAI, OpenAI do Azure e de qualquer número de provedores, em uma ampla gama de conteúdo de origem, incluindo texto, imagens e outros tipos de conteúdo compatíveis com os modelos. Em seguida, você pode enviar conteúdo pré-vetorizado por push para campos de vetor em um repositório de vetores. Essa é a abordagem em disponibilidade geral. Se você puder usar versão prévia dos recursos, a Pesquisa de IA do Azure oferecerá agrupamento e vetorização de dados integrados em um pipeline do indexador. Você ainda fornece os recursos (pontos de extremidade e informações de conexão para o OpenAI do Azure), mas a Pesquisa de IA do Azure faz todas as chamadas e manipula 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. Agora, você pode adicionar uma etapa de codificação que converte a entrada em um vetor e, depois, enviar a consulta em vetor ao índice na Pesquisa de IA do Azure para uma pesquisa de similaridade. Assim como acontece com a indexação, você pode implantar a vetorização integrada (versão prévia) para converter a pergunta em um vetor. Para as duas abordagens, a Pesquisa de IA do Azure retorna documentos com o vizinho mais próximo k (kNN) solicitado nos resultados.

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

Disponibilidade e preços

A busca em vetores está disponível como parte de todas as camadas do Azure AI Search em todas as regiões sem custo adicional.

Os serviços mais recentes criados após 03 de abril de 2024 dão suporte às cotas mais altas para índices vetoriais.

A busca em vetores está disponível em:

Observação

Alguns serviços de pesquisa mais antigos criados antes de 1º de janeiro de 2019 são implantados na infraestrutura que não dá suporte a cargas de trabalho vetoriais. Se você tentar adicionar um campo vetorial a um esquema e receber um erro, ele será resultado de serviços desatualizados. Nessa situação, você deve criar um novo serviço de pesquisa para experimentar o recurso vetorial.

A Pesquisa de IA do Azure está profundamente integrada na plataforma de IA do Azure. A tabela a seguir lista vários que são úteis em cargas de trabalho de vetor.

Product Integração
Estúdio do OpenAI do Azure No chat com seu playground de dados, Adicionar seus próprios dados usa a Pesquisa de IA do Azure para dados de fundamentação e pesquisa conversacional. Essa é a abordagem mais fácil e rápida para conversar com seus dados.
OpenAI do Azure O OpenAI do Azure fornece modelos de inserção e modelos de chat. As demonstrações e os exemplos são direcionados para text-embedding-ada-002. Recomendamos o Azure OpenAI para gerar inserções para texto.
Serviços de IA do Azure A API de Imagem de Vetorização de Recuperação de Imagem (Versão Prévia) dá suporte à vetorização do conteúdo de imagem. Recomendamos essa API para gerar inserções para imagens.
Plataformas de dados do Azure: Armazenamento de Blobs do Azure, Azure Cosmos DB Você pode usar indexadores para automatizar a ingestão de dados e, em seguida, usar vetorização integrada (versão prévia) para gerar inserções. O Azure AI Search pode indexar automaticamente dados vetoriais de duas fontes de dados: indexadores de blobs do Azure e indexadores do Azure Cosmos DB for NoSQL. Para obter mais informações, confira Adicionar campos vetoriais a um índice de pesquisa.

Ele também é comumente usado em estruturas de código aberto, como LangChain.

Conceitos da busca em vetores

Se você não estiver familiarizado com os vetores, esta seção explicará alguns conceitos principais.

A busca em vetores é um método de recuperação de informações em que documentos e consultas são representados como vetores, em vez de texto sem formatação. Na busca em vetores, os modelos de machine learning geram as representações vetoriais de entradas de origem, que podem ser conteúdo de 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 pode encontrar uma correspondência no espaço vetorial, mesmo que o conteúdo original associado esteja em uma mídia ou em um 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 inserção usado para a geração de vetores sabe quais palavras e conceitos são semelhantes e coloca os vetores resultantes próximos no espaço de inserção. Por exemplo, documentos de origem vetorizados sobre "nuvens" e "neblina" 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.

Inserções e vetorização

As inserções são um tipo específico de representação vetorial de conteúdo ou uma consulta, criado por modelos de machine learning que capturam o significado semântico de texto ou representações de outro conteúdo, como imagens. Os modelos de machine learning de linguagem natural são treinados em grandes volumes 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 de o 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 inserções resultantes são vetores de alta dimensão, em que palavras com significados semelhantes são mais próximas no espaço vetorial, conforme explicado em Noções básicas sobre inserções (Azure OpenAI).

A eficácia da busca em vetores na recuperação de informações relevantes depende da eficácia do modelo de inserção ao desvendar o significado de documentos e consultas no vetor resultante. Os melhores modelos são bem treinados nos tipos de dados que estão representando. Você pode avaliar os modelos existentes, como o text-embedding-ada-002 do Azure OpenAI, trazer seu próprio modelo treinado diretamente no espaço problemático 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 inserções efetivas para busca em vetores, é importante levar em conta as limitações de tamanho de entrada. É recomendável seguir as diretrizes de agrupamento de dados antes de gerar inserções. Essa melhor prática garante que as inserções capturem com precisão as informações relevantes e habilitem uma busca em vetores mais eficiente.

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

O espaço de inserção é o corpus para consultas vetoriais. Em um índice de pesquisa, um espaço de inserção é todo o campo vetorial preenchido com inserções do mesmo modelo de inserção. Os modelos de machine learning criam o espaço de inserçã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 representa uma coordenada em um espaço de alta dimensão. Nesse espaço de inserção, os itens semelhantes estão localizados próximos uns dos outros, e os itens diferentes estão mais distantes.

Por exemplo, documentos que falam sobre diferentes espécies de cães seriam clusterizados juntos no espaço de inserção. Documentos sobre gatos estariam próximos, porém mais longe do cluster de cães, enquanto ainda estavam na vizinhança de animais. Conceitos diferentes, como a computação em nuvem, estariam muito mais distantes. Na prática, esses espaços de inserçã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 busca em vetores, o mecanismo de pesquisa procura os vetores no espaço de inserção para identificar aqueles que estão próximos ao vetor de consulta. Essa técnica é chamada de pesquisa de vizinhos mais próximos. Os vizinhos mais próximos ajudam a quantificar a similaridade entre os itens. Um alto grau de semelhança do vetor indica que os dados originais também eram semelhantes. Para facilitar a rápida pesquisa de vizinhos mais próximos, o mecanismo de pesquisa executa otimizações ou emprega estruturas de dados e particionamento de dados para reduzir o espaço de pesquisa. Cada algoritmo de busca em vetores resolve os problemas de vizinho mais próximos de maneiras diferentes à medida que otimizam para latência mínima, taxa de transferência máxima, recall e memória. Para calcular a similaridade, as métricas de similaridade fornecem o mecanismo para calcular a distância.

No momento, o Azure AI Search dá suporte aos seguintes algoritmos:

  • HNSW (Hierarchical Navigable Small World): o HNSW é um algoritmo ANN principal otimizado para aplicativos de baixa latência e de alta recuperação em que a distribuição de dados é desconhecida ou pode ser alterada com frequência. Ele organiza pontos de dados de alta dimensão em uma estrutura de grafo hierárquico que permite uma pesquisa de similaridade rápida e escalonável, possibilitando uma troca ajustável entre a precisão da pesquisa e o custo de computação. Como o algoritmo exige que todos os pontos de dados residam na memória para acesso aleatório rápido, esse algoritmo consome a como de tamanho do índice vetorial.

  • KNN (vizinho mais próximo de K) completo: calcula as distâncias entre o vetor de consulta e todos os pontos de dados. Usa bastante computação, portanto, 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 a cota de tamanho do índice vetorial. No entanto, esse algoritmo fornece o conjunto global de vizinhos mais próximos.

Em uma definição de índice, você pode especificar um ou mais algoritmos e, em seguida, para cada campo vetorial, especifique 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 após a criação do índice. No entanto, 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 dão suporte à pesquisa de KNN completo usando o parâmetro de solicitação de consulta"exhaustive": true. No entanto, o oposto não é verdadeiro. Se um campo for indexado para exhaustiveKnn, você não poderá usar o HNSW na consulta porque as estruturas de dados adicionais que habilitam a pesquisa eficiente não existem.

Vizinhos Mais Próximos Aproximados

A pesquisa de ANN (Vizinho Mais Próximo Aproximado) é uma classe de algoritmos para localizar correspondências no espaço vetorial. Essa 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 uma parte da precisão, mas oferecem uma recuperação escalonável e mais rápida de vizinhos mais próximos aproximados, o que os torna ideais para equilibrar a precisão em relação à eficiência em aplicativos modernos de recuperação de informações. Você pode ajustar os parâmetros do algoritmo para ajustar os requisitos de memória, latência, memória e volume de disco do aplicativo de pesquisa.

O Azure AI Search usa o HNSW para o algoritmo ANN.

Próximas etapas