HNSWlib vs. Voyager: Auswahl des richtigen Vektorsuchtools für Ihre GenAI-Anwendung
Vektorsuche ist entscheidend in KI-Anwendungen, bei denen es darum geht, Ähnlichkeiten zwischen hochdimensionalen Datenpunkten zu finden. Tools wie HNSWlib und Voyager sind darauf ausgelegt, Nearest-Neighbor-Suchen effizient durchzuführen, damit Systeme schnell verwandte Elemente aus großen Datensätzen abrufen können. Während HNSWlib aufgrund seiner Geschwindigkeit und Genauigkeit an Popularität gewonnen hat, ist Voyager Spotifys neueste Ergänzung, um die Einschränkungen von HNSWlib zu adressieren.
Dieser Beitrag vergleicht die beiden, erklärt ihre Funktionen und Stärken sowie ihre Unterschiede, damit Sie entscheiden können, welches besser für Ihr Projekt geeignet ist.
Was ist Vektorsuche?
Bevor wir in die Details von HNSWlib und Voyager eintauchen, ist es wichtig, die Vektorsuche zu verstehen. Einfach ausgedrückt findet Vektorsuche, oder Vektorähnlichkeitssuche, die nächstgelegenen Vektoren (Datenpunkte) in einem hochdimensionalen Raum zu einem gegebenen Abfragevektor. Diese Vektoren werden häufig von Machine-Learning-Modellen generiert, um das Wesen der unstrukturierten Daten zu erfassen (z. B. die Bedeutung eines Satzes oder die Merkmale eines Bildes).
Im Gegensatz zu traditionellen Datenbanken, bei denen Suchen auf exakten Übereinstimmungen oder Filterung basieren, konzentriert sich die Vektorsuche auf Ähnlichkeit. Das Ziel ist, Vektoren zu finden, die basierend auf einer Distanzmetrik (wie euklidischer Distanz oder Kosinusähnlichkeit) „nah“ beieinander liegen. Beispielsweise können Vektoren in der Verarbeitung natürlicher Sprache (NLP) Wörter oder Sätze repräsentieren, und die Vektorsuche hilft dabei, die semantisch ähnlichsten Wörter oder Texte zu finden. In Empfehlungssystemen identifiziert die Vektorsuche Elemente, die den Präferenzen eines Benutzers am nächsten kommen. Vektorsuchen spielen auch eine entscheidende Rolle bei Retrieval Augmented Generation (RAG), einer Technik, die die Ausgabe großer Sprachmodelle (LLMs) erweitert, indem sie ihnen zusätzliche Kontextinformationen bereitstellt.
Es gibt viele Lösungen auf dem Markt zur Durchführung von Vektorsuchen, darunter:
- Vektorsuchbibliotheken wie HNSWlib und Voyager.
- Zweckgebundene Vektordatenbanken wie Milvus, Zilliz Cloud (vollständig verwaltetes Milvus)
- Leichtgewichtige Vektordatenbanken wie Chroma und Milvus Lite.
- Traditionelle Datenbanken mit Vektorsuch-Erweiterungen
Was ist HNSWlib? Überblick
HNSWlib ist eine Open-Source-Bibliothek für die Approximate-Nearest-Neighbor-Suche (ANNS). Sie basiert auf dem Hierarchical Navigable Small World (HNSW)-Algorithmus, der eine graphbasierte Struktur bildet, in der Datenpunkte Knoten sind. Der Algorithmus navigiert durch diesen Graphen, um schnell ungefähre Nachbarn zu finden, wodurch HNSWlib für die Vektorsuche sehr effizient ist.
HNSWlib-Funktionen und -Stärken
- HNSW-Algorithmus: Der Kern der Leistungsfähigkeit von HNSWlib ist der HNSW-Algorithmus, der eine mehrschichtige Graphstruktur verwendet, um Datenpunkte basierend auf ihrer Nähe zu navigieren und nächste Nachbarn zu finden.
- Geschwindigkeit und Genauigkeit: HNSWlib ist dafür bekannt, Geschwindigkeit und Genauigkeit auszubalancieren. Es liefert schnelle Ergebnisse ohne erheblichen Präzisionsverlust, was gut für Anwendungsfälle ist, die hochwertige Ergebnisse für nächste Nachbarn erfordern.
- Speichereffizienz: HNSWlib hat einen geringen Speicherbedarf und kann dennoch große Datensätze verarbeiten, was gut für Anwendungen mit begrenztem Speicher ist.
- Skalierbarkeit: HNSWlib skaliert gut auf Datensätze mit Millionen von Einträgen, gut für kleine und große Anwendungen.
- Flexibilität: Die Bibliothek ermöglicht es Ihnen, Suchparameter wie Präzision und Recall anzupassen, um für Ihren Anwendungsfall zu optimieren.
HNSWlib ist aufgrund seiner Geschwindigkeit, Flexibilität und Zuverlässigkeit zur bevorzugten Wahl für ANN-Suchaufgaben geworden.
Was ist Voyager? Überblick
Voyager ist Spotifys neueste Bibliothek für die Suche nach nächsten Nachbarn, entwickelt nach umfangreicher Nutzung von HNSWlib und der Identifizierung von Verbesserungsbereichen. Obwohl sie wie HNSWlib auf dem HNSW-Algorithmus basiert, verfügt Voyager über mehrere Optimierungen und zusätzliche Funktionen, die sie besser für Produktionsumgebungen geeignet machen.
Funktionen und Stärken von Voyager
- Schneller und genauer: Voyager baut auf der Geschwindigkeit und Genauigkeit von HNSWlib auf, geht aber noch weiter, mit schnellerer Suche und in einigen Fällen noch höherer Präzision, insbesondere für komplexe groß angelegte Anwendungen.
- Speichereffizienz: Voyager verwendet die 8-Bit-Gleitkommadarstellung E4M3, wodurch es hochdimensionale Daten mit geringerem Speicherverbrauch im Vergleich zu HNSWlib während der Indexerstellung verarbeiten kann.
- Multithreading und Skalierbarkeit: Voyager unterstützt vollständig multithreaded Indexerstellung und Abfragen, um größere Datensätze als HNSWlib zu verarbeiten, insbesondere in verteilten oder Cloud-Umgebungen.
- Sprachunterstützung: Während HNSWlib in erster Linie eine Python-Bibliothek ist, unterstützt Voyager sowohl Python als auch Java, wodurch es flexibler für Produktionsumgebungen wird, die Unterstützung für mehrere Sprachen benötigen.
- Produktionsbereit: Voyager ist für den Unternehmenseinsatz konzipiert, mit Funktionen wie fehlertoleranten Indexdateien, Korruptionserkennung und Google-Cloud-Integration, wodurch es robuster und skalierbarer für Anwendungen mit hohem Datenverkehr wird.
Voyager nimmt die solide Grundlage von HNSWlib und erweitert sie um Funktionen, die es besser für moderne, groß angelegte Systeme geeignet machen.
Wichtige Unterschiede zwischen HNSWlib und Voyager
Suchmethode
Sowohl HNSWlib als auch Voyager verwenden den HNSW-Algorithmus, der für seine Geschwindigkeit und Genauigkeit bei Suchen nach nächsten Nachbarn bekannt ist. Voyager verfügt jedoch über Optimierungen, die es schneller und speichereffizienter als HNSWlib machen. Beispielsweise kann Voyagers multithreaded Indexerstellung große Datensätze schneller verarbeiten, und seine optimierte Speicherverwaltung reduziert den Ressourcenverbrauch, wodurch es besser für Unternehmensanwendungen geeignet ist.
Daten
Beide Tools verarbeiten hochdimensionale Vektordaten, aber Voyager verfügt über mehr Funktionen, die es besser für groß angelegte, cloudbasierte Umgebungen geeignet machen. Voyagers Unterstützung für das Streaming von Daten aus Google Cloud Services und fehlertolerante Indexdateien macht es zuverlässiger für verteilte Systeme. HNSWlib ist gut für lokale Setups oder kleinere Anwendungen, verfügt jedoch nicht über die fortschrittlichen Datenverarbeitungsfunktionen, die Voyager vielseitiger für komplexe Umgebungen machen.
Skalierbarkeit und Leistung
HNSWlib ist bereits skalierbar und funktioniert für die meisten Anwendungsfälle gut. Aber Voyager verfügt über Multithreading, was ihm einen Vorteil beim Umgang mit größeren Datensätzen oder Umgebungen verschafft, in denen Parallelverarbeitung erforderlich ist. Voyager kann Indizes parallel erstellen und abfragen, wodurch die Verarbeitungszeit großer Systeme reduziert wird. Außerdem ermöglichen seine Speicheroptimierungen, wie die 8-Bit-Gleitkommadarstellung, die Verarbeitung größerer Datensätze mit weniger Speicher, wodurch es ressourceneffizienter als HNSWlib ist.
Flexibilität und Anpassung
Beide Bibliotheken sind hinsichtlich der Suchparameter flexibel, aber Voyager bietet mehr Anpassungsmöglichkeiten für den Produktionseinsatz. Es unterstützt Python und Java, was in mehr Umgebungen integriert werden kann. Außerdem machen seine cloudbasierten Funktionen, wie die Google Cloud-Integration und Fehlertoleranz, es besser geeignet für moderne Anwendungen in großem Maßstab. HNSWlib ist flexibel, verfügt jedoch nicht über einige dieser fortgeschrittenen Funktionen und ist in Umgebungen, in denen diese Funktionen benötigt werden, stärker eingeschränkt.
Integration und Ökosystem
HNSWlib ist darauf ausgelegt, in Python-basierte Workflows integriert zu werden, daher eignet es sich gut für Machine-Learning-Pipelines und kleinere Anwendungen. Es verfügt jedoch nicht über die umfassenderen Integrationsmöglichkeiten von Voyager. Voyager unterstützt Python, Java und die Google Cloud-Integration und ist daher vielseitiger bei Deployments auf Unternehmensebene. Voyager kann verteilte Systeme und cloudbasierte Umgebungen bewältigen und ist damit eine umfassendere Lösung für Organisationen mit komplexen Infrastrukturanforderungen.
Benutzerfreundlichkeit
HNSWlib ist einfach zu verwenden und einzurichten, insbesondere für Python-Nutzer. Es eignet sich gut für diejenigen, die eine einfache, schnörkellose Bibliothek für die ANN-Suche möchten. Voyager verfügt über fortgeschrittenere Funktionen, hat jedoch aufgrund von Multithreading, Fehlertoleranz und Cloud-Integration eine etwas höhere Lernkurve. Dennoch erleichtern sein produktionsreifes Design und die umfangreiche Dokumentation für Python und Java die Integration in größere, komplexe Systeme.
Kosten
Beide sind Open Source und kostenlos nutzbar. Voyagers Speichereffizienz und Multithreading können jedoch den Ressourcenverbrauch in groß angelegten oder cloudbasierten Deployments reduzieren, was zu Kosteneinsparungen führt. Die Entscheidung hierbei hängt davon ab, ob Voyagers zusätzliche Geschwindigkeit, Speichereffizienz und Funktionen die zusätzliche Komplexität oder Infrastrukturkosten wert sind.
Sicherheit
Weder HNSWlib noch Voyager verfügen über integrierte Sicherheitsfunktionen wie Verschlüsselung oder Zugriffskontrolle, daher müssen diese separat implementiert werden. Voyagers fehlertolerante Indexdateien und Korruptionserkennung machen es jedoch zuverlässiger für Umgebungen, in denen kritische Datenintegrität erforderlich ist.
Wann HNSWlib gewählt werden sollte
HNSWlib ist eine gute Wahl, wenn:
- Sie ein schnelles und genaues ANN-Suchwerkzeug für kleinere Anwendungen benötigen.
- Ihr Projekt Python-basiert ist und keine Java-Unterstützung erfordert.
- Sie in einer lokalen Umgebung oder mit kleineren Datensätzen arbeiten, in denen fortgeschrittene Fehlertoleranz und Cloud-Funktionen nicht notwendig sind.
- Sie eine einfache, leicht zu implementierende Lösung mit minimalem Overhead wünschen.
Wann Voyager gewählt werden sollte
Voyager ist besser geeignet, wenn:
- Sie eine produktionsreife Lösung mit Unterstützung für sowohl Python als auch Java benötigen.
- Ihr Projekt große Datensätze umfasst und Multithread-Verarbeitung für eine schnellere Indexerstellung und Abfrage erfordert.
- Sie Speichereffizienz für die Verarbeitung hochdimensionaler Daten in ressourcenbeschränkten Umgebungen benötigen.
- Ihre Infrastruktur cloudbasierte Umgebungen umfasst; Sie benötigen Funktionen wie Google Cloud-Integration und fehlertolerante Indexdateien.
- Sie fortgeschrittene Anpassungsmöglichkeiten und ein Tool benötigen, das für Deployments auf Unternehmensebene optimiert ist.
Letztendlich hängt Ihre Wahl zwischen HNSWlib und Voyager von Ihren spezifischen Projektanforderungen ab. Beide Tools bieten starke Leistung, aber Ihre Wahl sollte mit dem Umfang und der Komplexität Ihrer Anwendung sowie den verfügbaren Ressourcen und Ihrer Infrastruktur übereinstimmen.
Vergleich von Vektorsuchbibliotheken und speziell entwickelten Vektordatenbanken
Sowohl Vektorsuchbibliotheken wie HNSWlib und Voyager als auch speziell entwickelte Vektordatenbanken wie Milvus zielen darauf ab, das Problem der Ähnlichkeitssuche für hochdimensionale Vektordaten zu lösen, erfüllen jedoch unterschiedliche Rollen.
Vektorsuchbibliotheken konzentrieren sich ausschließlich auf die Aufgabe der effizienten Suche nach nächsten Nachbarn. Sie bieten schlanke, schnelle Lösungen, um Vektoren zu finden, die einem Abfragevektor ähnlich sind. Sie werden häufig in kleineren Single-Node-Umgebungen oder für Anwendungen mit statischen oder mittelgroßen Datensätzen verwendet. Allerdings fehlen ihnen im Allgemeinen Funktionen zur Verwaltung dynamischer Daten, zur Bereitstellung von Persistenz oder zur Skalierung über verteilte Systeme hinweg. Entwickler, die diese Bibliotheken verwenden, müssen Datenverwaltung, Aktualisierungen und Skalierung in der Regel manuell handhaben.
Andererseits sind zweckgebundene Vektordatenbanken wie Milvus und Zilliz Cloud (das verwaltete Milvus) umfassende Systeme, die für die Verwaltung großer Mengen von Vektordaten entwickelt wurden. Diese Datenbanken gehen über die einfache Vektorsuche hinaus und bieten Funktionen wie persistente Speicherung, Echtzeit-Aktualisierungen, verteilte Architektur und erweiterte Abfragemöglichkeiten. Sie unterstützen dynamische Datensätze und können problemlos Echtzeitanwendungen bewältigen, bei denen Daten häufig aktualisiert werden. Darüber hinaus enthalten Vektordatenbanken häufig integrierte Unterstützung für die Kombination von Vektorsuchen mit herkömmlicher Filterung und Metadatenabfragen, was sie ideal für Produktionsumgebungen macht, die Skalierbarkeit, hohe Verfügbarkeit und komplexere Suchfunktionen erfordern.
- Informieren Sie sich über die neuesten neuen Funktionen und Verbesserungen von Zilliz Cloud: Zilliz Cloud Update: Migration Services, Fivetran Connectors, Multi-replicas, and More
Wann welche Vektorsuchlösung gewählt werden sollte
Wählen Sie Vektorsuchbibliotheken, wenn:
- Sie über einen kleinen bis mittelgroßen, relativ statischen Datensatz verfügen.
- Sie die volle Kontrolle über Indexierungs- und Suchalgorithmen bevorzugen.
- Sie die Suche in ein bestehendes System einbetten und die Infrastruktur verwalten können.
Wählen Sie zweckgebundene Vektordatenbanken, wenn:
- Sie auf Milliarden von Vektoren über verteilte Systeme hinweg skalieren müssen.
- Ihr Datensatz sich häufig ändert und Echtzeit-Aktualisierungen erfordert.
- Sie verwaltete Lösungen bevorzugen, die Speicherung, Skalierung und Abfrageoptimierungen für Sie übernehmen.
Zusammenfassend lässt sich sagen, dass Vektorsuchbibliotheken am besten für einfachere Anwendungsfälle in kleinerem Maßstab geeignet sind, bei denen Geschwindigkeit und Speichereffizienz Priorität haben, die betriebliche Komplexität jedoch minimal ist. Zweckgebundene Vektordatenbanken hingegen sind für groß angelegte, produktionsreife Systeme konzipiert, die dynamische Datenverarbeitung, Skalierbarkeit und Benutzerfreundlichkeit erfordern und Entwicklern, die komplexe Anwendungen verwalten, häufig erhebliche betriebliche Vorteile bieten.
Bewertung und Vergleich beliebiger Vektorsuchlösungen
OK, jetzt haben wir den Unterschied zwischen verschiedenen Vektorsuchlösungen kennengelernt. Die folgenden Fragen lauten: Wie stellen Sie sicher, dass Ihr Suchalgorithmus genaue Ergebnisse liefert und dies mit blitzschneller Geschwindigkeit tut? Wie bewerten Sie die Effektivität verschiedener ANN-Algorithmen, insbesondere in großem Maßstab?
Um diese Fragen zu beantworten, benötigen wir ein Benchmarking-Tool. Es gibt viele solcher Tools, und zwei erweisen sich als die effizientesten: ANN-Benchmarks und VectorDBBench.
ANN-Benchmarks
ANN-Benchmarks (Approximate Nearest Neighbor Benchmarks) ist ein Open-Source-Projekt, das entwickelt wurde, um die Leistung verschiedener Algorithmen für approximative nächste Nachbarn (ANN) zu bewerten und zu vergleichen. Es bietet ein standardisiertes Framework für das Benchmarking verschiedener Algorithmen bei Aufgaben wie der hochdimensionalen Vektorsuche, sodass Entwickler und Forscher Kennzahlen wie Suchgeschwindigkeit, Genauigkeit und Speichernutzung über verschiedene Datensätze hinweg messen können. Durch die Verwendung von ANN-Benchmarks können Sie die Kompromisse zwischen Geschwindigkeit und Präzision für Algorithmen wie jene bewerten, die in Bibliotheken wie Faiss, Annoy, HNSWlib und anderen zu finden sind, wodurch es zu einem wertvollen Werkzeug wird, um zu verstehen, welche Algorithmen für bestimmte Anwendungen am besten geeignet sind.
ANN Benchmarks GitHub-Repository: https://github.com/erikbern/ann-benchmarks
ANN Benchmarks Website: https://ann-benchmarks.com/
VectorDBBench: ein Open-Source-Benchmarking-Tool
VectorDBBench ist ein Open-Source-Benchmarking-Tool, das für Nutzer entwickelt wurde, die leistungsstarke Systeme zur Datenspeicherung und -abfrage benötigen, insbesondere Vektordatenbanken. Dieses Tool ermöglicht es Nutzern, die Leistung verschiedener Vektordatenbanksysteme wie Milvus und Zilliz Cloud (das verwaltete Milvus) mit ihren eigenen Datensätzen zu testen und zu vergleichen und das am besten geeignete für ihre Anwendungsfälle zu bestimmen. VectorDBBench ist in Python geschrieben und unter der MIT-Open-Source-Lizenz lizenziert, was bedeutet, dass jeder es frei nutzen, ändern und verbreiten kann.
VectorDBBench GitHub-Repository: https://github.com/zilliztech/VectorDBBench
Werfen Sie einen kurzen Blick auf die Leistung gängiger Vektordatenbanken im VectorDBBench Leaderboard.
Techniken & Einblicke zur VectorDB-Evaluierung:
Weitere Ressourcen zu VectorDB, GenAI und ML
Weiterlesen

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


