Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
- Azure AI Search
- Azure Cosmos DB para NoSQL
- Azure DocumentDB
- Azure Cosmos DB para PostgreSQL
- Base de Dados do Azure para PostgreSQL
- Base de Dados SQL do Azure
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
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 |
-
O suporte para pesquisa vetorial é fornecido pela
pgvector, que é uma extensão do PostgreSQL. - A pesquisa vetorial em embeddings é suportada no Azure DocumentDB.
- AI Search suporta o uso de vetores.
-
Os vetores podem ser armazenados em uma
VARBINARY(8000)coluna ou variável no Banco de dados SQL. - 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.
- 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.
- 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.
- 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 |
- O PostgreSQL suporta pesquisa de texto completo.
- O Azure DocumentDB suporta pesquisa e consulta utilizando índices de texto.
- A pesquisa de texto completo tem suporte no SQL Server.
- O SQL Server dá suporte a dados vetoriais.
- A pesquisa híbrida não é fornecida como um recurso de primeira classe, mas códigos de exemplo estão disponíveis.
- 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.
- 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.
- Está disponível um exemplo de pesquisa híbrida para a Base de Dados SQL do Azure e o SQL Server.
- A classificação semântica é um recurso de primeira classe que reclassifica os resultados de pesquisas vetoriais e de texto completo.
- O Cosmos DB NoSQL suporta pesquisa de texto completo com pontuação de texto completo.
- 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 |
- Para mais informações, consulte DiskANN for Azure Database for PostgreSQL flexible server.
- Para mais informações, consulte Azure DocumentDB - Visão geral da pesquisa vetorial.
- A indexação vetorial baseada em DiskANN está atualmente disponível na pré-visualização privada para o Azure SQL.
- Para obter mais informações, consulte Políticas de indexação vetorial.
- Apenas um campo vetorial está disponível para cada contêiner.
- Apenas um índice vetorial está disponível para cada contêiner.
- 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 |
- Para obter mais informações, consulte o cálculo de distância vetorial para o Azure Cosmos DB para NoSQL.
- 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 |
- O Azure DocumentDB é suportado como fonte de dados para Azure OpenAI sobre os seus dados.
- A Pesquisa AI é suportada como fonte de dados para o Azure OpenAI nos seus dados.
- A extensão Azure AI está disponível.
- AI Search fornece uma habilidade para vetorizar o texto em pedaços.
- Você pode criar um procedimento armazenado para a implantação do seu modelo de incorporação.
- 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#.
- 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.
- Este serviço é suportado como um conector de banco de dados vetorial. A documentação está disponível para C# e Python.
- 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.
- 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:
- Keita Onabuta | Engenheiro de Soluções Sénior
- Yu Saito | Engenheiro de Soluções
Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.
Próximos passos
- Implemente a mineração de conhecimento usando a Pesquisa de IA
- Aplicação inteligente e IA
- Pesquisa de semelhança vetorial usando o Azure SQL e o Azure OpenAI
- Suporte a vetores nativos no SQL do Azure e no SQL Server
- Banco de dados vetorial no Azure Cosmos DB
- Exemplos de banco de dados vetorial do Azure