Busca vetorial sem força bruta: como funcionam IVF e HNSW

A busca exata em altas dimensões congela aplicações. Dois algoritmos salvam o dia: IVF particiona o espaço em clusters (k-means), HNSW constrói um gráfico de vizinhança. O Habr fornece uma análise detalhada com implementação em Python e exemplos de código.

Processado por IA de Habr AI; editado por Hamidun News
Busca vetorial sem força bruta: como funcionam IVF e HNSW
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Primeiro estágiok-means divide o espaço em centenas ou milhares de clusters
Segundo estágiocada vetor do banco de dados é indexado em seu cluster (ID do centroide é salvo)
Durante a buscaencontre K clusters mais próximos, depois busca completa apenas dentro deles

Busca Vetorial Sem Força Bruta: Como Funcionam IVF e HNSW

Quando um banco de dados vetorial contém milhões de embeddings, buscar vetores semelhantes usando força bruta se torna impossível. Dois algoritmos — IVF e HNSW — resolvem essa tarefa por busca aproximada, encontrando respostas em milissegundos em vez de minutos. Um novo artigo detalhado no Habr decompõe ambas as abordagens da teoria matemática à implementação em Python.

Por Que a Busca Exata Não Funciona

Em baixas dimensões (2D, 3D), você pode construir índices espaciais — árvores k-d, árvores R. Eles usam geometria: se uma consulta está longe de uma parte do espaço, ela pode ser excluída da busca sem perder resultados. Mas em altas dimensões (768D para BERT, 3072D para GPT-4 Turbo), essa ideia quebra. As distâncias se tornam não-locais — quase todos os pontos estão a quase a mesma distância um do outro. Esse fenômeno é chamado de maldição da dimensionalidade. Os índices tradicionais perdem eficiência, param de reduzir o espaço de busca, e voltamos à força bruta — comparar a consulta com todos os milhões de vetores no banco de dados.

IVF: Clustering Vem em Auxílio

IVF (Inverted File Index) resolve a tarefa por clusterização preliminar. O algoritmo usa k-means clássico para dividir o espaço em "balde"-clusters condicionais. A intuição é simples: se vetores estão próximos no espaço, devem estar no mesmo cluster, e durante a busca precisamos verificar apenas alguns clusters relevantes, não todo o banco de dados. O processo funciona em dois estágios. Durante a indexação, cada vetor no banco de dados é atribuído ao seu cluster mais próximo (seu centroide). Durante a busca, o sistema primeiro encontra K clusters mais próximos à consulta por busca rápida, depois busca correspondências exatas apenas dentro deles. Isso reduz dramaticamente o número de comparações — em vez de milhões de comparações, precisamos apenas de alguns milhares.

  • Primeiro estágio: k-means divide o espaço em centenas ou milhares de clusters
  • Segundo estágio: cada vetor do banco de dados é indexado em seu cluster (ID do centroide é salvo)
  • Durante a busca: encontre K clusters mais próximos, depois busca completa apenas dentro deles

IVF escala bem para bilhões de vetores e requer relativamente pouca memória. Habr apresenta a implementação em Python com exemplos de código concretos e métricas de desempenho.

HNSW: Mundo Pequeno Navegável Hierárquico

HNSW (Hierarchical Navigable Small World) usa uma abordagem completamente diferente — construindo um grafo de vizinhança em vez de clusters. Cada vetor se torna um nó no grafo, arestas conectam vetores vizinhos (próximos). O grafo é construído hierarquicamente: em níveis inferiores há uma vizinhança local densa de cada vetor, em níveis superiores há conexões esparsa de longa distância para descida aproximada global rápida. Durante a busca, o algoritmo começa de um ponto de entrada no nível superior e desce pela hierarquia, selecionando em cada passo vizinhos que estão mais próximos da consulta alvo. Isso é como navegar em uma grande cidade: primeiro você viaja em rodovias principais, depois muda para ruas locais até encontrar o endereço que procura.

"HNSW funciona como um navegador em uma cidade desconhecida: você começa nas rodovias principais, depois desce para ruas locais", explicam os autores do artigo no

Habr.

Na prática, HNSW é geralmente mais rápido que IVF para busca de baixa latência, mas requer mais memória para armazenar a estrutura do grafo e conexões entre nós.

O Que Isso Significa

Ambos os algoritmos são usados em bancos de dados vetoriais modernos: Pinecone, Weaviate, Qdrant, Milvus. Para aplicações LLM — sistemas RAG, busca de documentos, recomendações semânticas, chatbots inteligentes — a escolha do algoritmo de busca afeta diretamente a velocidade de resposta e a experiência do usuário. IVF é melhor para enormes bancos de dados com memória limitada, HNSW oferece vantagem quando latência mínima é necessária e ao trabalhar com conjuntos de dados mais compactos.

Perguntas frequentes sobre a notícia

Por Que a Busca Exata Não Funciona?

Em baixas dimensões (2D, 3D), você pode construir índices espaciais — árvores k-d, árvores R. Eles usam geometria: se uma consulta está longe de uma parte do espaço, ela pode ser excluída da busca sem perder resultados. Mas em altas dimensões (768D para BERT, 3072D para GPT-4 Turbo), essa ideia quebra. As distâncias se tornam não-locais — quase todos os pontos estão a quase a mesma distância um do outro. Esse fenômeno é chamado de maldição da dimensionalidade. Os índices tradicionais perdem eficiência, param de reduzir o espaço de busca, e voltamos à força bruta — comparar

O que se sabe sobre IVF: Clustering Vem em Auxílio?

IVF (Inverted File Index) resolve a tarefa por clusterização preliminar. O algoritmo usa k-means clássico para dividir o espaço em "balde"-clusters condicionais. A intuição é simples: se vetores estão próximos no espaço, devem estar no mesmo cluster, e durante a busca precisamos verificar apenas alguns clusters relevantes, não todo o banco de dados. O processo funciona em dois estágios. Durante a indexação, cada vetor no banco de dados é atribuído ao seu cluster mais próximo (seu centroide). Durante a busca, o sistema primeiro encontra K clusters mais próximos à consulta po

O que se sabe sobre HNSW: Mundo Pequeno Navegável Hierárquico?

HNSW (Hierarchical Navigable Small World) usa uma abordagem completamente diferente — construindo um grafo de vizinhança em vez de clusters. Cada vetor se torna um nó no grafo, arestas conectam vetores vizinhos (próximos). O grafo é construído hierarquicamente: em níveis inferiores há uma vizinhança local densa de cada vetor, em níveis superiores há conexões esparsa de longa distância para descida aproximada global rápida. Durante a busca, o algoritmo começa de um ponto de entrada no nível superior e desce pela hierarquia, selecionando em cada passo vizinhos que estão mais

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…