← Voltar

DiskANN Explorer: Pesquisa de vetores à escala de mil milhões a partir de SSD

DiskANN Mantém uma pequena cópia comprimida com o formato «PQ » de cada vetor em RAM e os vetores completos + gráfico em SSD. A pesquisa percorre o gráfico com comparações « RAM » de baixo custo e, em seguida, reclassifica os principais candidatos com um pequeno número de leituras de disco dispendiosas.

Por que razão existe o « DiskANN »: a barreira da memória

RAMPQ códigos (32 B/vec)3.2 GB
DiscoVetores completos + gráfico (3072 B/vec)307.2 GB
100M vetores × dimensões de 768 Disco / RAM ≈ 96×

Um único disco de armazenamento em massa SSD ocupa pouco espaço no disco. O lado RAM cabe em qualquer portátil. Sem o truque PQ, seria necessário um servidor com centenas de GB de RAM só para carregar o conjunto de dados.

R5
Grau do grafo
L8
Conjunto de candidatos
Re-classificar5
Leituras de disco
Velocidade420ms
Por etapa
Comparação PQ (RAM) no conjunto de candidatos reclassificação do disco top-K resultado
Passo atual
30 / 30
Pesquisa concluída. Top-3: [1, 28, 27].

Custo até ao momento

RAM PQ compara20≈ 20 µs
SSD leia5≈ 500 µs
Latência total0.52 ms
Modelado com PQ ≈ 1 µs, SSD ≈ 100 µs. Os números reais dependem do hardware.

Estatísticas de pesquisa

Visitado
20 / 36
Reordenado
5
Top-3
[1, 28, 27]

Como funciona o « DiskANN »

  1. Construa o grafo « Vamana »: um grafo kNN de camada única (grau R) otimizado para disposição sequencial em disco. Sem hierarquia — apenas um grande grafo.
  2. Armazenamento quantizado e dividido: cada vetor recebe um pequeno código « PQ » (por exemplo, 32 bytes). Os códigos « PQ » encontram-se em RAM. Os vetores completos + arestas do grafo encontram-se em SSD.
  3. Beam-walk com distâncias « PQ »: a partir de um ponto de entrada fixo (o medóide), mantenha um conjunto de candidatos de tamanho L. Selecione o melhor, expanda os seus vizinhos e estime as distâncias utilizando apenas os códigos «in-RAM » e « PQ ». Não há E/S de disco durante o percurso.
  4. Reclassifique os finalistas a partir do disco: as entradas de topo do conjunto de candidatos tiveram as suas distâncias aproximadas por PQ. Leia os seus vetores completos a partir do disco e recalcule as distâncias exatas para corrigir a classificação.
  5. Retorno top-K. I/O total do disco = um pequeno número de leituras aleatórias, normalmente menos de 20.

A transação

  • Por que é escalável: o « RAM » armazena apenas códigos comprimidos. Um conjunto de dados de 1 mil milhões de vetores com « PQ » de 32 bytes necessita de cerca de 32 GB RAM — cabe numa única estação de trabalho.
  • Por que é mais lento do que HNSW: SSD as leituras aleatórias são cerca de 100 vezes mais lentas do que RAM. Mesmo com apenas cerca de 10 leituras, a latência da consulta é dominada pelo disco.
  • Por que razão ainda supera o método « IVF_PQ » em termos de recall: a etapa de reclassificação recupera erros de quantização que os métodos baseados exclusivamente em « PQ » não conseguem corrigir.

O modelo mental: « PQ » é o teste económico do tipo «esta vizinhança é promissora?». As leituras de disco são a verificação dispendiosa do tipo «deixa-me verificar de facto». O « DiskANN » realiza a maior parte do seu trabalho com o teste económico.

O que é « DiskANN »?

DiskANN é um índice aproximado de vizinho mais próximo baseado em grafos, concebido para conjuntos de dados que não cabem em RAM. Constrói um grafo de camada única Vamana organizado para um acesso eficiente ao disco, mantém um pequeno código quantizado por produto (PQ) para cada vetor na memória e armazena os vetores de precisão total e as arestas do grafo em SSD. As pesquisas navegam pelo grafo utilizando comparações económicas in-RAM PQ e só recorrem ao disco para reclassificar um pequeno número de finalistas.

Em Milvus, o DiskANN alimenta a opção de índice no disco: coleções na ordem dos mil milhões tornam-se pesquisáveis em máquinas com dezenas — e não centenas — de gigabytes de RAM, enquanto a etapa de reclassificação no disco mantém a precisão de recuperação próxima da dos índices de grafos na memória.

O que os botões controlam

  • R (grau do grafo, tempo de compilação): o número máximo de arestas por nó no grafo « Vamana ». Um valor de R mais elevado proporciona melhor conectividade e recall, à custa de um grafo maior no disco e de compilações mais lentas.
  • L / search_list (tempo de consulta): o conjunto de candidatos mantido durante a pesquisa de feixe — o principal controlador de recall/latência, equivalente a ef no HNSW. Deve ser, no mínimo, o seu top-K.
  • Orçamento de reclassificação: quantos finalistas têm os seus vetores completos recuperados de SSD para uma pontuação exata. Cada um corresponde a uma leitura aleatória do disco, pelo que é aqui que reside a latência da consulta — e também onde os erros de aproximação de « PQ » são corrigidos.

DiskANN vs HNSW vs IVF

Escolha « DiskANN » quando o conjunto de dados (ou o consumo de memória) exceder « RAM »: este serve consultas de alta precisão de recuperação com uma fração da memória, em troca de uma latência ao nível de milissegundos dominada por leituras « SSD ». Se tudo couber confortavelmente na memória, « HNSW » responde mais rapidamente. Se precisar de construções rápidas de índices ou de poupanças moderadas de memória sem envolver o disco, as variantes « IVF » situam-se num meio-termo.

Perguntas frequentes

Quando devo usar « DiskANN » em vez de « HNSW »?

Quando os seus vetores já não cabem num « RAM » — ou o « RAM » para os armazenar custa mais do que está disposto a pagar. Um bilião de vetores «float» de 768 dimensões necessita de cerca de 3 TB de memória para « HNSW », mas apenas dezenas de GB de « RAM », além de um « SSD » com « DiskANN ». Se o conjunto de dados couber confortavelmente na memória, « HNSW » continua a ser a opção de menor latência.

Que hardware é necessário para o « DiskANN »?

Um « NVMe » rápido SSD é o requisito fundamental, uma vez que a latência da consulta é dominada por um pequeno número de leituras aleatórias do disco (cada uma com cerca de 100 µs). As necessidades de « RAM » são modestas: aproximadamente os códigos « PQ » (por exemplo, 32–64 bytes por vetor) mais os buffers de trabalho.

O « DiskANN » é mais lento do que os índices na memória, como o « HNSW »?

Por consulta, sim — tipicamente milésimos de segundo de um único dígito, em comparação com menos de um milésimo de segundo para o « HNSW » na memória, porque cada reclassificação no disco é cerca de 100 vezes mais lenta do que um acesso « RAM ». A contrapartida é o custo: o « DiskANN » processa o mesmo conjunto de dados com uma ordem de magnitude menor de « RAM », mantendo a precisão de recuperação acima de 90–95%.

Como é que o « DiskANN » mantém uma elevada precisão de recuperação, apesar da compressão « PQ »?

PQ Os códigos são utilizados apenas para orientar a percorreção do grafo, não para produzir pontuações finais. Antes de devolver os resultados, o « DiskANN » lê os vetores de precisão total dos principais candidatos a partir do « SSD » e reclassifica-os com exatidão, corrigindo o erro de quantização que os índices baseados exclusivamente em « PQ », como o « IVF_PQ », não conseguem corrigir.

Para aprofundar: leia a documentação «DiskANN » para conhecer os requisitos de configuração, ou consulte «Index Explained» para obter o guia de decisão completo.

Continue a explorar