Banco de dados vetoriais

APLICA-SE AO: 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 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.

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.

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]

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:

  1. Inserir dados em um banco de dados e coleção do Azure Cosmos DB for NoSQL
  2. Criar incorporações a partir de uma propriedade de dados utilizando as incorporações do OpenAI do Azure
  3. Vincular o Azure Cosmos DB for NoSQL à Azure Cognitive Search (para indexação/pesquisa de vetores)
  4. Criar um índice vetorial sobre as propriedades de incorporação
  5. Criar uma função para realizar uma pesquisa de similaridade de vetores com base em uma solicitação do usuário
  6. 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 para 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

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.

Exemplos de código

API NoSQL

Observação

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

O banco de dados de vetor integrado nativamente na API NoSQL está em desenvolvimento. Enquanto isso, você pode implementar os padrões de RAG com o Azure Cosmos DB for NoSQL e a Pesquisa de IA do Azure. Essa abordagem habilita a poderosa integração dos seus dados residentes na API de NoSQL em seus aplicativos orientados para IA.

Exemplos de código

Próxima etapa

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

Mais soluções de banco de dados vetor

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