DiskANN Es wird eine winzige, mit „PQ “-Komprimierung komprimierte Kopie jedes Vektors unter RAM sowie die vollständigen Vektoren und der Graph unter SSD gespeichert. Die Suche durchläuft den Graphen mit kostengünstigen „ RAM “-Vergleichen und ordnet anschließend die besten Kandidaten mit einer Handvoll aufwendiger Festplattenzugriffe neu.
Ein einzelner Standard- SSD -Speicher reicht für die Festplattenseite problemlos aus. Die „ RAM “-Seite passt in jeden Laptop. Ohne den „ PQ “-Trick bräuchte man einen Server mit Hunderten von GB „ RAM “, um den Datensatz überhaupt laden zu können.
PQ ≈ 1 µs, SSD ≈ 100 µs. Reelle Zahlen sind hardwareabhängig.R), der für sequenzielles Festplattenlayout optimiert ist. Keine Hierarchie – nur ein großer Graph.L beibehalten. Der beste Kandidat wird ausgewählt, seine Nachbarn werden erweitert, und die Abstände werden ausschließlich anhand der Codes „in-RAM “ und „ PQ “ geschätzt. Während des Beam-Walks findet kein Festplatten-I/O statt.Das mentale Modell: „ PQ “ ist der kostengünstige Test „Ist diese Umgebung vielversprechend?“. Lesevorgänge auf der Festplatte sind die aufwendige Überprüfung „Lass mich das tatsächlich verifizieren“. „ DiskANN “ erledigt den Großteil seiner Arbeit mit dem kostengünstigen Test.
DiskANN ist ein graphbasierter Index für die ungefähre Suche nach dem nächsten Nachbarn, der für Datensätze entwickelt wurde, die nicht in „ RAM “ passen. Er baut einen einlagigen „Vamana “-Graphen auf, der für effizienten Festplattenzugriff ausgelegt ist, hält für jeden Vektor im Speicher einen winzigen, produktquantisierten (PQ) Code bereit und speichert die Vektoren in voller Präzision sowie die Graphenkanten auf SSD. Bei der Suche wird der Graph mithilfe kostengünstiger In-RAM - PQ -Vergleiche durchlaufen, und auf die Festplatte wird nur zugegriffen, um eine Handvoll Finalisten neu zu ordnen.
In „ Milvus “ ermöglicht „ DiskANN “ die Option für einen Index auf Festplatte: Sammlungen im Milliardenbereich lassen sich auf Rechnern mit Dutzenden – nicht Hunderten – von Gigabyte „ RAM “ durchsuchen, während der Schritt der Neuordnung auf Festplatte den Recall nahe an den von In-Memory-Graphenindizes hält.
R (Graphgrad, Erstellungszeit): Die maximale Anzahl von Kanten pro Knoten im „ Vamana “-Graph. Ein höherer R-Wert sorgt für bessere Konnektivität und einen besseren Recall, geht jedoch mit einem größeren Graph auf der Festplatte und langsameren Erstellungsvorgängen einher.L / „ search_list “ (Abfragezeit): Der während der Beam-Suche gepflegte Kandidatenpool – der wichtigste Regler für Recall und Latenz, vergleichbar mit „ ef “ in „ HNSW “. Er muss mindestens so groß sein wie Ihr „ top-K “.Wählen Sie „ DiskANN “, wenn der Datensatz (oder der Speicherbedarf) die Kapazität von „ RAM “ übersteigt: Es bedient Abfragen mit hoher Recall-Rate mit einem Bruchteil des Speichers, im Gegenzug für eine Latenz im Millisekundenbereich, die durch Lesevorgänge von „ SSD “ dominiert wird. Wenn alles problemlos in den Speicher passt, liefert „ HNSW “ schnellere Ergebnisse. Wenn Sie schnelle Indexerstellungen oder moderate Speichereinsparungen ohne Einbeziehung der Festplatte benötigen, bieten die Varianten von „ IVF “ einen Mittelweg.
Wenn Ihre Vektoren nicht mehr in „ RAM “ passen – oder der „ RAM “, der sie aufnehmen soll, mehr kostet, als Sie bereit sind zu zahlen. Eine Milliarde 768-dimensionale Float-Vektoren benötigen ~3 TB im Arbeitsspeicher für „ HNSW “, aber nur einige Dutzend GB für „ RAM “ sowie ein „ SSD “ mit „ DiskANN “. Wenn der Datensatz problemlos in den Arbeitsspeicher passt, bleibt „ HNSW “ die Wahl mit der geringeren Latenz.
Ein schneller „ NVMe “ ( SSD ) ist die zentrale Anforderung, da die Abfragelatenz durch eine Handvoll zufälliger Festplattenzugriffe (jeweils ~100 µs) dominiert wird. Die Anforderungen an den „ RAM “ sind bescheiden: in etwa die „ PQ “-Codes (z. B. 32–64 Bytes pro Vektor) plus Arbeitspuffer.
Pro Abfrage ja – typischerweise im niedrigen einstelligen Millisekundenbereich im Vergleich zu unter einer Millisekunde bei der „In-Memory“- HNSW, da jede Neuordnung auf Festplatte etwa 100-mal langsamer ist als ein Zugriff über „ RAM “. Der Kompromiss liegt bei den Kosten: „ DiskANN “ verarbeitet denselben Datensatz mit einer um eine Größenordnung geringeren „ RAM “, während der Recall bei über 90–95 % bleibt.
PQ Codes dienen ausschließlich zur Steuerung des Graphdurchlaufs, nicht zur Ermittlung endgültiger Bewertungen. Vor der Rückgabe der Ergebnisse liest „ DiskANN “ die Vektoren mit voller Genauigkeit der besten Kandidaten aus „ SSD “ ein und ordnet sie exakt neu, wobei der Quantisierungsfehler korrigiert wird, den reine, auf „ PQ “ basierende Indizes wie „ IVF_PQ “ nicht beheben können.
Mehr dazu: Lesen Sie die Dokumentation zu „DiskANN “ für die Systemvoraussetzungen oder sehen Sie sich „Index Explained“ an, um den vollständigen Leitfaden zu erhalten.
Verfolgen Sie die mehrschichtige Graphensuche Schritt für Schritt – von „Highway Jumps“ bis hin zu „Local Walks“.
Nebeneinander-Vergleich von Brute-Force- und Cluster-Suche. Optimieren Sie „ nprobe “ in Echtzeit.
Ziehen Sie einen Abfragepunkt und wechseln Sie zwischen „ L2 “, „Cosine“ und „ IP “, um zu sehen, wie sich der „nächstgelegene“ Punkt verändert.