Compartilhar via


Banco de dados vetoriais

Dica

Para obter os exemplos mais recentes do banco de dados vetor e do aplicativo de padrão RAG, visite a Galeria de Exemplos do Azure Cosmos DB.

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 exemplos de implementação e experimente-os 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 pesquisa de vetor bem conhecidos incluem Hierarchical Navigable Small World (HNSW), Inverted File (IVF) e DiskANN.

Banco de dados vetoriais integrado versus banco de dados vetoriais puro

Há dois tipos comuns de implementações de banco de dados vetor: banco de dados vetor puro e banco de dados vetor integrado em um banco de dados noSQL ou relacional.

  • Um banco de dados de vetor puro foi projetado para armazenar e gerenciar inserções de vetor com eficiência, juntamente com uma pequena quantidade de metadados; é separado da fonte de dados da qual as inserções são derivadas.

  • Um banco de dados vetor 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 e pesquisa. Por exemplo, você pode usar um banco de dados vetorial para:

  • Identificar imagens, documentos e músicas semelhantes com base em seu conteúdo, temas, sentimentos e estilos
  • Identificar produtos semelhantes com base em suas 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 opções potenciais de melhor adequação de um grande pool de escolhas para cumprir requisitos complexos
  • Identificar anomalias de dados ou atividades fraudulentas que são diferentes de 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.

Os bancos de dados vetoriais são especialmente populares para habilitar o RAG (geração aumentada por recuperação), que aproveita LLMs, além de 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 de ajustes frequentes 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.

Observação

Interessado em capacidades de pesquisa vetorial com alta capacidade de processamento? O Azure Cosmos DB está desenvolvendo recursos avançados de pesquisa de vetor projetados para grandes conjuntos de dados de vetor emparelhados com inserções e pesquisas de taxa de transferência ultra-alta. Ele pode acomodar milhões de consultas por segundo (QPS) com baixa latência previsível e eficiência de custos inigualável. Inscreva-se para saber mais sobre oportunidades de acesso antecipado e ser notificado quando esses recursos estiverem disponíveis.

Inscreva-se para a versão prévia privada expandida.

Inserçõ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.

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.

Isso 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.

Solicitações e engenharia dos 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 que fornecem diretivas para o LLM
  • Conteúdo primário que fornece informações ao LLM para processamento
  • Exemplos para ajudar a condicioná-lo a uma tarefa ou processo específico
  • Indicações para direcionar a saída do LLM na direção certa
  • Conteúdo de suporte que representa informações complementares que o LLM pode usar para a geração de saída.

O processo de criar bons prompts para um cenário é chamado de engenharia de prompts. Para obter mais informações sobre prompts e melhores práticas para a engenharia de prompt, confira Design de mensagem do sistema.

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 geração aumentada por recuperação (RAG) é uma arquitetura que aumenta as capacidades 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 oferece 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 RAG simples usando o Azure Cosmos DB para NoSQL pode:

  1. Habilitar o Índice de Vetores NoSQL do Azure Cosmos DB
  2. Configurar um banco de dados e um contêiner com uma política de vetores de contêiner e um índice vetorial
  3. Inserir dados em um banco de dados e contêiner do Azure Cosmos DB para NoSQL
  4. Criar incorporações a partir de uma propriedade de dados utilizando as incorporações do OpenAI do Azure
  5. Vincule o Azure Cosmos DB ao NoSQL.
  6. Criar um índice vetorial sobre as propriedades de incorporação
  7. Criar uma função para realizar uma pesquisa de similaridade de vetores com base em uma solicitação do usuário
  8. 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, consulte Fundamentos dos LLMs.

Como implementar as funcionalidades do banco de dados vetorial integrado

Você pode implementar funcionalidades integradas de banco de dados de vetor para o Azure Cosmos DB e suas várias APIs de compatibilidade.

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 recursos integrados de banco de dados vetor , em que você pode criar um índice de vetor com base no DiskANN, um conjunto de algoritmos de indexação de vetor de alto desempenho desenvolvidos pela Microsoft Research.

O DiskANN permite executar consultas altamente precisas e com baixa latência em qualquer escala, aproveitando todos os benefícios do Azure Cosmos DB for NoSQL, como SLA de 99,999% (com alta disponibilidade habilitada), replicação geográfica e transição contínua do modo sem servidor para taxa de transferência provisionada (RU), tudo em um único armazenamento de dados.

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.

Exemplo de código

Próxima etapa