Obsah
DiskANN
DiskANN (Disk-based Approximate Nearest Neighbor) je revoluční algoritmus a indexovací systém pro vyhledávání ve vektorech, který vyvinula společnost Microsoft Research.
Zatímco tradiční vektorové indexy (jako je HNSW, který je dnes jakýmsi průmyslovým standardem) vyžadují uložení celého indexu do operační paměti (RAM), DiskANN je navržen tak, aby efektivně fungoval z rychlých SSD disků (NVMe).
Problém, který DiskANN řeší: Cena za paměť (RAM)
Pokud vyvíjíte AI aplikaci (např. RAG pro velký jazykový model) a máte několik tisíc nebo milionů dokumentů, bez problémů je nacpete do RAM. Pokud ale škálujete na stovky milionů nebo miliardy vektorů, narazíte na tvrdý limit:
- Grafové indexy jako HNSW jsou extrémně náročné na paměť.
- RAM je drahá a její kapacita na jednom serveru je omezená.
- Pro uložení miliardy vektorů o stovkách dimenzí byste potřebovali terabyty RAM, což znamená nasazení masivních a drahých clusterů.
DiskANN tento problém řeší tím, že přesouvá zátěž na mnohem levnější úložiště.
Jak DiskANN funguje?
Aby vyhledávání na disku nebylo pomalé (přístup na disk je z principu mnohem pomalejší než do RAM), využívá DiskANN kombinaci unikátní grafové struktury a chytré komprese:
- Graf Vamana: Jádrem DiskANN je nový typ grafového algoritmu nazvaný Vamana. Na rozdíl od HNSW, který je vícevrstvý a vyžaduje mnoho náhodných skoků, je Vamana plošší graf s menším průměrem. Je optimalizovaný tak, aby při hledání minimalizoval počet „skoků“ na disk (disk reads).
- Komprese v RAM (Product Quantization): V operační paměti se nenechává celý index, ale pouze vysoce komprimované „náčrty“ vektorů a základní navigační mapa. To zabírá zlomek původního místa.
- Plná data na SSD: Samotný plný graf a přesné hodnoty vektorů jsou uloženy na NVMe SSD discích.
Při dotazu systém bleskově proběhne komprimovanou mapu v RAM, určí přibližnou oblast, kde se nacházejí nejbližší sousedé, a následně provede jen několik málo cílených čtení z SSD disku pro načtení přesných dat.
Výhody pro vektorové databáze (např. Milvus)
Implementace DiskANN do vektorových databází (např. Milvus jej plně podporuje) přinesla obrovský posun v tzv. TCO (Total Cost of Ownership – celkové náklady na vlastnictví):
| Vlastnost | Tradiční HNSW (In-Memory) | DiskANN (SSD-based) |
|---|---|---|
| Kapacita dat uzlu | Desítky milionů vektorů | Miliardy vektorů |
| Cena infrastruktury | Velmi vysoká (obří RAM) | Nízká (NVMe SSD jsou 10x levnější) |
| Rychlost (Latence) | < 1 ms | 1–5 ms (stále bleskové) |
| Přesnost (Recall) | Velmi vysoká (~99 %) | Velmi vysoká (~95-99 %) |
DiskANN zkrátka umožňuje firmám prohledávat miliardové datasety na zlomku hardwaru, aniž by si uživatel všiml jakéhokoliv zpomalení.
