← Indietro

DiskANN Explorer: Ricerca vettoriale su scala miliardaria da SSD

DiskANN Conserva una minuscola copia compressa conPQ di ogni vettore in RAM e i vettori completi + il grafo su SSD. La ricerca percorre il grafo con confronti RAM poco onerosi, quindi riordina i candidati principali con una manciata di costose letture dal disco.

Perché esiste “ DiskANN ”: il limite della memoria

RAMPQ codici (32 B/vec)3.2 GB
DiscoVettori completi + grafico (3072 B/vec)307.2 GB
100M vettori × dimensioni 768 Disco / RAM ≈ 96×

Un singolo disco di massa SSD occupa pochissimo spazio sul disco. Il lato RAM si adatta a qualsiasi portatile. Senza il trucco PQ, avresti bisogno di un server con centinaia di GB di RAM solo per caricare il set di dati.

R5
Grado del grafo
L8
Insieme dei candidati
Riclassifica5
Letture su disco
Velocità420ms
Per ogni fase
Confronto PQ (RAM) nel pool di candidati riordinamento su disco top-K risultato
Passo corrente
30 / 30
Ricerca completata. Top-3: [1, 28, 27].

Costo finora

RAM PQ confronta20≈ 20 µs
SSD letture5≈ 500 µs
Latenza totale0.52 ms
Modellato con PQ ≈ 1 µs, SSD ≈ 100 µs. I numeri reali dipendono dall’hardware.

Statistiche di ricerca

Visitato
20 / 36
Riclassificato
5
Top-3
[1, 28, 27]

Come funziona " DiskANN "

  1. Costruire il grafo “ Vamana ”: un grafo kNN a singolo strato (grado R) ottimizzato per la disposizione sequenziale su disco. Nessuna gerarchia — solo un unico grande grafo.
  2. Quantizzazione e suddivisione della memoria: ogni vettore riceve un codice " PQ " (ad es. 32 byte). I codici " PQ " si trovano su RAM. I vettori completi e gli spigoli del grafo si trovano su SSD.
  3. Beam-walk con distanze “ PQ ”: partendo da un punto di ingresso fisso (il medoide), mantenere un pool di candidati di dimensione L. Selezionare il migliore, espandere i suoi vicini, stimare le distanze utilizzando esclusivamente i codici “in-RAM ” PQ. Nessun I/O su disco durante il percorso.
  4. Riorganizzare la classifica dei finalisti su disco: le distanze delle voci in cima al pool di candidati sono state approssimate tramite PQ. Leggere i loro vettori completi dal disco e ricalcolare le distanze esatte per correggere la classifica.
  5. Restituire top-K. I/O totale su disco = un numero esiguo di letture casuali, solitamente inferiore a 20.

Il mestiere

  • Perché è scalabile: RAM contiene solo codici compressi. Un set di dati di 1 miliardo di vettori con un PQ e di 32 byte richiede circa 32 GB RAM — e sta su una singola workstation.
  • Perché è più lento di HNSW: SSD le letture casuali sono circa 100 volte più lente rispetto a RAM. Anche con sole circa 10 letture, la latenza della query è determinata dal disco.
  • Perché supera ancora " IVF_PQ " in termini di recall: la fase di riclassificazione recupera gli errori di quantizzazione che i metodi basati esclusivamente sull’ PQ e non riescono a correggere.

Il modello mentale: « PQ » è il test economico del tipo «questo vicinato è promettente?». Le letture su disco sono il controllo costoso del tipo «lasciami verificare davvero». « DiskANN » svolge la maggior parte del proprio lavoro con il test economico.

Che cos’è “ DiskANN ”?

DiskANN È un indice approssimativo del vicino più prossimo basato su grafi, progettato per set di dati che non rientrano in RAM. Costruisce un grafo a singolo strato Vamana strutturato per un accesso efficiente al disco, mantiene in memoria un codice minuscolo quantizzato per prodotto (PQ) per ogni vettore e memorizza i vettori a piena precisione e gli spigoli del grafo su SSD. Le ricerche navigano nel grafo utilizzando confronti a basso costo in-RAM PQ e ricorrono al disco solo per riorganizzare la classifica di una manciata di finalisti.

In Milvus, DiskANN supporta l’opzione di indicizzazione su disco: le raccolte su scala di miliardi diventano ricercabili su macchine con decine — non centinaia — di gigabyte di RAM, mentre la fase di ri-classificazione su disco mantiene il recall vicino a quello degli indici grafici in memoria.

Cosa controllano le manopole

  • R (grado del grafo, tempo di compilazione): il numero massimo di spigoli per nodo nel grafo " Vamana ". Un valore di R più elevato garantisce una migliore connettività e un recall migliore, a costo di un grafo più grande su disco e di compilazioni più lente.
  • L / search_list (tempo di query): l’insieme dei candidati mantenuto durante la ricerca a fascio — la principale manopola di recall/latenza, equivalente a ef su HNSW. Deve essere almeno pari al proprio top-K.
  • Budget di riclassificazione: il numero di finalisti per i quali vengono recuperati i vettori completi da SSD per il calcolo esatto del punteggio. Ogni operazione corrisponde a una lettura casuale dal disco; è qui che risiede la latenza della query — ed è anche qui che vengono corretti gli errori di approssimazione dell’ PQ.

DiskANN vs HNSW vs IVF

Scegliere DiskANN quando il set di dati (o il consumo di memoria) supera RAM: gestisce query ad alto recall con una frazione della memoria, in cambio di una latenza dell’ordine dei millisecondi dominata dalle letture SSD. Se tutto rientra comodamente in memoria, HNSW risponde più velocemente. Se sono necessarie costruzioni veloci degli indici o un risparmio moderato di memoria senza coinvolgere il disco, le varianti IVF si collocano a metà strada.

Domande frequenti

Quando devo usare « DiskANN » invece di « HNSW »?

Quando i vostri vettori non rientrano più in un “ RAM ” — oppure l’“ RAM ” necessario per contenerli costa più di quanto siate disposti a pagare. Un miliardo di vettori float a 768 dimensioni richiede circa 3 TB di memoria per “ HNSW ”, ma solo poche decine di GB di “ RAM ” più un “ SSD ” con “ DiskANN ”. Se il set di dati rientra comodamente in memoria, “ HNSW ” rimane la scelta con minore latenza.

Di quale hardware ha bisogno " DiskANN "?

Un " NVMe " veloce SSD è il requisito fondamentale, poiché la latenza della query è determinata da una manciata di letture casuali dal disco (ciascuna di circa 100 µs). Le esigenze di " RAM " sono modeste: all’incirca i codici " PQ " (ad es. 32–64 byte per vettore) più i buffer di lavoro.

DiskANN è più lento degli indici in memoria come HNSW?

Per ogni query, sì — in genere pochi millisecondi a una cifra rispetto a valori inferiori al millisecondo per l’ HNSW e in memoria, poiché ogni riorganizzazione su disco è circa 100 volte più lenta di un accesso RAM. Il compromesso è il costo: DiskANN gestisce lo stesso set di dati con un RAM inferiore di un ordine di grandezza, mantenendo il recall al di sopra del 90–95%.

In che modo " DiskANN " mantiene alto il recall nonostante la compressione " PQ "?

PQ I codici vengono utilizzati solo per guidare la navigazione nel grafo, non per produrre punteggi finali. Prima di restituire i risultati, DiskANN legge i vettori a piena precisione dei candidati principali da SSD e li riordina con precisione, correggendo l’errore di quantizzazione che gli indici basati esclusivamente su PQ, come IVF_PQ, non sono in grado di correggere.

Approfondisci: leggi la documentazione di “DiskANN ” per i requisiti di configurazione, oppure consulta “Index Explained” per la guida completa alle decisioni.

Continua a esplorare