Banco de dados vetoriais
Dica
Visite nossa nova Galeria de Amostras para obter os mais recentes exemplos de aplicativos de banco de dados de vetores e padrões RAG
Os bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e gerativa, incluindo processamento de linguagem natural, reconhecimento de vídeo e imagem, sistema de recomendação e pesquisa, entre outros.
Em 2023, uma tendência impressionante no software foi a integração de aprimoramentos de IA, muitas vezes realizada ao incorporar bancos de dados de vetores autônomos especializados às pilhas de tecnologia existentes. Este artigo explica o que são bancos de dados vetoriais, bem como apresenta uma arquitetura alternativa que talvez você queira considerar: usando um banco de dados vetorial integrado no NoSQL ou banco de dados relacional que você já usa, especialmente ao trabalhar com dados multimodais. Essa abordagem não só permite reduzir o custo, mas também obter maior consistência, escalabilidade e desempenho de dados.
Dica
Consistência, escalabilidade e desempenho de dados são essenciais para aplicativos com uso intensivo de dados, razão pela qual o OpenAI optou por criar o serviço ChatGPT com base no Azure Cosmos DB. Você também pode aproveitar o banco de dados vetorial integrado, bem como os tempos de resposta de milissegundos de dígito único, a escalabilidade automática e instantânea e a velocidade garantida em qualquer escala. Consulte amostras de implementação e experimente-as gratuitamente.
O que é um banco de dados de vetores
Um banco de dados vetorial é um banco de dados projetado para armazenar e gerenciar incorporações de vetores, que são representações matemáticas de dados em um espaço altamente dimensional. Nesse espaço, cada dimensão corresponde a um recurso dos dados e dezenas de milhares de dimensões podem ser usadas para representar dados sofisticados. A posição de um vetor nesse espaço representa as características dele. Palavras, frases ou documentos inteiros e imagens, áudio e outros tipos de dados podem ser vetorizados. Essas inserções de vetor são usadas na pesquisa de similaridade, pesquisa multimodal, mecanismos de recomendações, LLMs (modelos de linguagem grande) etc.
Em um banco de dados vetorial, as inserções são indexadas e consultadas por meio de algoritmos de busca em vetores com base na distância vetorial ou similaridade. Um mecanismo robusto é necessário para identificar os dados mais relevantes. Alguns algoritmos de busca em vetores conhecidos incluem HNSW (Hierarchical Navigable Small World), IVF (Arquivo Invertido), DiskANN etc.
Banco de dados vetoriais integrado versus banco de dados vetoriais puro
Há dois tipos comuns de implementações de banco de dados vetoriais: banco de dados vetoriais puro e banco de dados vetoriais integrado em um banco de dados NoSQL ou relacional.
Um banco de dados vetoriais puro foi projetado para armazenar e gerenciar inserções vetoriais com eficiência, juntamente a uma pequena quantidade de metadados; ele é separado da fonte de dados da qual as inserções são derivadas.
Um banco de dados vetoriais integrado em um banco de dados NoSQL ou relacional de alto desempenho fornece recursos adicionais. O banco de dados vetor integrado em um banco de dados NoSQL ou relacional pode armazenar, indexar e consultar inserções junto com os dados originais correspondentes. Essa abordagem elimina o custo extra de replicação de dados em um banco de dados vetoriais puro separado. Além disso, manter as inserções de vetores e os dados originais juntos facilita as operações de dados multimodais e permite maior consistência, escala e desempenho de dados. Um banco de dados de alto desempenho com flexibilidade de esquema e banco de dados vetorial integrado é especialmente ideal para agentes de IA.
Casos de uso do banco de dados vetor
Bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e gerativa, incluindo processamento de linguagem natural, reconhecimento de vídeo e imagem, sistema de recomendação, pesquisa etc. Por exemplo, você pode usar um banco de dados de vetores para:
- identificar imagens, documentos e músicas semelhantes com base em conteúdo, temas, sentimentos e estilos
- identificar produtos semelhantes com base em características, recursos e grupos de usuários
- recomendar conteúdo, produtos ou serviços com base nas preferências dos indivíduos
- recomendar conteúdo, produtos ou serviços com base nas semelhanças dos grupos de usuários
- identificar as possíveis opções mais adequadas de um grande pool de opções para atender a requisitos complexos
- identificar anomalias de dados ou atividades fraudulentas diferentes dos padrões predominantes ou normais
- implementar memória persistente para agentes de IA
Dica
Além desses casos de uso típicos para bancos de dados vetoriais, nosso banco de dados vetorial integrado também é uma solução ideal para o cache LLM no nível de produção, graças à sua baixa latência, alta escalabilidade e alta disponibilidade.
É especialmente popular usar bancos de dados vetoriais para habilitar a RAG (geração aumentada de recuperação) que aproveita os LLMs e dados personalizados ou informações específicas do domínio. Essa abordagem permite que você:
- Gere respostas contextualmente relevantes e precisas para prompts de usuário com base em modelos de IA
- Superar os limites de tokens dos LLMs
- Reduza os custos do ajuste fino frequente em dados atualizados
Esse processo envolve extrair informações pertinentes de uma fonte de dados personalizada e integrá-las à solicitação do modelo por meio da engenharia de prompt. Antes de enviar uma solicitação ao LLM, a entrada/consulta/solicitação do usuário também é transformada em uma inserção, e técnicas de busca em vetores são empregadas para localizar as inserções mais semelhantes no banco de dados. Essa técnica habilita a identificação dos registros de dados mais relevantes no banco de dados. Em seguida, esses registros recuperados são fornecidos como entrada para a solicitação do LLM por meio da engenharia de prompt.
Conceitos relacionados ao banco de dados vetoriais
Incorporações
Uma inserção é um formato especial de representação de dados que os algoritmos e modelos de machine learning podem usar facilmente. A inserção é uma representação densa de informações do significado semântico de um texto. Cada inserção é um vetor de números de ponto flutuante, de modo que a distância entre duas inserções no espaço do vetor esteja correlacionada com a similaridade semântica entre duas entradas no formato original. Por exemplo, se dois textos forem semelhantes, suas representações de vetor também deverão ser semelhantes. Uma extensão de banco de dados de vetores que permite armazenar suas incorporações com seus dados originais garante a consistência, a escala e o desempenho dos dados. [Voltar]
Pesquisa de vetor
A pesquisa vetorial é um método que ajuda a localizar itens semelhantes com base em suas características de dados, em vez de correspondências exatas em um campo de propriedade. Essa técnica é útil em usos como pesquisa de texto semelhante, localização de imagens relacionadas, recomendações ou até mesmo detecção de anomalias. Ela funciona usando as representações de vetor (listas de números) de seus dados que você criou usando um modelo de machine learning usando uma API de incorporações como as Incorporações do OpenAI do Azure ou o Hugging Face no Azure. Em seguida, ele mede a distância entre os vetores de dados e o vetor de consulta. Os vetores de dados mais próximos do vetor de consulta são os mais semelhantes semanticamente. O uso do recurso nativo de busca em vetores oferece uma forma eficiente de armazenar, indexar e pesquisar dados vetoriais de alta dimensão diretamente, junto com outros dados do aplicativo. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e oferece uma integração perfeita dos seus aplicativos orientados por IA. [Voltar]
Prompts e engenharia de prompts
Uma solicitação refere-se a um texto ou informação específica que pode servir como instrução para um LLM ou como dados contextuais sobre os quais o LLM pode se basear. Um prompt pode assumir várias formas, como uma pergunta, uma declaração ou até mesmo um trecho de código. As solicitações podem servir como:
- Instruções fornecem diretivas para o LLM
- Conteúdo primário: fornece informações ao LLM para processamento
- Exemplos: ajudam a condicionar o modelo a uma tarefa ou processo específico
- Dicas: direcionam a saída do LLM na direção certa
- Conteúdo de suporte: representa informações suplementares que o LLM pode utilizar para gerar saída
O processo de criar bons prompts para um cenário é chamado de engenharia de prompts. Para saber mais sobre solicitações e melhores práticas de engenharia de prompt, confira as técnicas de engenharia de prompt do Serviço OpenAI do Azure. [Voltar]
Tokens
Os tokens são pequenos pedaços de texto gerados pela divisão do texto de entrada em segmentos menores. Esses segmentos podem ser palavras ou grupos de caracteres, variando em comprimento de um único caractere a uma palavra inteira. Por exemplo, a palavra hambúrguer seria dividida em tokens como ham, bur e guer, enquanto uma palavra curta e comum como pera seria considerada um único token. LLMs como ChatGPT, GPT-3.5 ou GPT-4 dividem palavras em tokens para processamento. [Voltar]
Geração aumentada de recuperação
A RAG (geração aumentada de recuperação) é uma arquitetura que aumenta os recursos de LLMs como o ChatGPT, o GPT-3.5 ou o GPT-4 adicionando um sistema de recuperação de informações como a busca em vetores que fornece dados de fundamentação, como aqueles armazenados em um banco de dados vetorial. Essa abordagem permite que seu LLM gere respostas contextualmente relevantes e precisas com base nos dados personalizados provenientes de documentos, imagens, áudio e vídeo vetorizados.
Um padrão simples de RAG utilizando o Azure Cosmos DB for NoSQL poderia ser:
- Registrar-se na versão prévia do Índice de Vetores NoSQL do Azure Cosmos DB
- Configure um banco de dados e um contêiner com uma política de vetor de contêiner e um índice de vetor.
- Inserir dados em um banco de dados e contêiner do Azure Cosmos DB para NoSQL
- Criar incorporações a partir de uma propriedade de dados utilizando as incorporações do OpenAI do Azure
- Vincule o Azure Cosmos DB para NoSQL.
- Criar um índice vetorial sobre as propriedades de incorporação
- Criar uma função para realizar uma pesquisa de similaridade de vetores com base em uma solicitação do usuário
- Realizar respostas a perguntas sobre os dados utilizando um modelo de Conclusões do OpenAI do Azure
O padrão de RAG, com engenharia de prompts, serve ao propósito de melhorar a qualidade da resposta, oferecendo mais informações contextuais ao modelo. A RAG habilita o modelo a aplicar uma base de conhecimento mais ampla ao incorporar fontes externas relevantes no processo de geração, resultando em respostas mais abrangentes e informadas. Para obter mais informações sobre os LLMs de "fundamentação", consulte LLMs de fundamentação. [Voltar]
Veja abaixo várias maneiras de implementar a RAG nos dados usando nossas funcionalidades do banco de dados vetorial integrado:
Como implementar as funcionalidades do banco de dados vetorial integrado
Você pode implementar as funcionalidades do banco de dados vetorial integrado para as seguintes APIs do Azure Cosmos DB:
API NoSQL
O Azure Cosmos DB para NoSQL é o primeiro banco de dados de vetor NoSQL sem servidor do mundo. Armazene seus vetores e dados juntos no Azure Cosmos DB para NoSQL com funcionalidades integradas de banco de dados vetor em que você pode criar um índice de vetor com base em DiskANN, um conjunto de algoritmos de indexação de vetor de alto desempenho desenvolvidos pela Microsoft Research.
O DiskANN permite que você realize consultas altamente precisas e de baixa latência em qualquer escala e, ao mesmo tempo, aproveite todos os benefícios do Azure Cosmos DB para NoSQL, como SLA de 99,999% (com HA habilitado), replicação geográfica, transição perfeita de sem servidor para taxa de transferência provisionada (RU), tudo em um único armazenamento de dados.
Links e exemplos
- Qual é o banco de dados por trás do ChatGPT? – Mecânica da Microsoft
- Indexação de vetor no Azure Cosmos DB para NoSQL
- Consultas NoSQL da função do sistema VectorDistance
- Como configurar recursos de banco de dados vetor no NoSQL do Azure Cosmos DB
- Python: Tutorial de notebook
- C#: Crie seu próprio acelerador de solução completa de Copilot com AKS e kernel semântico
- C#: Criar sua própria amostra de aplicativo de Copilot e laboratório prático
- Python: Chatbot de Filme
Azure Cosmos DB for MongoDB
Use o banco de dados de vetor integrado nativamente no Azure Cosmos DB for MongoDB (arquitetura vCore), que oferece uma maneira eficiente de armazenar, indexar e pesquisar dados de vetor de alta dimensão diretamente junto com outros dados do aplicativo. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e oferece uma integração perfeita dos seus aplicativos orientados por IA.
Exemplos de código
- Criar seu próprio Copilot para Azure Cosmos DB for MongoDB em C# com kernel semântico
- Tutorial do .NET: chatbot de receitas
- Padrão RAG em C# – Integrar o OpenAI Services ao Cosmos
- Padrão de RAG do Python – Chatbot de produto do Azure
- Notebook do Python: Tutorial de integração com o banco de dados vetorial por meio do LangChain
- Notebook Python: Tutorial de integração com o Armazenamento em Cache de LLM por meio do LangChain
- Python - Integração com o LlamaIndex
- Python – Integração com a memória do Kernel semântico
- Notebook do Python: Chatbot de Filme
API para PostgreSQL
Use o banco de dados vetorial integrado nativamente no Azure Cosmos DB for PostgreSQL, que oferece uma forma eficiente de armazenar, indexar e pesquisar dados vetoriais de alta dimensão diretamente, junto com outros dados do aplicativo. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e oferece uma integração perfeita dos seus aplicativos orientados por IA.
Exemplo de código
Soluções de banco de dados vetor
Conteúdo relacionado
- Avaliação gratuita de 30 dias sem uma assinatura do Azure
- 90 dias de avaliação gratuita e até US$ 6.000 em créditos de taxa de transferência com o Azure AI Advantage