Partilhar via


Escolha um serviço do Azure para pesquisa vetorial

A pesquisa vetorial é um método de encontrar informações armazenadas em um banco de dados na forma de vetores. Vetores são grupos de números que representam características ou características de mídia, como texto ou imagens. Os vetores são um avanço significativo em relação aos métodos tradicionais de pesquisa baseados em palavras-chave. Eles fornecem resultados mais rápidos e precisos, capturando e comparando relações semânticas dentro das informações.

O Azure fornece várias maneiras de armazenar e pesquisar dados vetorizados. Este artigo ajuda arquitetos e desenvolvedores que precisam entender e escolher o serviço do Azure certo para pesquisa vetorial para seu aplicativo.

Este artigo compara os seguintes serviços com base em seus recursos de pesquisa vetorial:

Os arquitetos e desenvolvedores devem comparar os serviços disponíveis da perspetiva dos requisitos do sistema em Escolha um serviço candidato e na matriz de capacidade.

Escolha um serviço candidato

Esta secção ajuda-o a selecionar os serviços mais prováveis para as suas necessidades. Para restringir as opções, comece considerando os requisitos do sistema.

Requisitos chave

Um fluxograma que ajuda você a escolher o serviço do Azure certo para pesquisa vetorial.

Para decidir se deseja usar uma solução de banco de dados tradicional ou o Azure AI Search, considere seus requisitos e se você pode realizar pesquisas vetoriais ao vivo ou em tempo real em seus dados. Um banco de dados relacional tradicional ou NoSQL é o mais adequado para o seu cenário se você alterar valores em campos vetorizados com frequência e as alterações precisarem ser pesquisáveis em tempo real ou quase em tempo real. Da mesma forma, a melhor solução para você atingir sua meta de desempenho pode ser usar seu banco de dados existente. No entanto, se sua carga de trabalho não exigir pesquisa vetorial em tempo real ou quase em tempo real, e você puder gerenciar um índice de vetores, a Pesquisa de IA pode ser uma boa escolha.

Se você escolher uma solução de banco de dados tradicional, o tipo específico de serviço de banco de dados que você decidir usar dependerá principalmente do conjunto de habilidades da sua equipe e dos bancos de dados que você opera atualmente. Se você já usa um tipo específico de banco de dados, como o MongoDB, por exemplo, usar esse mesmo tipo de banco de dados pode ser a solução mais fácil para o seu cenário. Como mostrado na seção Matriz de capacidade , cada serviço de banco de dados tem alguns recursos e limitações exclusivos para pesquisa vetorial. Revise essas informações para garantir que seu tipo de banco de dados preferido ofereça suporte à funcionalidade necessária.

Se as preocupações com os custos forem um fator determinante, manter o design existente é provavelmente o mais adequado para o cenário, pois a introdução de novos serviços ou outras instâncias de um serviço de banco de dados pode adicionar novos custos líquidos e complexidade. Usar seus bancos de dados atuais para pesquisa vetorial provavelmente afeta seus custos menos do que usar um serviço dedicado.

Se você optar por usar um banco de dados tradicional em vez do AI Search, alguns recursos avançados de pesquisa não estarão disponíveis por padrão. Por exemplo, se você quiser fazer reclassificação ou pesquisa híbrida, habilite essa funcionalidade por meio do Transact-SQL (T-SQL) ou outra codificação.

Matriz de capacidades

As tabelas nesta seção resumem as principais diferenças nos recursos.

Funcionalidades básicas

O suporte nativo para tipos de dados vetoriais, índices vetoriais vizinhos aproximados (ANN), limites de dimensão vetorial, vários campos vetoriais e vários índices vetoriais às vezes é diferente entre os serviços. Sua carga de trabalho pode depender de alguns desses recursos específicos. Entenda os recursos vetoriais básicos de cada serviço do Azure, que são mostrados na tabela a seguir.

Capacidade Azure Cosmos DB for PostgreSQL Azure Cosmos DB for NoSQL Azure DocumentDB Base de Dados do Azure para PostgreSQL – Servidor Flexível Pesquisa AI Base de Dados SQL do Azure
Pesquisa vetorial integrada Sim1 Sim Sim2 Sim1 Sim3 Sim
Tipo de dados vetoriais Sim Sim Sim Sim Sim Sim8
Limites de dimensão5 16.0006 ou 2.000 5057 ou 4.096 16 000 16.0006 ou 2.000 4,096 1.998 (visualização)4
Vários campos vetoriais Sim Sim Não Sim Sim Sim
Vários índices vetoriais Sim Sim Não Sim Sim Sim
  1. O suporte para pesquisa vetorial é fornecido pela pgvector, que é uma extensão do PostgreSQL.
  2. A pesquisa vetorial em embeddings é suportada no Azure DocumentDB.
  3. AI Search suporta o uso de vetores.
  4. Os vetores podem ser armazenados em uma VARBINARY(8000) coluna ou variável no Banco de dados SQL.
  5. Os modelos de incorporação da OpenAI incluem 1.536 dimensões para text-embedding-ada-002 e text-embedding-3-small, e 3.072 dimensões para text-embedding-3-large. Os modelos de incorporação multimodal do Azure AI Vision têm 1.024 dimensões para imagem e texto.
  6. Os vetores podem ter até 16.000 dimensões. No entanto, a indexação usando algoritmos de arquivo invertido plano (IVFFlat) e mundo pequeno navegável e hierárquico (HNSW) suporta vetores com um máximo de 2.000 dimensões.
  7. Os vetores indexados usando o tipo de índice plano podem ter no máximo 505 dimensões. Os vetores indexados usando o tipo de índice quantizedFlat ou DiskANN podem ter no máximo 4.096 dimensões.
  8. O Banco de dados SQL dá suporte a um tipo de dados vetoriais.

Métodos de pesquisa

As cargas de trabalho geralmente precisam combinar a pesquisa vetorial com a pesquisa de texto completo ou até mesmo uma pesquisa híbrida, que é uma pesquisa de texto completo ou pesquisa semântica mais pesquisa vetorial. A combinação de pesquisa híbrida e reclassificação alcança alta precisão para cargas de trabalho. Você pode implementar manualmente a pesquisa híbrida e a reclassificação usando seu próprio código ou pode considerar como seu repositório de vetores suporta esse requisito de carga de trabalho.

Método de pesquisa Azure Cosmos DB for PostgreSQL Azure Cosmos DB for NoSQL Azure DocumentDB Base de Dados do Azure para PostgreSQL – Servidor Flexível Pesquisa AI Base de Dados SQL do Azure
Pesquisa de texto completo Sim1 Sim9 Sim2 Sim1 Sim3 Sim4
Pesquisa híbrida Sim5 Sim11 Sim6 Sim5 Sim7 Sim8
Reclassificação integrada Não Sim10 Não Não Sim9 Não
  1. O PostgreSQL suporta pesquisa de texto completo.
  2. O Azure DocumentDB suporta pesquisa e consulta utilizando índices de texto.
  3. A pesquisa de texto completo tem suporte no SQL Server.
  4. O SQL Server dá suporte a dados vetoriais.
  5. A pesquisa híbrida não é fornecida como um recurso de primeira classe, mas códigos de exemplo estão disponíveis.
  6. A pesquisa híbrida que combina pesquisa em texto completo e vetorial com fusão recíproca de ranks (RRF) é suportada nativamente no Azure DocumentDB.
  7. A pesquisa híbrida, que combina pesquisa de texto completo, pesquisa vetorial e classificação semântica, é fornecida como um recurso de primeira classe no Azure AI Search.
  8. Está disponível um exemplo de pesquisa híbrida para a Base de Dados SQL do Azure e o SQL Server.
  9. A classificação semântica é um recurso de primeira classe que reclassifica os resultados de pesquisas vetoriais e de texto completo.
  10. O Cosmos DB NoSQL suporta pesquisa de texto completo com pontuação de texto completo.
  11. O Cosmos DB NoSQL suporta pesquisa híbrida.

Algoritmos de indexação de dados vetoriais

A indexação de dados vetoriais é a capacidade de armazenar e recuperar vetores de forma eficiente. Esse recurso é importante porque a indexação influencia a velocidade e a precisão das pesquisas de semelhança e das consultas de vizinhos mais próximos em fontes de dados.

Os índices são normalmente baseados em um algoritmo k-vizinho mais próximo exaustivo (Ek-NN) ou no algoritmo ANN. Ek-NN faz uma pesquisa exhaustiva em todos os pontos de dados, um a um, e retorna os k vizinhos mais próximos precisos. Ek-NN funciona em milissegundos com uma pequena quantidade de dados, mas pode causar latência para grandes quantidades de dados.

DiskANN, HNSW e IVFFlat são índices de algoritmos ANN. A seleção da estratégia de indexação apropriada requer uma consideração cuidadosa de vários fatores, como a natureza do conjunto de dados, os requisitos específicos das consultas e os recursos disponíveis. O DiskANN pode se adaptar às mudanças no conjunto de dados e economizar recursos computacionais. O HNSW se destaca em sistemas que exigem respostas rápidas de consulta e podem se adaptar a mudanças no conjunto de dados. O IVFFlat é eficaz em ambientes onde os recursos de hardware são limitados ou os volumes de consulta não são altos.

A tabela a seguir mostra os tipos fornecidos de indexação de dados vetoriais.

Abordagem de indexação Azure Cosmos DB for PostgreSQL Azure Cosmos DB for NoSQL Azure DocumentDB Base de Dados do Azure para PostgreSQL – Servidor Flexível Pesquisa AI Base de Dados SQL do Azure
DiskANN Sim Sim Sim2 Sim1 Não Sim3
E-kNN Sim Sim Sim Sim Sim Sim
HNSW Sim Não Sim2 Sim Sim Não
IVFFlat Sim Não Sim Sim Não Não
Outros - Plano, quantizedFlat4 Limitação do campo vetorial5
Limitação do índice vetorial6
- - Bibliotecas externas estão disponíveis7
  1. Para mais informações, consulte DiskANN for Azure Database for PostgreSQL flexible server.
  2. Para mais informações, consulte Azure DocumentDB - Visão geral da pesquisa vetorial.
  3. A indexação vetorial baseada em DiskANN está atualmente disponível na pré-visualização privada para o Azure SQL.
  4. Para obter mais informações, consulte Políticas de indexação vetorial.
  5. Apenas um campo vetorial está disponível para cada contêiner.
  6. Apenas um índice vetorial está disponível para cada contêiner.
  7. Um índice pode ser criado usando bibliotecas externas como Scikit Learn ou FAISS.

Capacidades de cálculo de semelhança e distância

Existem métodos de cálculo de semelhança de cosseno, produto escalar, e distância euclidiana para pesquisa vetorial. Estes métodos são usados para calcular a semelhança entre dois vetores ou a distância entre dois vetores.

A análise preliminar de dados se beneficia tanto das métricas quanto das distâncias euclidianas, que permitem a extração de diferentes insights sobre a estrutura dos dados. A classificação do texto geralmente tem melhor desempenho sob distâncias euclidianas. A obtenção dos textos mais semelhantes a um determinado texto normalmente funciona melhor com a similaridade cosseno.

Os embeddings do Azure OpenAI dependem da similaridade do cosseno para calcular a semelhança entre documentos e consultas.

Cálculo de comparação vetorial integrado Azure Cosmos DB for PostgreSQL Azure Cosmos DB for NoSQL Azure DocumentDB Base de Dados do Azure para PostgreSQL – Servidor Flexível Pesquisa AI Base de Dados SQL do Azure
Semelhança de cosseno Sim Sim1 Sim Sim Sim Sim2
Distância euclidiana (distância L2) Sim Sim1 Sim Sim Sim Sim2
Produto ponto Sim Sim1 Sim Sim Sim Sim2
  1. Para obter mais informações, consulte o cálculo de distância vetorial para o Azure Cosmos DB para NoSQL.
  2. Para obter mais informações, consulte os exemplos de cálculo de distância para o Banco de Dados SQL do Azure e o SQL Server.

Integração com o Azure OpenAI e outros componentes

Ao implementar a pesquisa vetorial, você também pode considerar a vinculação com outros componentes da Microsoft. Por exemplo, o Azure OpenAI ajuda você a criar vetores para seus dados e consultas de entrada para pesquisa de semelhança vetorial.

Capacidade Azure Cosmos DB for PostgreSQL Azure Cosmos DB for NoSQL Azure DocumentDB Base de Dados do Azure para PostgreSQL – Servidor Flexível Pesquisa AI Base de Dados SQL do Azure
Azure OpenAI - adicione seus próprios dados Não Não Sim1 Não Sim2 Não
Incorporação vetorial com o Azure OpenAI Não Não Não Sim3 Sim4 Sim5
Integração com Kernel Semântico Sim6 Sim7 Sim8 Sim6 Sim9 Sim10
  1. O Azure DocumentDB é suportado como fonte de dados para Azure OpenAI sobre os seus dados.
  2. A Pesquisa AI é suportada como fonte de dados para o Azure OpenAI nos seus dados.
  3. A extensão Azure AI está disponível.
  4. AI Search fornece uma habilidade para vetorizar o texto em pedaços.
  5. Você pode criar um procedimento armazenado para a implantação do seu modelo de incorporação.
  6. Este serviço é suportado como um conector de memória e um conector de banco de dados vetorial. Para obter mais informações, consulte a documentação do C#.
  7. Este serviço é suportado como um conector de memória e um conector de banco de dados vetorial. A documentação está disponível para C# e Python.
  8. Este serviço é suportado como um conector de banco de dados vetorial. A documentação está disponível para C# e Python.
  9. Este serviço é suportado como um conector de memória e um conector de banco de dados vetorial. A documentação está disponível para C# e Python.
  10. Este serviço é suportado como um conector de memória.

Contribuidores

A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.

Principais autores:

Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.

Próximos passos