Escolher um serviço do Azure para busca em vetores
A busca em vetores é 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 dos métodos tradicionais de pesquisa que se baseiam em palavras-chave. Eles trazem resultados mais rápidos e precisos por meio do conhecimento das relações semânticas que estão na informação.
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 busca em vetores para seu aplicativo.
Este artigo compara os seguintes serviços com base em seus recursos de busca em vetores:
- Azure AI Search
- Azure Cosmos DB para NoSQL
- Azure Cosmos DB for MongoDB (vCore)
- Azure Cosmos DB para PostgreSQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
Arquitetos e desenvolvedores devem comparar os serviços disponíveis da perspectiva dos requisitos do sistema em Escolher um serviço candidato e na matriz de capacidade.
Escolher um serviço candidato
Esta seção ajuda você a escolher os serviços mais adequados para suas necessidades. Para restringir as opções, comece considerando os requisitos do sistema.
Requisitos de chave
Ao decidir se quer usar uma solução de banco de dados tradicional ou o serviço Pesquisa de IA do Azure, considere seus requisitos e se você pode executar busca em vetores ao vivo ou em tempo real em seus dados. Um banco de dados relacional ou NoSQL tradicional é o melhor para 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 performance. Por outro lado, se a sua carga de trabalho não exigir capacidade de busca em vetores em tempo real ou quase em tempo real e você aceitar o gerenciamento de um índice de vetores, a Pesquisa de IA pode ser uma opção 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. Conforme mostrado na seção Matriz de capacidade, cada serviço de banco de dados tem alguns recursos e limitações exclusivos para busca em vetores. Revise essas informações para garantir que seu tipo de banco de dados preferencial ofereça suporte à funcionalidade necessária.
Se as preocupações com custos forem um fator determinante, manter o design existente provavelmente será melhor 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 e complexidade. Usar seus bancos de dados atuais para busca em vetores provavelmente afeta seus custos menos do que usar um serviço dedicado.
Se você optar por usar um banco de dados tradicional em vez da Pesquisa de IA, alguns recursos de pesquisa avançada 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 funcionalidades
As tabelas nesta seção resumem as principais diferenças em funcionalidades.
Recursos básicos
Às vezes, o suporte nativo para tipos de dados vetoriais, vizinho mais próximo aproximado (ANN), índices vetoriais, limites de dimensão vetorial, vários campos vetoriais e diversos índices vetoriais, é diferente entre os serviços. Seus requisitos de carga de trabalho podem exigir alguns desses recursos específicos. Entenda os recursos básicos de vetor 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 for MongoDB (vCore) | Banco de Dados do Azure para PostgreSQL (Flex) | Azure AI Search | Banco de Dados SQL do Azure |
---|---|---|---|---|---|---|
Busca em vetores integrada | Sim 1 | Sim | Sim 2 | Sim 1 | Sim 3 | Sim 4 |
Tipo de dados vetoriais | Sim | Sim | Sim | Sim | Sim | No |
Limites de dimensão 6 | 16.000 7 ou 2000 | 5058 ou 4096 | 2\.000 | 16.000 7 ou 2000 | 3.072 | 1998 (visualização)5 |
Vários campos vetoriais | Sim | Sim | Não | Sim | Sim | Sim |
Múltiplos índices vetoriais | Sim | Sim | Não | Sim | Sim | Sim |
- "pgvector" suporta busca em vetores, que é a extensão do PostgreSQL.
- Use a busca em vetores em inserções no Azure Cosmos DB for MongoDB (vCore).
- Vetores na Pesquisa de IA do Azure
- A pesquisa vetorial nativa está disponível com a visualização do Early adopter do Banco de Dados SQL do Azure
- Os vetores podem ser armazenados em uma coluna ou variável VARBINARY(8000).
- Modelos de incorporação do 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.
Métodos de pesquisa
As cargas de trabalho geralmente precisam combinar busca em vetores com busca de texto completo ou até mesmo uma busca híbrida (pesquisa de texto completo ou pesquisa semântica mais busca em vetores). 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 vetorial oferece suporte a esse requisito de carga de trabalho.
Método Search | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Banco de Dados do Azure para PostgreSQL (Flex) | Azure AI Search | Banco de Dados SQL do Azure |
---|---|---|---|---|---|---|
Pesquisa de texto completo | Sim 1 | Não | Sim 2 | Sim 1 | Sim 3 | Sim 4 |
Pesquisa híbrida | Sim 5 | Não | No | Sim 5 | Sim 6 | Sim 7 |
Reclassificação integrada | Não | No | No | No | Sim 8 | Não |
- Pesquisa de texto completo PostgreSQL
- Pesquisar e consultar com índices de texto no Azure Cosmos DB for MongoDB (vCore).
- Introdução a 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, busca em vetores 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 da busca em vetores.
Algoritmos de indexação de dados vetoriais
A indexação de dados vetoriais é a capacidade de armazenar e recuperar vetores com eficiência. Esse recurso é importante porque a indexação influencia a velocidade e a precisão das pesquisas de similaridade e das consultas de vizinhos mais próximos nas fontes de dados.
Os índices são tipicamente baseados em um K-Vizinho Mais Próximo (Ek-NN) ou um algoritmo ANN. O Ek-NN faz uma pesquisa exaustiva em todos os pontos de dados, um a um, e retorna os K-Vizinhos Mais Próximos. O 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 como índices de algoritmo 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 for MongoDB (vCore) | Banco de Dados do Azure para PostgreSQL (Flex) | Azure AI Search | Banco de Dados SQL do Azure |
---|---|---|---|---|---|---|
DiskANN | Não | Sim | Não | No | No | No |
K-Vizinhos Mais Próximos (EKNN) exaustivo | Sim | Sim | Sim | Sim | Sim | Sim |
HNSW (Hierarchical Navigable Small World) | Sim | No | Sim (visualização)1 | Sim | Sim | No |
IVFflat | Sim | Não | Sim | Sim | Não | 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 for MongoDB - Visão geral da busca em vetores
- 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
Recursos de cálculo de similaridade e distância
Existem métodos de cálculo de Similaridade de Cosseno, Produto de Ponto e Distância Euclidiana para busca em vetores. Esses métodos são usados para calcular a similaridade 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, 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 similaridade de cosseno.
As inserções do Serviço OpenAI do Azure dependem da similaridade de cosseno para calcular a similaridade 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 for MongoDB (vCore) | Banco de Dados do Azure para PostgreSQL (Flex) | Azure AI Search | Banco de Dados SQL do Azure |
---|---|---|---|---|---|---|
Similaridade de cosseno | Sim | Sim1 | Sim | Sim | Sim | Sim 2 |
Distância euclidiana (distância L2) | Sim | Sim1 | Sim | Sim | Sim | Sim 2 |
Produto de Ponto | Sim | Sim1 | Sim | Sim | Sim | Sim 2 |
- Cálculo de distância vetorial para o Azure Cosmos DB for NoSQL.
- Exemplos de cálculo de distância para Azure SQL database e SQL Server.
Integração com o Azure OpenAI e outros componentes
Ao implementar a busca em vetores, 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 similaridade vetorial.
Funcionalidade | Azure Cosmos DB para PostgreSQL | Azure Cosmos DB para NoSQL | Azure Cosmos DB for MongoDB (vCore) | Banco de Dados do Azure para PostgreSQL (Flex) | Azure AI Search | Banco de Dados SQL do Azure |
---|---|---|---|---|---|---|
Serviço OpenAI do Azure - adicione seus próprios dados | Não | No | Sim 1 | Não | Sim 2 | Não |
Incorporação vetorial com o Azure OpenAI | Não | No | No | Sim 3 | Sim 4 | Sim 5 |
Integração com prompt flow | Não | No | No | No | Sim 6 | Não |
Integração com Kernel Semântico | Sim 7 | Sim8 | Sim9 | Sim 7 | Sim 10 | Sim 11 |
- O Azure Cosmos DB for MongoDB (vCore) tem suporte como uma fonte de dados para o Azure OpenAI em seus dados.
- A Pesquisa de IA do Azure 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.
- A Pesquisa de IA do Azure fornece uma habilidade para vetorizar o texto em partes.
- Você pode criar um procedimento armazenado para a implantação do modelo de incorporação.
- Suportado como um banco de dados vetorial na ferramenta Vector 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.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Principais autores:
- Keita Onabuta | Engenheiro de Clientes Sênior
- Gary Lee | Engenheiro de Clientes Sênior
Outros colaboradores:
- Kruti Mehta | Engenheiro de Clientes
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próxima etapa
Implementar a mineração de conhecimento com a Pesquisa de IA do Azure. Este roteiro de aprendizagem explora como usar a Pesquisa de IA do Azure.
Recursos relacionados
- Entenda os modelos de armazenamento de dados
- Opções de tecnologia para soluções do Azure
- Anunciando o EAP para suporte vetorial 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 vetoriais no Azure Cosmos DB for NoSQL
- Pesquisa vetorial no Azure Cosmos DB for NoSQL
- Exemplos de banco de dados vetorial do Azure