Banco de dados vetorial
Gorjeta
Visite nossa nova Galeria de Amostras para obter as mais recentes amostras de banco de dados vetoriais e aplicativos de padrão RAG
APLICA-SE A: NoSQL MongoDB vCore PostgreSQL
Os bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e generativa, incluindo processamento de linguagem natural, reconhecimento de vídeo e imagem, sistema de recomendação e pesquisa, entre outros.
Em 2023, uma tendência notável em software foi a integração de melhorias de IA, muitas vezes alcançadas pela incorporação de bancos de dados vetoriais autônomos especializados em pilhas de tecnologia existentes. Este artigo explica o que são bancos de dados vetoriais e apresenta uma arquitetura alternativa que você pode querer considerar: usar um banco de dados vetorial integrado no banco de dados NoSQL ou relacional que você já usa, especialmente ao trabalhar com dados multimodais. Essa abordagem não só permite reduzir custos, mas também obter maior consistência, escalabilidade e desempenho de dados.
Gorjeta
A consistência, a escalabilidade e o desempenho dos dados são essenciais para aplicativos com uso intensivo de dados, e é por isso que a OpenAI escolheu criar o serviço ChatGPT sobre o Azure Cosmos DB. Você também pode aproveitar seu banco de dados vetorial integrado, bem como seus tempos de resposta de milissegundos de um dígito, escalabilidade automática e instantânea e velocidade garantida em qualquer escala. Veja exemplos de implementação e experimente-os gratuitamente.
O que é um banco de dados vetorial?
Um banco de dados vetorial é um banco de dados projetado para armazenar e gerenciar incorporações vetoriais, que são representações matemáticas de dados em um espaço de alta dimensão. Neste espaço, cada dimensão corresponde a uma característica dos dados, e dezenas de milhares de dimensões podem ser usadas para representar dados sofisticados. A posição de um vetor neste espaço representa suas características. Palavras, frases ou documentos inteiros, imagens, áudio e outros tipos de dados podem ser vetorizados. Estas incorporações vetoriais são usadas na pesquisa de similaridade, pesquisa multimodal, motores de recomendações, modelos de grandes idiomas (LLMs), etc.
Em um banco de dados vetorial, as incorporações são indexadas e consultadas por meio de algoritmos de pesquisa vetorial com base em sua distância vetorial ou similaridade. É necessário um mecanismo sólido para identificar os dados mais relevantes. Alguns algoritmos de pesquisa vetorial bem conhecidos incluem Hierarchical Navigable Small World (HNSW), Inverted File (IVF), DiskANN, etc.
Banco de dados vetorial integrado vs banco de dados vetorial puro
Existem dois tipos comuns de implementações de banco de dados vetorial - banco de dados vetorial puro e banco de dados vetorial integrado em um banco de dados NoSQL ou relacional.
Um banco de dados vetorial puro é projetado para armazenar e gerenciar eficientemente incorporações vetoriais, juntamente com uma pequena quantidade de metadados; ele é separado da fonte de dados da qual as incorporações são derivadas.
Um banco de dados vetorial integrado em um banco de dados NoSQL ou relacional de alto desempenho fornece recursos adicionais. O banco de dados vetorial integrado em um banco de dados NoSQL ou relacional pode armazenar, indexar e consultar incorporações ao lado dos dados originais correspondentes. Essa abordagem elimina o custo extra de replicar dados em um banco de dados vetorial puro separado. Além disso, manter as incorporações vetoriais e os dados originais juntos facilita melhor as operações de dados multimodais e permite maior consistência, escala e desempenho dos 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 de banco de dados vetorial
Os bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e generativa, 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 vetorial para:
- identificar imagens, documentos e músicas semelhantes com base em seus conteúdos, temas, sentimentos e estilos
- identificar produtos semelhantes com base em suas características, recursos e grupos de usuários
- recomendar conteúdos, produtos ou serviços com base nas preferências individuais
- recomendar conteúdos, produtos ou serviços com base nas semelhanças dos grupos de utilizadores
- identificar as opções potenciais mais adequadas a partir de um grande conjunto 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
Gorjeta
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 cache LLM em 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 geração aumentada de recuperação (RAG) que aproveita LLMs e dados personalizados ou informações específicas do domínio. Esta abordagem permite-lhe:
- Gere respostas contextualmente relevantes e precisas às solicitações do usuário a partir de modelos de IA
- Supere 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 de engenharia imediata. Antes de enviar uma solicitação para o LLM, a entrada/consulta/solicitação do usuário também é transformada em uma incorporação, e técnicas de pesquisa vetorial são empregadas para localizar as incorporações mais semelhantes dentro do banco de dados. Esta técnica permite identificar os registos de dados mais relevantes na base de dados. Esses registros recuperados são então fornecidos como entrada para a solicitação LLM usando engenharia imediata.
Conceitos relacionados ao banco de dados vetorial
Incorporações
Uma incorporação é um formato especial de representação de dados que modelos e algoritmos de aprendizado de máquina podem usar facilmente. A incorporação é uma representação densa de informação do significado semântico de um pedaço de texto. Cada incorporação é um vetor de números de vírgula flutuante, de tal forma que a distância entre duas incorporações no espaço vetorial está correlacionada com a semelhança semântica entre duas entradas no formato original. Por exemplo, se dois textos são semelhantes, então suas representações vetoriais também devem ser semelhantes. Uma extensão de banco de dados vetorial que permite armazenar suas incorporações com seus dados originais garante consistência, escala e desempenho dos dados. [Voltar]
Pesquisa vetorial
A pesquisa vetorial é um método que ajuda você a encontrar itens semelhantes com base em suas características de dados, em vez de correspondências exatas em um campo de propriedade. Esta técnica é útil em aplicações como procurar texto semelhante, encontrar imagens relacionadas, fazer recomendações ou até mesmo detetar anomalias. Ele funciona usando as representações vetoriais (listas de números) de seus dados que você criou usando um modelo de aprendizado de máquina usando uma API de incorporação, como o Azure OpenAI Embeddings ou o Hugging Face on 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 de um recurso de pesquisa vetorial nativo oferece uma maneira eficiente de armazenar, indexar e pesquisar dados vetoriais de alta dimensão diretamente ao lado de outros dados de aplicativos. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e fornece uma integração perfeita de seus aplicativos orientados por IA. [Voltar]
Prompts e engenharia de prompt
Um prompt refere-se a um texto ou informação específica que pode servir como uma instrução para um LLM, ou como dados contextuais nos quais o LLM pode se basear. Um prompt pode assumir várias formas, como uma pergunta, uma instrução ou até mesmo um trecho de código. Os prompts podem servir como:
- As instruções fornecem diretrizes para o LLM
- Conteúdo primário: fornece informações ao LLM para processamento
- Exemplos: ajudar a condicionar o modelo a uma tarefa ou processo específico
- Cues: direcione a saída do LLM na direção certa
- Conteúdo de suporte: representa informações suplementares que o LLM pode usar para gerar resultados
O processo de criação de bons prompts para um cenário é chamado de engenharia de prompt. Para obter mais informações sobre prompts e práticas recomendadas para engenharia de prompts, consulte 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 para uma palavra inteira. Por exemplo, a palavra hambúrguer seria dividida em fichas como presunto, bur e ger, 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 por recuperação
A geração aumentada de recuperação (RAG) é uma arquitetura que aumenta os recursos de LLMs como ChatGPT, GPT-3.5 ou GPT-4, adicionando um sistema de recuperação de informações como a pesquisa vetorial que fornece dados de aterramento, como aqueles armazenados em um banco de dados vetoriais. Essa abordagem permite que seu LLM gere respostas contextualmente relevantes e precisas com base em seus dados personalizados provenientes de documentos vetorizados, imagens, áudio, vídeo, etc.
Um padrão RAG simples usando o Azure Cosmos DB para NoSQL pode ser:
- Inscrever-se na visualização 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 usando o Azure OpenAI Embeddings
- Vincule o Azure Cosmos DB para NoSQL.
- Criar um índice de vetor sobre as propriedades de incorporação
- Criar uma função para executar a pesquisa de semelhança vetorial com base em um prompt do usuário
- Executar respostas a perguntas sobre os dados usando um modelo de Conclusão do OpenAI do Azure
O padrão RAG, com engenharia rápida, serve o propósito de melhorar a qualidade da resposta, oferecendo mais informações contextuais ao modelo. O RAG permite que o modelo aplique uma base de conhecimento mais ampla, incorporando fontes externas relevantes no processo de geração, resultando em respostas mais abrangentes e informadas. Para obter mais informações sobre LLMs de "aterramento", consulte LLMs de aterramento. [Voltar]
Aqui estão várias maneiras de implementar o RAG em seus dados usando nossas funcionalidades integradas de banco de dados vetorial:
Como implementar funcionalidades integradas de banco de dados vetorial
Você pode implementar funcionalidades integradas de banco de dados vetorial para as seguintes APIs do Azure Cosmos DB:
NoSQL API
O Azure Cosmos DB para NoSQL é o primeiro banco de dados vetorial NoSQL sem servidor do mundo. Armazene seus vetores e dados juntos no Azure Cosmos DB para NoSQL com recursos de banco de dados vetorial integrados, onde você pode criar um índice vetorial com base no DiskANN, um conjunto de algoritmos de indexação vetorial de alto desempenho desenvolvido pela Microsoft Research.
O DiskANN permite que você execute consultadores altamente precisos e de baixa latência em qualquer escala, aproveitando 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 taxa de transferência 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 Microsoft
- Indexação vetorial no Azure Cosmos DB para NoSQL
- Consultas NoSQL da função do sistema VectorDistance
- Como configurar recursos de banco de dados vetorial no Azure Cosmos DB NoSQL
- Python - Tutorial do Caderno
- C# - Crie seu próprio acelerador de solução completa Copilot com AKS e kernel semântico
- C# - Crie seu próprio aplicativo de exemplo de copiloto e laboratório prático
- Python - Chatbot de filme
Azure Cosmos DB para MongoDB
Use o banco de dados vetorial integrado nativamente no Azure Cosmos DB para MongoDB (arquitetura vCore), que oferece uma maneira eficiente de armazenar, indexar e pesquisar dados vetoriais de alta dimensão diretamente ao lado de outros dados de aplicativos. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e fornece uma integração perfeita de seus aplicativos orientados por IA.
Amostras de código
- Crie seu próprio copiloto para o Azure Cosmos DB para MongoDB em C# com kernel semântico
- Tutorial .NET - chatbot de receita
- Padrão RAG C# - Integre serviços OpenAI com o Cosmos
- Padrão Python RAG - Chatbot do produto Azure
- Python Notebook - Integração de banco de dados vetorial através do tutorial LangChain
- Python Notebook - LLM Caching integration through LangChain tutorial
- Python - Integração LlamaIndex
- Python - Integração de memória do kernel semântico
- Python Notebook - Filme Chatbot
API para PostgreSQL
Use o banco de dados vetorial integrado nativamente no Azure Cosmos DB para PostgreSQL, que oferece uma maneira eficiente de armazenar, indexar e pesquisar dados vetoriais de alta dimensão diretamente ao lado de outros dados de aplicativos. Essa abordagem elimina a necessidade de migrar seus dados para bancos de dados vetoriais alternativos mais caros e fornece uma integração perfeita de seus aplicativos orientados por IA.
Exemplo de código
Próximo passo
Avaliação gratuita de 30 dias sem assinatura do Azure