Busca Vetorial

O que é DiskANN? Pesquisa de Vetores em Escala de Bilhões Explicada

9 MIN DE LEITURA

A geração aumentada por recuperação (RAG), a busca semântica e os agentes de IA dependem de uma única coisa: a capacidade de encontrar rapidamente os vetores mais relevantes em um grande conjunto de dados. À medida que os conjuntos de dados de incorporação (embeddings) crescem de milhões para bilhões de registros, os índices vetoriais puramente em memória tornam-se financeiramente insustentáveis. O DiskANN resolve esse problema armazenando índices vetoriais em SSD em vez de RAM, permitindo buscas em escala web em hardware comum.

O que é DiskANN?

DiskANN é um algoritmo de busca vetorial baseado em grafos desenvolvido pela Microsoft Research que foi publicado pela primeira vez no NeurIPS 2019. Ele realiza buscas de vizinhos mais próximos aproximados (ANN) em conjuntos de dados vetoriais em escala de bilhões, usando SSD como seu principal meio de armazenamento e mantendo apenas uma representação compactada do índice na RAM.

Antes do DiskANN, algoritmos como HNSW e FAISS exigiam que todo o índice de vetores residisse na DRAM. Com um bilhão de vetores, isso exige centenas de gigabytes de RAM e uma infraestrutura que é cara de provisionar e escalar. O DiskANN quebra essa restrição ao transferir a maior parte do índice para o disco, mantendo características de recuperação e latência competitivas com abordagens em memória. Ele é construído sobre o algoritmo Vamana, um novo método de construção de gráficos que produz um grafo direcionado de camada única bem adequado para travessia eficiente baseada em disco.

Principais benchmarks do original Artigo do NeurIPS 2019:

  • 1B+ vetores indexados em uma única máquina com 64GB de RAM
  • 5-10x mais vetores por máquina vs. soluções exclusivamente em DRAM com latência equivalente
  • < 5 ms latência de consulta com recall 95%+ no benchmark SIFT-1B

O DiskANN é agora a base da infraestrutura de busca vetorial na Microsoft (usado no Bing e no Microsoft 365) e foi adotado por Couchbase, Azure Cosmos DB, Azure Database for PostgreSQL, pgvectorscale do TimescaleDB e outros bancos de dados.

Como o DiskANN funciona

O DiskANN combina duas técnicas: o grafo Vamana para a estrutura e navegação do índice, e a quantização de produto (PQ) para a compressão de vetores em memória.

Construindo o grafo Vamana: O Vamana constrói um grafo direcionado de camada única onde cada nó representa um vetor. Ele inicializa com conexões aleatórias e, em seguida, refina através de poda em duas passagens. A primeira passagem remove arestas de curto alcance redundantes, e a segunda adiciona arestas de longo alcance que permitem ao algoritmo de busca saltar rapidamente para a região correta do grafo sem travessia dispendiosa de múltiplos saltos. Ao contrário da hierarquia de múltiplas camadas do HNSW, a estrutura de camada única do DiskANN o torna prático em disco.

A divisão de RAM/SSD: Os vetores compactados por PQ (por exemplo, 32 bytes versus 512 bytes para um vetor float32 de 128 dimensões) são armazenados em cache na RAM para cálculos rápidos de distância aproximada. O índice do grafo Vamana completo e os vetores de precisão total ficam no SSD e são lidos apenas para a reclassificação final.

Execução da consulta: A busca é executada em duas fases. Primeiro, o algoritmo usa vetores compactados por PQ na RAM para navegar pelo grafo e identificar um conjunto de candidatos — sem necessidade de leituras em disco. Em seguida, ele busca vetores de precisão total no SSD para esse conjunto de candidatos e calcula as distâncias exatas. Esse design de duas fases é o que preserva a recuperação (recall) alta, mantendo os requisitos de RAM baixos.

FreshDiskANN: A implementação original do Vamana gera um índice estático. O FreshDiskANN, um projeto subsequente da Microsoft Research, amplia o DiskANN para oferecer suporte a inserções, exclusões e atualizações simultâneas em tempo real, sem a necessidade de reconstruções completas do índice. Ele mantém uma taxa de recuperação superior a 95%, o que o torna prático para conjuntos de dados em streaming, como sistemas de recomendação e repositórios de documentos em tempo real.

DiskANN vs. HNSW vs. IVF

DiskANN, HNSW e IVF são os três principais tipos de índices ANN em produção hoje.

DiskANN (Vamana)HNSWFIV
Armazenamento primárioSSD + pequeno cache de RAMRAM (índice completo na memória)RAM ou armazenamento de objetos
Escala prática máximaBilhões de vetores100-200M vetores (limitado por RAM)Centenas de milhões
Latência de consultaBaixa (5-15 ms típica)Muito baixa (1-5 ms)Baixo-médio
Uso de memóriaBaixa (comprimida por PQ na RAM)Alto (vetores completos na DRAM)Médio
Atualizações em tempo realVia FreshDiskANNSuportado nativamenteReconstrução cara
Pesquisa filtradaPor Filtered-DiskANNVia pós-filtragemForte (variantes de FIV)
Melhor paraRAG em escala de bilhões, agentes, recomendações em hardware de baixo custoConjuntos de dados menores onde a latência ultrabaixa é crítica e há RAM disponívelPesquisa filtrada com altos índices de filtragem (>85%)

Se o seu conjunto de dados couber na RAM (menos de ~100 milhões de vetores), o HNSW geralmente oferece a menor latência. Quando você estiver indexando centenas de milhões de vetores, ou quando o custo da RAM for uma restrição, o DiskANN é a opção mais prática. Para cargas de trabalho em que 85%+ do conjunto de dados é filtrado antes da pesquisa, as variantes do IVF podem apresentar desempenho superior a ambas.

Desempenho e benchmarks

Resultados originais do NeurIPS 2019 (Microsoft Research): No conjunto de dados SIFT-1B (1 bilhão de vetores de 128 dimensões), o DiskANN atingiu 5.000 QPS com 95%+ recall@1 e latência média inferior a 5 ms em uma única máquina com 64 GB de RAM e um SSD NVMe. Isso representa de 5 a 10 vezes mais vetores por máquina do que as soluções baseadas em DRAM com desempenho equivalente.

Benchmark do Couchbase Hyperscale Vector Index (outubro de 2025): O Hyperscale Vector Index da Couchbase baseado em Vamana/DiskANN, introduzido no Couchbase 8.0, foi avaliado de forma independente usando o VectorDBBench em um conjunto de dados de 1 bilhão de vetores:

  • 700+ QPS com latência inferior a um segundo na recuperação 93%
  • 350x mais rápido do que o MongoDB Atlas, que apresentou 2 QPS com mais de 40 segundos de latência média em uma consulta de 89%, em condições idênticas

Casos de uso do DiskANN

RAG: Sistemas RAG corporativos que abrangem bilhões de trechos de documentos precisam de recuperação de alto *recall* sem infraestrutura pesada em RAM. O DiskANN é bem adequado para cargas de trabalho onde o conteúdo do *prompt* é imprevisível e a ampla cobertura semântica é essencial.

Agentes de IA e memória contextual: Sistemas baseados em agentes acumulam histórico de interações, preferências e contexto de tarefas como vetores ao longo do tempo. O DiskANN permite que os agentes busquem em um corpus de memória ilimitado e em crescimento, sem que a memória RAM se torne um gargalo.

Pesquisa semântica e recomendações: Plataformas de busca de comércio eletrônico, mídia e corporativas que operam com centenas de milhões a bilhões de itens se beneficiam da taxa de transferência e da precisão de recuperação do DiskANN, especialmente quando combinadas com a pré-filtragem de metadados por meio do Filtered-DiskANN.

IA com foco em privacidade e local (on-premises): Quando os dados não podem sair de um ambiente controlado, a capacidade do DiskANN de rodar em hardware SSD local torna aplicações de IA geradora com preservação de privacidade mais prático do que abordagens que exigem clusters hospedados na nuvem e com uso intensivo de RAM.

DiskANN em bancos de dados e plataformas

Índice de Vetores de Hiperescala do Couchbase: O Couchbase 8.0 introduziu o Hyperscale Vector Index (HVI), uma implementação híbrida de Vamana + IVF disponível em Couchbase Capella e implantações auto-gerenciadas. Ele opera em discos particionados para processamento distribuído e foi projetado especificamente para cargas de trabalho de RAG que exigem ampla cobertura semântica.

Azure Cosmos DB e Azure Database for PostgreSQL da Microsoft: O Azure Cosmos DB usa o DiskANN para habilitar a busca vetorial em sua API NoSQL. O Azure Database for PostgreSQL o oferece como uma alternativa baseada no Vamana aos algoritmos HNSW e IVFFlat do pgvector.

Milvus e Zilliz: O Milvus é um banco de dados vetorial de código aberto que oferece suporte ao DiskANN como um tipo de índice em disco (DISKANN) para coleções de bilhões de escalas, com o grafo Vamana em disco e vetores comprimidos por PQ na RAM. O Zilliz Cloud é a versão corporativa totalmente gerenciada do Milvus.

pgvectorscale (TimescaleDB): pgvectorscale é uma extensão do PostgreSQL desenvolvida pela Timescale que implementa o StreamingDiskANN. Ela é otimizada para séries temporais continuamente atualizadas e conjuntos de dados de streaming.

Como otimizar o DiskANN

Os principais parâmetros do DiskANN governam a relação de compromisso entre latência de revocação e vazão:

  • GrauMáximo: Número máximo de arestas de saída por nó do gráfico. Valores mais altos melhoram o recall, mas aumentam o tamanho do índice e as leituras de SSD. Padrão: 56.
  • TamanhoDaListaDePesquisa: Tamanho da lista de candidatos durante a busca. Aumente para 150-200 para cargas de trabalho de alto *recall* (RAG, memória de agentes); mantenha em 100 para vazão máxima. Padrão: 100.
  • PQCodeBudgetGBRatio: Fração do tamanho do conjunto de dados a ser armazenada em cache como vetores compactados por PQ na RAM. Aumente para 0,2 se a margem de RAM permitir e a latência for crítica. Padrão: 0,125.
  • ProporçãoDaLarguraDoFeixe: Leituras SSD paralelas por etapa de consulta. Ajuste para cima (6.0-8.0) para maximizar o QPS em cargas de trabalho de alto rendimento. Padrão: 4.0.

Para dimensionamento de hardware, considere aproximadamente 750 GB a 1 TB de SSD NVMe para um conjunto de dados de float32 de 1 bilhão de pontos (512 GB para vetores de precisão total + ~224 GB para bordas de gráficos), e 64 a 128 GB de RAM para o cache PQ. O DiskANN não é limitado pelo processador; 8 a 16 núcleos são suficientes para a maioria das implementações.

Principais conclusões

O DiskANN aborda o problema econômico fundamental da indexação de ANNs em memória, utilizando SSDs baratos em vez de RAM dispendiosa. Ao combinar o algoritmo de construção de gráficos Vamana com a quantificação de produtos, ele alcança tempos de recall e latência competitivos com as abordagens em memória, com um custo de infraestrutura muito menor.

  1. DiskANN é um algoritmo de AN não linear baseado em gráficos da Microsoft Research (NeurIPS 2019) que é construído com base no algoritmo de construção de gráficos direcionados Vamana.
  2. Armazena o índice completo e vetores de precisão total no SSD, armazenando apenas os vetores comprimidos PQ em RAM para uma rotação aproximada rápida.
  3. Ele indexa 1B+ vetores em uma única máquina com 64 GB de RAM, alcançando uma taxa de recall de 95%+@1 com uma latência inferior a 5 ms no benchmark SIFT-1B.
  4. O DiskANN indexa 5 a 10 vezes mais vetores por máquina do que algoritmos que utilizam apenas DRAM, com latência equivalente, reduzindo diretamente os custos da infraestrutura.
  5. É a escolha certa quando os conjuntos de dados excedem 100-200 milhões de vetores ou quando o custo de RAM é um fator restritivo. O HNSW é preferível para cargas de trabalho com latência crítica mais reduzida.
  6. O FreshDiskANN amplia o DiskANN para suportar inserções, exclusões e atualizações em tempo real sem a necessidade de reconstrução completa do índice.
  7. O Hyperscale Vector Index da Couchbase oferece mais de 700 QPS com 93% recall em escala de bilhões de vetores. Isso é 350x mais rápido do que o MongoDB Atlas em testes independentes no VectorDBBench.

Recursos relacionados

Perguntas Frequentes

O que é o algoritmo Vamana e como ele difere do HNSW? O Vamana cria um grafo dirigido de uma única camada, enquanto o HNSW cria uma hierarquia de múltiplas camadas. A estrutura do HNSW exige que todo o índice esteja no RAM para uma navegação eficiente dos ponteiros. O design de uma única camada do Vamana, com os bordos de longo alcance explicitamente adicionados durante a construção, permite a mesma navegação rápida a partir do disco sem a dependência do RAM.

Como funciona a quantização de produtos no DiskANN e por que isso é necessário? PQ compõe cada vetor em um código compacto (tipicamente 16-32x menor) dividindo-o em sub-vectores e mapeando cada um deles para um centro de massa aprendido. O DiskANN armazena esses códigos em RAM para roteamento aproximado rápido, depois pega vetores de precisão completa do SSD apenas para a reclassificação final, mantendo a pegada no armazenamento em memória compatível mesmo em escala de bilhões de vetores.

Quais são as limitações do DiskANN e quando ele não é a melhor opção? O DiskANN é menos adequado para conjuntos de dados pequenos (inferior a ~10M vetores), onde o HNSW oferece uma latência menor com menos sobrecarga. Além disso, ele é menos adequado para cargas de trabalho com ratios de filtragem muito elevados (85-98%), onde as variantes do IVF superam os índices baseados em gráficos. A latência de consulta também é altamente sensível à velocidade do disco, e os SSDs SATA apresentarão um desempenho significativamente inferior ao NVMe.

Como faço para estimar os requisitos de hardware para uma implementação do DiskANN? Para um conjunto de dados de float32 de 128 dimensões, considere aproximadamente 750 GB-1 TB de SSD NVMe (512 GB para vetores e ~224 GB para bordas de gráficos) e 64 a 128 GB de RAM para o cache PQ. O DiskANN é mais dependente de I/O do que de CPU, portanto 8 a 16 núcleos são suficientes para a maioria das implantações em produção.Quais bancos de dados suportam o DiskANN? O DiskANN está disponível no Couchbase 8.0 (índice vetorial de hiperescalabilidade, com benchmark de 700+ QPS em escala de bilhão de vetores), no Azure Cosmos DB, no Azure Database for PostgreSQL, no Milvus/Zilliz Cloud e no pgvectorscale do TimescaleDB. A Microsoft também utiliza o DiskANN no Bing e no Microsoft 365, tornando-o o algoritmo de busca vetorial de escala bilionária mais amplamente utilizado na infraestrutura empresarial atualmente.

Compartilhe este artigo

Autor

Deixe um comentário

Deixe a proliferação de bancos de dados no passado

Cada adição de pilha significa mais contas a pagar e mais coisas a administrar. Estimule o quanto você poderia economizar em 2 minutos.