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 oferecem resultados mais rápidos e precisos, compreendendo as relações semânticas dentro das informações.

O Azure oferece 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.

Ao decidir se deseja usar uma solução de banco de dados tradicional ou o serviç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, usar seu banco de dados existente pode ser a melhor solução para você atingir suas metas de desempenho. Por outro lado, se sua carga de trabalho não exigir pesquisa vetorial em tempo real ou quase em tempo real, e você aceitar gerenciar um índice de vetores, a Pesquisa de IA pode ser uma escolha atraente.

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 de vizinho mais próximo aproximado (ANN), limites de dimensão vetorial, vários campos vetoriais e vários índices vetoriais às vezes são diferentes entre os serviços. Seus requisitos de carga de trabalho podem exigir alguns desses recursos específicos. Entenda os recursos vetoriais básicos de cada serviço do Azure, conforme mostrado na tabela a seguir.

Funcionalidade Azure Cosmos DB para PostgreSQL Azure Cosmos DB para NoSQL Azure Cosmos DB para MongoDB (vCore) Banco de Dados do Azure para PostgreSQL (Flex) Pesquisa de IA do Azure Base de Dados SQL do Azure
Pesquisa vetorial integrada Sim 1 Sim Sim 2 Sim 1 Sim 3 Sim 4
Tipo de dados vetoriais Sim Sim Sim Sim Sim Sim 9
Limites de dimensão 6 16.000 7 ou 2000 5058 ou 4096 2.000 16.000 7 ou 2000 3,072 1998 (pré-visualização)5
Vários campos vetoriais Sim Sim No Sim Sim Sim
Vários índices vetoriais Sim Sim No Sim Sim Sim
  1. "pgvector" suporta pesquisa vetorial, que é a extensão do PostgreSQL.
  2. Usar a pesquisa vetorial em incorporações no Azure Cosmos DB para MongoDB vCore
  3. Vetores na Pesquisa de IA do Azure
  4. A pesquisa vetorial nativa está disponível com a visualização antecipada do Banco de Dados SQL do Azure
  5. Os vetores podem ser armazenados em uma coluna ou variável VARBINARY(8000).
  6. Modelos de incorporação da OpenAI, 1536 para text-embedding-ada-002 e text-embedding-3-small, e 3072 para text-embedding-3-large. Para modelos de incorporação multimodal do Azure AI Vision, 1024 para imagem e texto.
  7. Os vetores podem ter até 16.000 dimensões. Mas o índice usando "IVFFlat" e "HNSW" suporta vetores com até 2.000 dimensões.
  8. Os vetores indexados com o tipo de índice plano podem ter no máximo 505 dimensões. Os vetores indexados com o tipo de índice quantizedFlat ou DiskANN podem ter no máximo 4.096 dimensões.
  9. Banco de dados SQL 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 (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 com 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 para PostgreSQL Azure Cosmos DB para NoSQL Azure Cosmos DB para MongoDB (vCore) Banco de Dados do Azure para PostgreSQL (Flex) Pesquisa de IA do Azure Base de Dados SQL do Azure
Pesquisa em texto completo Sim 1 No Sim 2 Sim 1 Sim 3 Sim 4
Pesquisa híbrida Sim 5 No No Sim 5 Sim 6 Sim 7
Reclassificação integrada No No No No Sim 8 No
  1. Pesquisa de texto completo PostgreSQL
  2. Pesquisar e consultar com índices de texto no Azure Cosmos DB para MongoDB vCore
  3. Introdução à Pesquisa de Texto Completo
  4. Dados vetoriais no SQL Server
  5. Não é fornecido como um recurso de primeira classe, mas códigos de exemplo são fornecidos.
  6. A pesquisa híbrida (combinação de pesquisa de texto completo, pesquisa vetorial e classificação semântica) é fornecida como um recurso de primeira classe.
  7. Exemplo de pesquisa híbrida para o banco de dados SQL do Azure e o SQL Server.
  8. A reclassificação chamada Classificação Semântica é um recurso de primeira classe para reclassificar o resultado da pesquisa de texto completo e/ou pesquisa vetorial.

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 vizinho k-nearest exaustivo (Ek-NN) ou um algoritmo ANN. Ek-NN faz uma pesquisa exaustiva em todos os pontos de dados, um a um, e retorna os vizinhos mais próximos de K 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 envolve 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.

Entenda quais tipos de indexação de dados vetoriais são fornecidos na tabela a seguir.

Abordagem de indexação Azure Cosmos DB para PostgreSQL Azure Cosmos DB para NoSQL Azure Cosmos DB para MongoDB (vCore) Banco de Dados do Azure para PostgreSQL (Flex) Pesquisa de IA do Azure Base de Dados SQL do Azure
DiskANN No Sim No No No No
Vizinho exaustivo K mais próximo (EKNN) Sim Sim Sim Sim Sim Sim
Pequeno Mundo Navegável Hierárquico (HNSW) Sim No Sim (pré-visualização)1 Sim Sim No
IVFflat Sim No Sim Sim No No
Outros - plano, quantizedFlat2 Limitação do campo vetorial 3
Limitação do índice vetorial 4
- - Bibliotecas externas estão disponíveis5
  1. Azure Cosmos DB para MongoDB - Visão geral da pesquisa vetorial
  2. Políticas de indexação vetorial
  3. Apenas um campo vetorial está disponível por contêiner.
  4. Apenas um índice vetorial está disponível por contêiner.
  5. O índice pode ser criado com o auxílio de bibliotecas externas como Scikit Learn ou FAISS

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

Existem métodos de cálculo de distância cosina similar, produto Dot e euclidiano 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 de métricas quanto de distâncias euclidianas, que permitem a extração de diferentes perceções sobre a estrutura de dados, enquanto a classificação de texto geralmente tem melhor desempenho sob distâncias euclidianas. A recuperação dos textos mais semelhantes a um determinado texto normalmente funciona melhor com a semelhança cosseno.

As incorporações do Serviço OpenAI do Azure dependem da semelhança cosseno para calcular a semelhança entre documentos e uma consulta.

Cálculo de comparação vetorial integrado Azure Cosmos DB para PostgreSQL Azure Cosmos DB para NoSQL Azure Cosmos DB para MongoDB (vCore) Banco de Dados do Azure para PostgreSQL (Flex) Pesquisa de IA do Azure Base de Dados SQL do Azure
Semelhança de cosseno Sim Sim1 Sim Sim Sim Sim 2
Distância euclidiana (distância L2) Sim Sim1 Sim Sim Sim Sim 2
Produto ponto Sim Sim1 Sim Sim Sim Sim 2
  1. Cálculo de distância vetorial para o Azure Cosmos DB para NoSQL.
  2. 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 Serviço OpenAI do Azure ajuda você a criar vetores para seus dados e consultas de entrada para pesquisa de semelhança vetorial.

Funcionalidade Azure Cosmos DB para PostgreSQL Azure Cosmos DB para NoSQL Azure Cosmos DB para MongoDB (vCore) Banco de Dados do Azure para PostgreSQL (Flex) Pesquisa de IA do Azure Base de Dados SQL do Azure
Azure OpenAI Service - adicione seus próprios dados No No Sim 1 No Sim 2 No
Incorporação vetorial com o Azure OpenAI No No No Sim 3 Sim 4 Sim 5
Integração com fluxo imediato No No No No Sim 6 No
Integração com Kernel Semântico Sim 7 Sim 8 Sim 9 Sim 7 Sim 10 Sim 11
  1. O Azure Cosmos DB para MongoDB (vCore) tem suporte como uma fonte de dados para o Azure OpenAI em seus dados.
  2. O Azure AI Search tem suporte como uma fonte de dados para o Azure OpenAI em seus dados.
  3. A Extensão de IA do Azure (visualização) está disponível.
  4. O Azure AI Search fornece uma habilidade para vetorizar o texto em partes.
  5. Você pode criar um procedimento armazenado para sua implantação de modelo de incorporação.
  6. Suportado como um banco de dados vetorial na ferramenta Vetor DB Lookup .
  7. Suportado como um conector de memória e um conector de banco de dados vetorial (C#).
  8. Suportado como um conector de memória e um conector de banco de dados vetorial (C#, Python).
  9. Suportado como um conector de banco de dados vetorial (C#, Python).
  10. Suportado como um conector de memória e um conector de banco de dados vetorial (C#, Python).
  11. Suportado como um conector de memória.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximo passo

Implemente a mineração de conhecimento com o Azure AI Search. Este caminho de aprendizagem explora como usar o Azure AI Search.