O que é um banco de dados vetorial?
O que é um banco de dados vetorial?
Um banco de dados vetorial é um banco de dados especializado que armazena, gerencia e busca embeddings vetoriais de alta dimensão para permitir a busca por semelhança semântica.
Esses embeddings, gerados por modelos de machine learning, capturam as relações semânticas dentro de dados não estruturados, como texto, imagens ou áudio, posicionando itens conceitualmente relacionados mais próximos uns dos outros no espaço vetorial para que o sistema possa classificar resultados por relevância. Os bancos de dados vetoriais indexam e armazenam embeddings densos e esparsos para recuperação rápida, e geralmente servem como uma base de conhecimento externa que um modelo de linguagem de grande porte (LLM) pode consultar para fundamentar suas respostas em dados confiáveis e mitigar o risco de alucinações.
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 embeddings numéricos 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 semelhança. Por exemplo, os embeddings dos modelos do Azure OpenAI têm 1.536 dimensões. Normalmente produzidos por modelos Transformer, eles captam um significado semântico rico e cheio de nuances, tornando-os ideais para a busca por semelhança 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?
A 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 semelhança semântica. A busca vetorial é uma operação de consulta que encontra vetores mais semelhantes a um determinado vetor de consulta com base em uma métrica de semelhança específica. Por exemplo, uma busca por "canino" poderia encontrar correspondência semântica com 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 semelhança
Como são medidas a semelhança e a distância entre vetores?
Na busca vetorial, a semelhança é 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 semelhança 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 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.
- A distância Linf (distância de Chebyshev) é a diferença máxima ao longo de qualquer dimensão.
- A semelhança de cosseno mede o cosseno do ângulo entre dois vetores para determinar se eles apontam em uma direção semelhante, independentemente de sua magnitude. Uma pontuação de 1 indica vetores idênticos, enquanto –1 indica vetores opostos. Essa é uma escolha comum para espaços de embedding normalizados, como os dos modelos OpenAI.
- A semelhança do produto escalar considera tanto o ângulo quanto a magnitude dos vetores. É equivalente à semelhança de cosseno para vetores normalizados, mas geralmente é mais eficiente em termos computacionais.
- A distância de Hamming calcula o número de dimensões em que dois vetores diferem.
- O produto interno máximo (MaxSim) é uma métrica de semelhança usada quando uma única parte dos dados (como um documento) é representada por vários vetores (por exemplo, um vetor para cada palavra). Essa métrica calcula a semelhança comparando cada vetor em um documento com o vetor mais semelhante no outro documento e, em seguida, agregando os resultados.
Algoritmos de busca eficientes
O que é a busca pelos k-vizinhos mais próximos (kNN)?
A busca pelos k vizinhos mais próximos (kNN) é a operação central por trás da busca por semelhança vetorial: dado um vetor de consulta, ela encontra os k vetores no banco de dados que são mais próximos dele, de acordo com uma métrica de distância escolhida. O "k" representa simplesmente o número de resultados que se deseja obter, por exemplo, as 10 imagens de produtos mais semelhantes ou os 5 trechos de documento mais relevantes para uma consulta RAG. Uma busca exata em kNN garante que foram encontradas correspondências verdadeiras mais próximas comparando a consulta com todos os vetores do índice, o que é preciso, mas tem baixa escalabilidade. Por isso, os sistemas de produção normalmente dependem de métodos aproximados.
Qual é a diferença entre kNN exata e busca por vizinho aproximado (ANN)?
O kNN exato compara um vetor de consulta com todos os vetores do conjunto de dados para garantir que ele retorne as correspondências mais próximas possíveis. É preciso, mas caro em termos computacionais, e a latência cresce linearmente com o tamanho do índice. A busca aproximada do vizinho mais próximo (ANN) sacrifica um pouco de precisão para obter um grande ganho de velocidade, restringindo a busca a um subconjunto promissor de vetores, em vez de percorrer todos eles. Na prática, o recall de ANN é suficientemente alto para que a maioria dos sistemas de busca vetorial de produção o utilize por padrão, reservando a busca kNN exata para pequenos conjuntos de dados ou casos em que seja necessária uma recuperação perfeita.
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 semelhança, permitindo navegação 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 vários estágios em sistemas de busca vetorial?
A recuperação em vários estágios, ou 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 consulta, recuperação inicial de um ou mais índices (por exemplo, combinação de busca 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 a flexibilidade. Ele permite que os desenvolvedores combinem facilmente diferentes estratégias de busca e classificação (como busca híbrida) e criem pipelines complexos de recuperação em 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 recupera um amplo conjunto de documentos candidatos, 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 os embeddings de documentos podem ser pré-calculados e indexados, 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 candidatos.
Armazenamento e otimização para bancos de dados vetoriais
Como os vetores são normalmente armazenados em um banco de dados vetorial, e quais desafios de armazenamento surgem?
Normalmente, os vetores são armazenados como matrizes de números de ponto flutuante de 32 bits (float32). O principal desafio é o imenso volume de armazenamento ocupado: 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 garantir 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 processamento 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 menor precisão, 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 ao mapear 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 agressiva 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, frequentemente com alguma perda de precisão.
Quais são os benefícios de um banco de dados vetorial?
Os bancos de dados vetoriais oferecem diversas vantagens em relação aos bancos de dados tradicionais ao trabalhar com dados não estruturados e aplicações de IA:
Busca semântica além da correspondência de palavras-chave: bancos de dados vetoriais recuperam resultados com base no significado, em vez de correspondências exatas de palavras. Uma consulta para "laptops acessíveis para estudantes" pode revelar produtos descritos como "notebooks econômicos para faculdade" porque os embeddings subjacentes capturam semelhança conceitual, e não sobreposição literal de texto.
Busca por semelhança rápida em grande escala: ao combinar indexação vetorial com algoritmos aproximados de vizinhos mais próximos, como o HNSW, os bancos de dados vetoriais retornam resultados relevantes de bilhões de vetores em milissegundos, tornando viáveis aplicações de IA em tempo real.
Suporte para dados não estruturados: texto, imagens, áudio, vídeo e outros formatos não estruturados podem ser representados como embeddings vetoriais e buscados por meio de um único sistema unificado, eliminando a necessidade de pipelines separados para cada tipo de dado.
Fundamentação para grandes modelos de linguagem: bancos de dados vetoriais servem como camada de recuperação em arquiteturas de Retrieval-Augmented Generation (RAG), fornecendo aos modelos de linguagem de grande porte (LLMs) contexto relevante e atualizado de fontes confiáveis e reduzindo alucinações.
Recursos de busca híbrida: os bancos de dados vetoriais modernos combinam busca vetorial densa, busca vetorial esparsa e busca tradicional por palavras-chave (BM25) em uma única consulta, fornecendo resultados mais precisos do que qualquer método isolado.
Escalabilidade e desempenho: estruturas de indexação desenvolvidas especificamente para essa finalidade, quantização e arquiteturas distribuídas permitem que bancos de dados vetoriais lidem com conjuntos de dados crescentes e altos volumes de consultas sem degradação significativa na latência.
Menor complexidade operacional: um banco de dados vetorial integrado elimina a necessidade de integrar sistemas separados para armazenamento, gerenciamento de embedding e busca, simplificando a arquitetura para aplicações baseadas em IA.
Quais são os benefícios de um banco de dados vetorial integrado e de uma plataforma de busca?
Uma plataforma integrada que combina armazenamento vetorial e busca com funcionalidades tradicionais de banco de dados (como busca léxica e filtragem) oferece benefícios significativos. Ela simplifica a arquitetura ao eliminar a necessidade de sincronizar dados entre sistemas separados. Mais importante ainda, ela possibilita uma busca híbrida poderosa, em que a busca lexical, a busca 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.
O que é filtragem de metadados em um banco de dados vetorial?
A filtragem de metadados é o processo de restringir os resultados de busca vetorial com base em atributos estruturados anexados a cada vetor, como data, categoria, autor, preço, idioma ou permissões de usuário. Enquanto a busca vetorial recupera resultados por semelhança semântica, os filtros de metadados aplicam restrições rígidas que os resultados devem satisfazer, então uma consulta por "tênis leves para corrida" pode ser restrita a itens que estão em estoque, custam menos de £ 100 e estão disponíveis na região do usuário.
A combinação da similaridade de vetores com a filtragem de metadados é essencial para aplicações de produção. Um sistema RAG, por exemplo, pode precisar limitar as respostas a documentos que o usuário atual tem autorização para ver ou a artigos publicados nos últimos seis meses. Sem a filtragem de metadados, resultados semanticamente relevantes, mas contextualmente incorretos, surgiriam rotineiramente.
Existem duas abordagens comuns. A pré-filtragem aplica restrições de metadados antes da busca por semelhança, reduzindo previamente o conjunto de candidatos; isso garante o número solicitado de resultados, mas pode ser mais lento em filtros altamente seletivos. A pós-filtragem executa primeiro a busca por semelhança e, em seguida, descarta os resultados sem correspondência, o que é mais rápido, mas pode retornar menos resultados do que o solicitado se o filtro for restritivo. Os bancos de dados vetoriais modernos geralmente combinam as duas estratégias, escolhendo dinamicamente com base na seletividade do filtro para equilibrar recall, latência e precisão.
Como a busca vetorial difere da busca 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:
- Busca 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
- Retrieval-Augmented Generation (RAG): 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 semelhança conceitual com os interesses ou comportamento anterior de um usuário
- Busca de imagem e multimodal: encontrar imagens visualmente semelhantes ou buscar em diferentes tipos de dados (por exemplo, usar texto para encontrar uma imagem)
Recursos de banco de dados vetorial da Elastic
O Elasticsearch é um banco de dados vetorial baseado nos fundamentos do mecanismo de busca mais amplamente utilizado no mundo, combinando busca vetorial, busca lexical e filtragem de metadados em uma única plataforma. Em vez de rodar um armazenamento vetorial dedicado junto com um sistema de busca separado, as equipes podem usar um único mecanismo para impulsionar busca semântica, recuperação híbrida e Retrieval-Augmented Generation em escala de produção.
As principais funcionalidades incluem:
- Suporte vetorial denso e esparso nativo: indexe, armazene e consulte incorporações vetoriais densas e incorporações esparsas (incluindo aquelas produzidas pelo modelo ELSER da Elastic) dentro do mesmo índice.
- Busca híbrida pronta para uso: combine a busca lexical BM25, o algoritmo kNN de vetor denso e a recuperação de vetores esparsos em uma única consulta usando o framework de recuperação, com fusão de classificação recíproca (RRF) para mesclar os resultados.
- Inferência integrada: O tipo de campo semantic_text e a API de inferência lidam automaticamente com o particionamento, a geração de embeddings e a vetorização em tempo de consulta, eliminando a necessidade de gerenciar um pipeline de embeddings separado.
- Armazenamento com uso eficiente de memória: a Quantização Binária Aprimorada (BBQ) está habilitada por padrão para vetores densos, reduzindo o consumo de memória em até 32 vezes, preservando o recall, o que diminui os custos de infraestrutura em grande escala.
- Busca vetorial filtrada: aplique filtros de metadados, restrições geoespaciais e segurança em nível de documento, juntamente com semelhança vetorial, em uma única consulta. O planejador de consultas escolhe entre pré-filtragem ou pós-filtragem com base na seletividade.
- Operações de nível de produção: herda a arquitetura distribuída do Elasticsearch, incluindo particionamento (sharding), replicação, controle de acesso por função (RBAC), snapshots e monitoramento, todos recursos maduros e comprovados em grandes implantações.
- Reclassificação semântica: o modelo Elastic Rerank oferece um aumento de relevância no segundo estágio sobre a recuperação inicial, melhorando a qualidade dos resultados sem exigir reindexação.
Comece a usar a busca vetorial no Elasticsearch consultando a documentação do Elasticsearch Labs.
Flexibilidade de implantação: bancos de dados de vetores no local e air-gapped.
O local onde um banco de dados vetorial é executado é cada vez mais tão importante quanto o seu desempenho. A maioria dos bancos de dados vetoriais está disponível como serviços gerenciados em nuvem, mas um número crescente de organizações precisa implantá-los em sua própria infraestrutura, seja no local ou em ambientes air-gapped.
A implantação no local significa que o banco de dados Vector é executado em hardware controlado pela organização, normalmente dentro de seu próprio centro de dados ou nuvem privada. Os dados nunca saem do perímetro da rede da organização, e a equipe de operações gerencia diretamente a instalação, o dimensionamento, as atualizações e a segurança. A implantação air-gapped vai um passo além: o ambiente não tem nenhuma conexão com a Internet. As atualizações de software, os pesos dos modelos e os pipelines de embedding devem ser introduzidos por meio de processos controlados e offline, e nenhum dado ou telemetria pode ser enviado.
Isso é mais relevante para bancos de dados vetoriais do que para a maioria das outras infraestruturas. Em um pipeline de RAG, o banco de dados vetorial armazena a base de conhecimento que fundamenta as respostas do modelo de linguagem, o que geralmente significa conter os conteúdos mais sensíveis de uma organização: buscas internas, registros de clientes, documentos jurídicos, código-fonte, informações confidenciais ou dados operacionais proprietários. Os próprios embeddings também podem vazar informações sobre o conteúdo de origem, portanto, a camada de armazenamento é uma parte significativa do modelo de ameaças, e não algo secundário.
Diversos setores têm requisitos rígidos que, na prática, inviabilizam bancos de dados vetoriais exclusivos da nuvem pública:
- As agências federais, de defesa e de inteligência frequentemente operam em redes confidenciais ou air-gapped, onde nenhuma conectividade externa é permitida e onde o software deve atender a normas de credenciamento específicas antes de poder ser implantado.
- Os provedores de serviços de saúde que lidam com informações de saúde protegidas devem atender a regulamentações rigorosas sobre onde os dados dos pacientes são armazenados e processados, e muitos preferem manter as cargas de trabalho de IA dentro da infraestrutura do hospital ou da operadora, em vez de enviar embeddings de notas clínicas para um serviço de terceiros.
- As empresas de serviços financeiros enfrentam regras de residência de dados, requisitos de auditoria regulatória e políticas internas que frequentemente exigem a manutenção de dados de clientes e transações em jurisdições específicas ou dentro dos ambientes controlados da própria empresa.
- As empresas com requisitos de residência ou soberania de dados, incluindo qualquer organização que opere sob regulamentações como o GDPR ou estruturas regionais semelhantes, precisam da capacidade de fixar seu banco de dados vetorial a um país ou região específica ou executá-lo inteiramente dentro de sua própria infraestrutura.
Escolher um banco de dados vetorial que suporte todo o espectro de implantação — nuvem gerenciada, nuvem autogerenciada, no local e air-gapped — permite que as organizações adotem uma única tecnologia para cargas de trabalho com perfis de segurança e conformidade muito diferentes, em vez de manter infraestruturas separadas para dados sensíveis e não sensíveis.