Banco de dados vetorial

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.

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.

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]

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:

  1. Inserir dados em um banco de dados e coleção do Azure Cosmos DB para NoSQL
  2. Criar incorporações a partir de uma propriedade de dados usando o Azure OpenAI Embeddings
  3. Vincular o Azure Cosmos DB para NoSQL à Pesquisa Cognitiva do Azure (para indexação/pesquisa vetorial)
  4. Criar um índice de vetor sobre as propriedades de incorporação
  5. Criar uma função para executar a pesquisa de semelhança vetorial com base em um prompt do usuário
  6. 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:

API 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

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.

Amostras de código

NoSQL API

Nota

Para nossa API NoSQL, a integração nativa de um algoritmo de indexação vetorial de última geração será anunciada durante a compilação em maio de 2024. Por favor, fique atento.

O banco de dados vetorial integrado nativamente na API NoSQL está em desenvolvimento. Enquanto isso, você pode implementar padrões RAG com o Azure Cosmos DB para NoSQL e Azure AI Search. Essa abordagem permite uma integração poderosa de seus dados que residem na API NoSQL em seus aplicativos orientados a IA.

Amostras de código

Próximo passo

Avaliação gratuita de 30 dias sem assinatura do Azure

Avaliação gratuita de 90 dias e até US$ 6.000 em créditos de taxa de transferência com o Azure AI Advantage

Mais soluções de banco de dados vetorial

Diagrama de serviços de indexação vetorial.