adesso Blog

Vektoren und Vektordatenbanken

Ein Vektor ist ein mathematisches Objekt, das als geordnete Menge von Zahlen, den so genannten Komponenten, dargestellt werden kann, die der Ausdehnung des Vektors entlang verschiedener Koordinatenachsen entsprechen. Im zweidimensionalen Raum (einer Ebene) kann ein Vektor als (x,y) dargestellt werden, wobei x und y die Komponenten entlang der horizontalen bzw. vertikalen Achse sind. Im dreidimensionalen Raum kann ein Vektor als (x,y,z) mit Komponenten entlang der x-, y- und z-Achse dargestellt werden. Es gibt viele Möglichkeiten, die Ähnlichkeit zwischen zwei Vektoren zu definieren (euklidischer Abstand und Kosinusähnlichkeit sind zwei Beispiele). Der euklidische Abstand verallgemeinert unsere natürliche Vorstellung des Abstands zwischen zwei Punkten auf einer Ebene (#Pythagorassatz), während die Kosinusähnlichkeit die Idee wiedergibt, dass zwei Vektoren ähnlich sind, wenn sie ungefähr in dieselbe Richtung zeigen.

Vektordatenbanken sind im Wesentlichen darauf ausgelegt, mit Metadaten angereicherte Sammlungen von Vektoren gleicher Größe zu speichern und auf einer solchen Sammlung schnell approximative Ähnlichkeitssuchen durchzuführen. Die Frage, die sie effizient und in kurzer Zeit beantworten können, lautet

"Welches sind für einen beliebigen Vektor X die fünf Vektoren in einer gespeicherten Sammlung, die X am ähnlichsten sind?“

Die Leistungsfähigkeit von Vektordatenbanken erschließt sich, wenn die gespeicherten Vektoren als semantische Einbettungen ihrer zugehörigen Metadaten erhalten werden und die Ähnlichkeit zwischen zwei Vektoren das Konzept der semantischen Nähe der Metadaten erfasst. Handelt es sich bei den Metadaten um natürliche Sprache, kann dies mit einem Einbettungsalgorithmus wie word2vec oder einem großen Sprachmodell wie Luminous von Aleph Alpha oder den GPT-Modellen von OpenAI erreicht werden.

Aus Anwendungssicht kann ein solcher vektorisierter Dokumentenspeicher als Wissensspeicher für die Retrievalphase einer Retrieval Augmented Generation (RAG) Architektur dienen.

Weitere Informationen findet ihr auch in diesem Blog-Beitrag zum Thema: „Smarte Informationsbeschaffung: Conversational Agents für den Zugriff auf Unternehmenswissen“.

Benchmarking von Vektordatenbanken

Bei der Entwicklung einer datenintensiven Anwendung (oder jeder anderen Anwendung) ist es wichtig, für jede Komponente den optimalen Punkt auf der Leistungs-/Kostenskala zu finden. Für eine Vektordatenbank gibt es zwei wichtige Leistungsaspekte:

  • 1. Wie lange dauert es, einen Vektor einzufügen (einschließlich seiner Auffindbarkeit für Ähnlichkeitssuchen)?
  • 2. Wie lange dauert es, für einen Eingabevektor die Vektoren zu finden, die N am nächsten liegen?

Es ist wichtig zu beachten, dass die Antworten auf die zweite Frage immer im Zusammenhang mit der Genauigkeit der Approximation gesehen werden müssen. Je schlechter eine Approximation ist, desto einfacher ist es, sie schnell abzuleiten. Die Optimierung der Genauigkeit der Ähnlichkeitssuche erfordert oft eine sorgfältige Anpassung von Parametern, die sowohl die Upload- als auch die Suchzeit stark beeinflussen können und deren Wahl stark von der Struktur des zugrundeliegenden Datensatzes abhängt. Um den Parameterraum für unseren Benchmark-Test überschaubar zu halten, konzentrieren wir uns daher auf die Untersuchung der oben genannten Fragen, ohne die Genauigkeit der Ähnlichkeitssuche zu optimieren.

Die Datenbanken

In unserem Experiment haben wir drei Open-Source-Konkurrenten im Rennen um Vektordatenbanken getestet - Chroma, Qdrant und Weaviate.

Chroma

Chroma ist eine KI-native, quelloffene Einbettungsdatenbank. Das Unternehmen hat unter der Leitung von Astasia Myers von Quiet Capital eine beeindruckende Seed-Finanzierung in Höhe von 18 Millionen US-Dollar erhalten, was das Vertrauen der Investoren in das Potenzial des Unternehmens unterstreicht. Chroma wirbt damit, dass es mit Batterien ausgestattet ist, die es Entwicklern ermöglichen, Datenbankinstanzen schnell und einfach zu erstellen, was die Entwicklung erleichtert.

Weaviate

Weaviate ist eine Open-Source-Suchmaschine und -Datenbank, die seit 2019 vom Amsterdamer Unternehmen SeMI Technologies entwickelt wird. Das erklärte Ziel von Weaviate ist die Demokratisierung von Suchfunktionen, die bisher von einigen großen Technologieunternehmen monopolisiert wurden. Die Software des Unternehmens bietet den Kundinnen und Kunden die Möglichkeit, sie auf ihrer eigenen Infrastruktur zu betreiben, so dass sie die Kontrolle über ihre Daten hinter der eigenen Firewall behalten. Mit Weaviate Cloud bietet das Unternehmen auch einen cloud-basierten Managed Service an, der Unternehmen, die einen Cloud-Ansatz für die Datenverwaltung bevorzugen, zusätzliche Flexibilität bietet.

Qdrant

Qdrant ist eine Open-Source-Vektordatenbank, die vor mehr als zwei Jahren mit dem Ziel gegründet wurde, eine Vektordatenbank mit Rust als Systemprogrammiersprache zu entwickeln. Anfang 2023 erweiterte Qdrant sein Angebot mit der Einführung von Qdrant Cloud, einer gemanagten Vektordatenbanklösung für mehr als 1.000 Qdrant-Cluster. Qdrant erweitert nun sein Angebot mit verwalteten Vor-Ort-Lösungen für Unternehmenskunden und festigt damit seine Position als vielseitige und zugängliche Vektordatenbanklösung.

Das Experiment

In unserem Benchmark haben wir die Leistung von Chroma, Qdrant und Weaviate beim Laden und Abrufen von Vektordaten anhand des GloVe 100-Winkeldatensatzes getestet. Bei diesem Datensatz handelt es sich um eine Sammlung von 1,1 Millionen 100-dimensionalen Vektoren, die mit dem GloVe-Algorithmus als Wortdarstellung gewonnen wurden.

Weitere Informationen zu glove100_angular findet ihr hier.

Um die Leistung beim Einfügen von Vektoren zu testen, wurden 1.183.514 100-dimensionale Vektoren in Stapeln von etwa 1.000 Vektoren in jede Datenbank auf jeder der Testinfrastrukturen geladen. Auf diese Weise kann die Fähigkeit der Datenbank getestet werden, Daten schnell und effizient einzufügen. Dies ist ein wichtiger Indikator für Anwendungsfälle mit großen Datenmengen.

Für die Vektorsuche wurden 10.000 Abfragen auf den geladenen Daten durchgeführt. Dies ist ein Maß für die Suchgeschwindigkeit der Datenbank, die für Anwendungen, die schnelle Ergebnisse auf Benutzeranfragen liefern müssen, von entscheidender Bedeutung ist.

Die Infrastruktur für unsere Tests umfasste drei Größen von Azure Virtual Machines (VMs) - klein (S), mittel (M) und groß (L). Jede virtuelle Maschine wurde sowohl mit einer Festplatte (HDD) als auch mit einem Solid State Drive (SSD) getestet. Die Spezifikationen für jede VM-Größe waren:

Machine tier Virtual CPUs (#) Memory (GB)
S 1 3.5
M 2 8
L 4 16

Die Testergebnisse

Die Upload Performance

Die Benchmark-Ergebnisse zeigen erhebliche Unterschiede in der Upload-Leistung zwischen Chroma, Qdrant und Weaviate. Chroma (Single-Thread) erreicht Spitzen-Upload-Zeiten von 268 Minuten auf der virtuellen Maschine (VM) der S-Ebene mit Festplattenlaufwerk (HDD). Auf der Maschine der L-Ebene mit Solid State Drive (SSD) sinkt diese Zeit auf 39 Minuten. Die Leistung auf der S-Tier-Maschine nimmt je nach Stack mit der Zeit deutlich ab, wobei die Schwankungen zwischen den einzelnen Stacks besonders groß sind. Über alle Rechner hinweg zeigt Chroma jedoch eine deutlich bessere Leistung mit SSD im Vergleich zu HDD.

Im Gegensatz dazu weisen Qdrant und Weaviate, die beide im Multithreading-Modus arbeiten, schnellere Ladezeiten auf. Die Ladezeit von Qdrant schwankt je nach Maschinenebene zwischen 13 und sechs Minuten, während die Ladezeit von Weaviate zwischen 30 und zehn Minuten schwankt. Die Upload-Performance von Weaviate bleibt über die Zeit relativ stabil und zeigt nur minimale Unterschiede zwischen SSD- und HDD-Nutzung.

Qdrant zeichnet sich dadurch aus, dass es Batches im Laufe der Zeit fast sofort hochlädt, was auf die interne Trennung von Upload- und Indizierungsschritten zurückzuführen ist. Insgesamt übertrifft Qdrant Weaviate in Bezug auf die Upload-Leistung leicht.

Die Query Performance

Im Benchmark für die Leistung von Vektordatenbankabfragen wurde die Ausführungszeit von 10.000 Abfragen für die Suche nach dem nächstgelegenen Vektor bewertet. Die Beobachtungen zeigten, dass alle getesteten Systeme - Chroma, Weaviate und Qdrant - die Aufgabe auf allen Maschinenebenen in weniger als zwei Minuten erledigten.

Unterschiede ergaben sich jedoch bei der Betrachtung der minimalen Ausführungszeiten. Chroma benötigte mindestens eine Minute, während Weaviate mindestens 35 Sekunden benötigte. Am effizientesten war Qdrant, das die Aufgabe in nur zehn Sekunden erledigte.

Fazit

Zusammenfassend lässt sich sagen, dass unsere Benchmark-Tests der Vektordatenbanken Chroma, Weaviate und Qdrant einen Vergleich ihrer Upload-Geschwindigkeit und Abfrageleistung ermöglichen. Faktoren wie Maschinenebene, Festplattentyp und Threading-Konfigurationen hatten einen signifikanten Einfluss auf die Upload-Performance, wobei Qdrant durch seine beeindruckende Upload-Geschwindigkeit auffiel. Gleichzeitig wiesen alle drei Datenbanken eine effiziente Abfrageleistung auf, wobei Qdrant wiederum die höchste Geschwindigkeit aufwies.

Diese Ergebnisse unterstreichen, wie wichtig es ist, bei der Auswahl einer Vektordatenbank für KI-zentrierte Anwendungen spezifische betriebliche Anforderungen, Kosteneffizienz und Datenbankfunktionen zu berücksichtigen. Obwohl es keine Patentlösung gibt, bieten unsere Benchmark-Ergebnisse einen Einblick in die Stärken und Schwächen dieser Datenbanken, so dass Interessierte fundierte Entscheidungen treffen können, die ihren individuellen Anforderungen am besten entsprechen.

Bild Stefan Klempnauer

Autor Dr. Stefan Klempnauer

Stefan Klempnauer ist Data & Analytics Consultant mit den Schwerpunkten Datenplattformen, Cloud-Infrastruktur und KI. Bei adesso konzipiert und implementiert er Datenplattformlösungen in Kundenprojekten.

Kategorie:

Methodik

Schlagwörter:

Testing

Diese Seite speichern. Diese Seite entfernen.