O que é um banco de dados vetorial?
O que é um banco de dados vetorial?
Um banco de dados vetorial é um banco de dados especializado projetado para armazenar, gerenciar e buscar embeddings vetoriais de alta dimensão. Sua função principal é servir como uma base de conhecimento externa que um grande modelo de linguagem (LLM) pode consultar, assim "fundamentando" as respostas do modelo com os dados armazenados na base de conhecimento e mitigando o risco de alucinação. A capacidade central de um banco de dados vetorial é realizar buscas de similaridade semântica, que identificam pontos de dados que são conceitualmente semelhantes, em vez de apenas corresponder a palavras-chave. Ele indexa e armazena embeddings de vetores densos e esparsos de modelos de machine learning para permitir buscas e recuperações rápidas de similaridades. Esses embeddings captam as relações semânticas em dados não estruturados, como texto, imagens ou áudio. No espaço vetorial criado pelo banco de dados, os itens relacionados são posicionados mais próximos uns dos outros, o que permite ao sistema classificar os resultados por relevância.
Embeddings vetoriais
O que são embeddings vetoriais e como são criados?
Embeddings vetoriais são matrizes numéricas de valores de ponto flutuante que representam dados como palavras, frases ou documentos inteiros. Eles são gerados por modelos de machine learning, como grandes modelos de linguagem, que transformam mídia digital em pontos dentro de um espaço de alta dimensão. Esse processo capta o significado semântico subjacente e os relacionamentos dos dados originais. Por exemplo, uma imagem de um "golden retriever brincando em um parque" pode ser convertida em um embedding numericamente próximo ao embedding do texto "cachorro feliz lá fora". É importante observar que os embeddings criados pelo modelo de um provedor não podem ser compreendidos por outro; por exemplo, um embedding de um modelo OpenAI não é compatível com um de outro provedor.
O que são vetores densos (embeddings)?
Vetores densos são incorporações numéricas de alta dimensão, em que quase todos os elementos são valores diferentes de zero. Uma característica essencial dos vetores densos é que todos os vetores gerados por um modelo específico devem ter o mesmo número fixo de dimensões, o que é um pré-requisito para medir a similaridade. Por exemplo, os embeddings dos modelos do Azure OpenAI têm 1.536 dimensões. Normalmente produzidos por modelos de transformadores, eles captam um significado semântico rico e cheio de nuances, tornando-os ideais para a busca por similaridade semântica. Um vetor denso para a palavra "cat", por exemplo, pode aparecer como [0,135, -0,629, 0,327, 0,366,...].
O que são vetores esparsos (embeddings)?
O que é a busca vetorial?
Busca vetorial é uma técnica que encontra dados similares representando-os como vetores numéricos de alta dimensão, frequentemente chamados de embeddings. Esse método é altamente versátil porque modelos de machine learning podem gerar embeddings para qualquer tipo de mídia digital, incluindo texto, imagens e áudio. O conceito fundamental envolve transformar dados em um espaço vetorial em que a distância geométrica entre vetores indica sua similaridade semântica. Uma buscar vetorial é uma operação de consulta que encontra vetores mais semelhantes a um determinado vetor de consulta com base em uma métrica de similaridade específica. Por exemplo, uma buscar por "canino" poderia corresponder semanticamente a um documento contendo a palavra "cachorro", ao contrário da busca tradicional por palavras-chave, que corresponde ao termo literal em vez do seu significado subjacente.
Medindo a similaridade
Como são medidas a similaridade e a distância entre vetores?
Na busca vetorial, a similaridade é quantificada calculando a distância ou o ângulo entre dois vetores em um espaço de alta dimensão; vetores que estão mais próximos são considerados mais semanticamente semelhantes. As métricas comuns usadas para medir essa proximidade incluem similaridade de cosseno, distância euclidiana, produto escalar, distância de Hamming e distância de Manhattan.
- A distância L2 (distância euclidiana) é a métrica mais comum e representa a distância em linha reta (sem desvios, ou seja, a menor distância) entre dois pontos vetoriais.
- A distância L1 (distância de Manhattan) mede a distância somando as diferenças absolutas dos componentes vetoriais, como se estivesse navegando em uma grade de cidade.
- Distância Linf (distância de Chebyshev) é a diferença máxima ao longo de qualquer dimensão.
- A similaridade de cosseno mede o cosseno do ângulo entre dois vetores para determinar se eles apontam em uma direção similar, independentemente de sua magnitude. Uma pontuação de 1 significa vetores idênticos e –1 significa que eles são opostos. Essa é uma escolha comum para espaços de embedding normalizados, como os dos modelos OpenAI.
- A similaridade do produto escalar considera tanto o ângulo quanto a magnitude dos vetores. É equivalente à similaridade de cosseno para vetores normalizados, mas geralmente é mais eficiente em termos computacionais.
- Distância de Hamming calcula o número de dimensões em que dois vetores diferem.
- Produto interno máximo (MaxSim) é uma métrica de similaridade usada quando uma única parte dos dados (como um documento) é representada por vários vetores (por exemplo, um vetor para cada palavra). Calcula a similaridade comparando cada vetor em um documento com o vetor mais semelhante no outro documento e, em seguida, agregando os resultados.
Algoritmos de busca eficientes
Como algoritmos como HNSW e ANN possibilitam uma busca vetorial eficiente?
A busca por vetores semelhantes em um conjunto de dados enorme e de alta dimensão representa um desafio significativo. Uma abordagem de força bruta, que compara um vetor de consulta a todos os outros vetores, é computacionalmente inviável à medida que o conjunto de dados cresce. Isso é resolvido usando algoritmos de vizinho mais próximo aproximado (ANN). Essas técnicas encontram rapidamente os vetores mais próximos de uma consulta sem realizar uma comparação exaustiva. Um algoritmo comum de ANN é o hierarchical navigable small world (HNSW), que organiza vetores em uma estrutura de gráfico em camadas em que os vetores são conectados com base na similaridade, permitindo uma passagem rápida. Isso é mais eficiente e preciso do que uma busca FLAT (força bruta), que é computacionalmente intensiva, mas mais precisa. Ao reduzir drasticamente o escopo da busca, essas estruturas obtêm enormes ganhos de velocidade em troca de uma redução pequena e, normalmente, aceitável da precisão absoluta.
O que é uma busca em múltiplos estágios em sistemas de buscar vetorial?
Uma recuperação em vários estágios ou um framework de recuperação (para simplificar, também podemos chamá-lo de pipeline de busca) é um fluxo de trabalho orquestrado que define a sequência de etapas para processar uma consulta. Isso normalmente inclui etapas como análise de consultas, recuperação inicial de um ou mais índices (por exemplo, combinação de pesquisa lexical e vetorial para uma abordagem híbrida), filtragem de resultados e um estágio final de reclassificação antes de retornar os resultados ao usuário.
Quais são os benefícios de usar o framework para criar pipelines de busca?
O principal benefício é a modularidade e flexibilidade. Ele permite que os desenvolvedores combinem facilmente diferentes estratégias de buscar e classificação (como pesquisa híbrida) e criem pipelines complexos e de vários estágios, adaptados a necessidades específicas, sem precisar criar todo o sistema do zero.
O que é reclassificação semântica?
A reclassificação semântica é um processo de segunda etapa que melhora a relevância dos resultados de busca. Após uma etapa inicial de recuperação rápida que faz uma busca em um amplo conjunto de documentos possíveis, um modelo mais intensivo em termos computacionais, mas mais preciso, é usado para reordenar esse conjunto menor e produzir uma classificação final mais precisa.
Como funciona um processo de vários estágios de "recuperação e reclassificação"?
Um pipeline de "recuperação e reclassificação" opera em duas etapas distintas:
- Recuperar: Um método de recuperação eficiente e de alta escalabilidade (como a busca vetorial ANN ou a busca lexical BM25) é usado para obter um conjunto inicial de documentos possíveis a partir do índice completo.
- Reclassificar: esse conjunto menor de candidatos é então passado para um modelo mais potente (como um codificador cruzado) que realiza uma análise mais profunda da relação semântica entre a consulta e cada documento, reordenando-os para melhorar a relevância final.
Qual é a diferença entre as arquiteturas de bi-codificador e codificador cruzado para reclassificação?
- Um bi-codificador gera embeddings separados para a consulta e os documentos de forma independente. Como as incorporações de documentos podem ser pré-calculadas e indexadas, essa arquitetura é muito rápida e é usada no estágio inicial de recuperação.
- Um codificador cruzado processa a consulta e um documento juntos como uma única entrada. Isso permite captar interações contextuais muito mais profundas, tornando-o altamente preciso, mas também muito mais lento. Devido ao seu custo computacional, ele só é adequado para a etapa de reclassificação em um pequeno conjunto de resultados potenciais.
Armazenamento e otimização
Como os vetores são normalmente armazenados em um banco de dados vetorial, e quais desafios de armazenamento surgem?
Normalmente, os vetores são armazenar como matrizes de números de ponto flutuante de 32 bits (float32). O principal desafio é o imenso espaço de armazenamento: um único vetor de 384 dimensões consome aproximadamente 1,5 KB. Portanto, um índice de 100 milhões de documentos pode aumentar de tamanho em sete vezes apenas com a adição de um campo vetorial. Como algoritmos de busca vetorial como o HNSW exigem que o índice seja carregado na RAM para desempenho, isso cria desafios significativos relacionados ao custo e à escalabilidade da memória.
O que é quantização vetorial?
A quantização vetorial é uma técnica de compressão com perdas que reduz os requisitos de memória e computação de um modelo ao representar seus parâmetros com menos bits. Isso é especialmente útil para LLMs, que podem ter bilhões de parâmetros. Ao converter números float32 de alta precisão em inteiros de precisão mais baixa, como int8 ou int4, a quantização pode reduzir significativamente o tamanho do modelo e acelerar a inferência com impacto mínimo na precisão.
O que é quantização escalar (SQ)?
A quantização escalar comprime vetores por mapeamento do intervalo contínuo de valores float32 para um conjunto discreto de valores inteiros de menor precisão (por exemplo, int8). Isso pode reduzir em até 4 vezes o tamanho do armazenamento, preservando uma quantidade significativa das informações de magnitude do vetor, o que é importante para a relevância.
O que é quantização binária (BQ)?
A quantização binária é uma técnica de compressão mais intensa que converte cada componente de um vetor float32 em uma representação binária (por exemplo, 1-bit). Isso pode atingir uma compressão de até 32x, oferecendo economia máxima de memória e permitindo cálculos mais rápidos usando operações baseadas em números inteiros, muitas vezes ao custo de alguma perda de precisão.
Quais são os benefícios de uma plataforma integrada de armazenamento (banco de dados) e busca de vetores?
Uma plataforma integrada que combina armazenamento vetorial e buscar com funcionalidades tradicionais de banco de dados (como pesquisa léxica e filtragem) oferece benefícios significativos. Ela simplifica a arquitetura ao eliminar a necessidade de sincronizar dados entre sistemas separados. O principal é que ela possibilita uma pesquisa híbrida poderosa, em que a pesquisa lexical, a pesquisa vetorial e a filtragem de metadados podem ser realizadas em uma única consulta unificada, resultando em resultados mais relevantes e uma experiência do desenvolvedor mais simples.
Como a busca vetorial difere da buscar lexical?
- A busca lexical (por exemplo, BM25) baseia-se na correspondência de palavras-chave. Ela encontra documentos que contêm os termos exatos presentes na consulta. Ela é precisa, mas não compreende o contexto ou sinônimos.
- A busca vetorial é baseada no significado semântico. Ela encontra documentos que são conceitualmente semelhantes à consulta, mesmo que não compartilhem palavras-chave. É excelente para entender a intenção do usuário, mas pode ser menos precisa do que a busca lexical.
Quais são os casos de uso comuns para bancos de dados vetoriais? O que os desenvolvedores podem criar com a busca vetorial?
Os desenvolvedores utilizam bancos de dados vetoriais para desenvolver aplicativos sofisticados que dependem da compreensão do significado semântico dos dados. Os casos de uso comuns incluem:
- Pesquisa semântica: criar experiências de busca que compreendem a intenção do usuário para além das palavras-chave, como em sistemas de comércio eletrônico ou de descoberta de documentos
- RAG (Retrieval-Augmented Generation): fornecer aos LLMs e chatbots acesso a conhecimento externo e atualizado para gerar respostas mais precisas e factuais
- Mecanismos de recomendação: Recomendar produtos, artigos ou mídias com base na similaridade conceitual com os interesses ou comportamento anterior de um usuário
- Pesquisa de imagem e multimodal: encontrar imagens visualmente semelhantes ou buscar em diferentes tipos de dados (por exemplo, usar texto para encontrar uma imagem)