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:
- Azure AI Search
- Azure Cosmos DB para NoSQL
- Azure Cosmos DB para MongoDB (vCore)
- 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
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 |
- "pgvector" suporta pesquisa vetorial, que é a extensão do PostgreSQL.
- Usar a pesquisa vetorial em incorporações no Azure Cosmos DB para MongoDB vCore
- Vetores na Pesquisa de IA do Azure
- A pesquisa vetorial nativa está disponível com a visualização antecipada do Banco de Dados SQL do Azure
- Os vetores podem ser armazenados em uma coluna ou variável VARBINARY(8000).
- 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.
- Os vetores podem ter até 16.000 dimensões. Mas o índice usando "IVFFlat" e "HNSW" suporta vetores com até 2.000 dimensões.
- 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.
- 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 |
- Pesquisa de texto completo PostgreSQL
- Pesquisar e consultar com índices de texto no Azure Cosmos DB para MongoDB vCore
- Introdução à Pesquisa de Texto Completo
- Dados vetoriais no SQL Server
- Não é fornecido como um recurso de primeira classe, mas códigos de exemplo são fornecidos.
- 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.
- Exemplo de pesquisa híbrida para o banco de dados SQL do Azure e o SQL Server.
- 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 |
- Azure Cosmos DB para MongoDB - Visão geral da pesquisa vetorial
- Políticas de indexação vetorial
- Apenas um campo vetorial está disponível por contêiner.
- Apenas um índice vetorial está disponível por contêiner.
- 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 |
- Cálculo de distância vetorial para o Azure Cosmos DB para NoSQL.
- 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 |
- O Azure Cosmos DB para MongoDB (vCore) tem suporte como uma fonte de dados para o Azure OpenAI em seus dados.
- O Azure AI Search tem suporte como uma fonte de dados para o Azure OpenAI em seus dados.
- A Extensão de IA do Azure (visualização) está disponível.
- O Azure AI Search fornece uma habilidade para vetorizar o texto em partes.
- Você pode criar um procedimento armazenado para sua implantação de modelo de incorporação.
- Suportado como um banco de dados vetorial na ferramenta Vetor DB Lookup .
- Suportado como um conector de memória e um conector de banco de dados vetorial (C#).
- Suportado como um conector de memória e um conector de banco de dados vetorial (C#, Python).
- Suportado como um conector de banco de dados vetorial (C#, Python).
- Suportado como um conector de memória e um conector de banco de dados vetorial (C#, Python).
- Suportado como um conector de memória.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Keita Onabuta - Brasil | Engenheiro de Clientes Sênior
- Gary Lee - Brasil | Engenheiro de Clientes Sênior
Outros contribuidores:
- Kruti Mehta - Brasil | Engenheiro de Clientes
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.
Recursos relacionados
- Compreender os modelos de armazenamento de dados
- Opções de tecnologia para soluções do Azure
- Anunciando o EAP para suporte a vetores no Banco de Dados SQL do Azure
- Suporte a vetores nativos no SQL do Azure e no SQL Server
- Banco de dados vetorial no Azure Cosmos DB
- Apresentando recursos de banco de dados vetorial no Azure Cosmos DB para NoSQL
- Pesquisa vetorial no Azure Cosmos DB para NoSQL
- Exemplos de banco de dados vetorial do Azure