milvus-logo
LFAI
Home
  • Konzepte

On-Disk-Index

In diesem Artikel wird ein Algorithmus zur Indexierung auf der Festplatte namens DiskANN vorgestellt. DiskANN basiert auf Vamana-Graphen und ermöglicht eine effiziente Suche in großen Datenbeständen.

Um die Abfrageleistung zu verbessern, können Sie für jedes Vektorfeld einen Indextyp angeben.

Derzeit unterstützt ein Vektorfeld nur einen Index-Typ. Milvus löscht automatisch den alten Index, wenn der Indextyp gewechselt wird.

Voraussetzungen

Um DiskANN zu verwenden, beachten Sie, dass

  • DiskANN standardmäßig deaktiviert ist. Wenn Sie einen In-Memory-Index einem On-Disk-Index vorziehen, sollten Sie diese Funktion deaktivieren, um eine bessere Leistung zu erzielen.
    • Um sie zu deaktivieren, können Sie in Ihrer milvus-Konfigurationsdatei queryNode.enableDisk in false ändern.
    • Um sie wieder zu aktivieren, können Sie queryNode.enableDisk auf true setzen.
  • Die Milvus-Instanz läuft auf Ubuntu 18.04.6 oder einer späteren Version.
  • Der Milvus-Datenpfad sollte auf eine NVMe-SSD gemountet werden, um die volle Leistung zu erreichen:
    • Bei einer Milvus-Einzelinstanz sollte der Datenpfad /var/lib/milvus/data in dem Container sein, in dem die Instanz läuft.
    • Für eine Milvus-Cluster-Instanz sollte der Datenpfad /var/lib/milvus/data in den Containern sein, in denen die QueryNodes und IndexNodes laufen.

Begrenzungen

Um DiskANN zu verwenden, müssen Sie sicherstellen, dass Sie

  • Verwenden Sie nur Float-Vektoren mit mindestens 1 Dimension in Ihren Daten.
  • Verwenden Sie nur Euklidische Distanz (L2), Inneres Produkt (IP) oder COSINE, um den Abstand zwischen Vektoren zu messen.

Index- und Sucheinstellungen

  • Parameter für den Indexaufbau

    Wenn Sie einen DiskANN-Index erstellen, verwenden Sie DISKANN als Indextyp. Es sind keine Indexparameter erforderlich.

  • Suchparameter

    ParameterBeschreibungBereichStandardwert
    search_listGröße der Kandidatenliste, eine größere Größe bietet eine höhere Auffindungsrate bei verminderter Leistung.[topk, int32_max]16

DiskANN ist abstimmbar. Sie können die DiskANN-bezogenen Parameter in ${MILVUS_ROOT_PATH}/configs/milvus.yaml ändern, um die Leistung zu verbessern.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
ParameterBeschreibungWertebereichStandardwert
MaxDegreeMaximaler Grad des Vamana-Graphen.
Ein größerer Wert bietet eine höhere Wiederauffindungsrate, erhöht aber die Größe des Index und die Zeit für den Aufbau des Index.
[1, 512]56
SearchListSizeGröße der Kandidatenliste.
Ein größerer Wert erhöht den Zeitaufwand für den Aufbau des Indexes, bietet aber eine höhere Wiederfindungsrate.
Setzen Sie ihn auf einen Wert kleiner als MaxDegree, es sei denn, Sie müssen die Zeit für den Indexaufbau reduzieren.
[1, int32_max]100
PQCodeBugetGBRatioGrößenbeschränkung für den PQ-Code.
Ein größerer Wert bietet eine höhere Abrufrate, erhöht aber den Speicherverbrauch.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioVerhältnis von zwischengespeicherten Knotennummern zu Rohdaten.
Ein größerer Wert verbessert die Indexerstellungsleistung bei erhöhtem Speicherbedarf.
[0.0, 0.3)0.10
BeamWidthRatioVerhältnis zwischen der maximalen Anzahl von IO-Anfragen pro Suchiteration und der CPU-Anzahl.[1, max(128 / CPU-Anzahl, 16)]4.0

Fehlersuche

  • Wie kann man mit dem io_setup() failed; returned -11, errno=11:Resource temporarily unavailable Fehler umgehen?

    Der Linux-Kernel bietet die Funktion Asynchronous non-blocking I/O (AIO), die es einem Prozess ermöglicht, mehrere E/A-Operationen gleichzeitig zu initiieren, ohne auf die Fertigstellung einer dieser Operationen warten zu müssen. Dies trägt zur Leistungssteigerung von Anwendungen bei, bei denen sich Verarbeitung und E/A überschneiden können.

    Die Leistung kann mithilfe der virtuellen Datei /proc/sys/fs/aio-max-nr im proc-Dateisystem eingestellt werden. Der Parameter aio-max-nr bestimmt die maximale Anzahl der zulässigen gleichzeitigen Anfragen.

    Der Standardwert für aio-max-nr ist 65535, Sie können ihn auf 10485760 erhöhen.

Übersetzt vonDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?