Was ist eine Vektordatenbank?
Was ist eine Vektordatenbank?
Eine Vektordatenbank ist eine spezialisierte Datenbank, die entwickelt wurde, um hochdimensionale Vektoreinbettungen zu speichern, zu verwalten und zu durchsuchen. Die Hauptfunktion besteht darin, als externe Wissensbasis zu dienen, die ein großes Sprachmodell (LLM) abfragen kann, um die Reaktion des Modells mit den in der Wissensbasis gespeicherten Daten zu „erden“ und das Risiko von Halluzinationen zu verringern. Die Kernfunktion einer Vektordatenbank ist die Durchführung semantischer Ähnlichkeitssuchen, die Datenpunkte identifizieren, die konzeptionell ähnlich sind, anstatt nur Schlüsselwörter abzugleichen. Sie indiziert und speichert sowohl dichte als auch spärliche Vektoreinbettungen aus Machine-Learning-Modellen, um eine schnelle Ähnlichkeitssuche und -abfrage zu ermöglichen. Diese Einbettungen erfassen die semantischen Beziehungen innerhalb unstrukturierter Daten wie Text, Bilder oder Audiodaten. Im Vektorraum, der von der Datenbank erstellt wird, werden verwandte Elemente näher beieinander positioniert, was es dem System ermöglicht, die Ergebnisse nach Relevanz zu ordnen.
Vektoreinbettungen
Was sind Vektoreinbettungen und wie werden sie erstellt?
Vektoreinbettungen sind numerische Arrays von Fließkommawerten, die Daten wie Wörter, Sätze oder ganze Dokumente darstellen. Sie werden durch Machine-Learning-Modelle generiert, wie zum Beispiel große Sprachmodelle, die digitale Medien in Punkte innerhalb eines hochdimensionalen Raums umwandeln. Dieser Prozess erfasst die zugrunde liegende semantische Bedeutung und die Beziehungen der ursprünglichen Daten. So könnte zum Beispiel das Bild von einem Golden Retriever, der in einem Park spielt“, in eine Einbettung umgewandelt werden, die numerisch nahe an der Einbettung für den Text „glücklicher Hund draußen“ liegt. Es ist wichtig zu beachten, dass Einbettungen, die von einem Modell eines Anbieters erstellt wurden, nicht von einem anderen verstanden werden können; zum Beispiel ist eine Einbettung aus einem OpenAI-Modell nicht mit einer Einbettung eines anderen Anbieters kompatibel.
Was sind dichte Vektoren (Einbettungen)?
Dichte Vektoren sind hochdimensionale numerische Einbettungen, bei denen fast alle Elemente ungleich Null sind. Ein entscheidendes Merkmal dichter Vektoren ist, dass alle von einem bestimmten Modell generierten Vektoren dieselbe feste Anzahl von Dimensionen haben müssen, was eine Voraussetzung für die Messung der Ähnlichkeit ist. Einbettungen von Azure OpenAI-Modellen haben beispielsweise 1.536 Dimensionen. Sie werden in der Regel von Transformationsmodellen erzeugt und erfassen eine reichhaltige und nuancierte semantische Bedeutung, was sie ideal für die semantische Ähnlichkeitssuche macht. Ein dichter Vektor für das Wort „Katze“ könnte zum Beispiel als [0,135, -0,629, 0,327, 0,366, ...] erscheinen.
Was sind Sparse-Vektoren (Einbettungen)?
Was ist Vektorsuche?
Die Vektorsuche ist eine Technik, die ähnliche Daten findet, indem sie als hochdimensionale numerische Vektoren dargestellt werden, die oft als Einbettungen bezeichnet werden. Diese Methode ist äußerst vielseitig, da Machine-Learning-Modelle Einbettungen für alle Arten digitaler Medien generieren können, einschließlich Text, Bilder und Audio. Das grundlegende Konzept besteht darin, Daten in einen Vektorraum zu transformieren, in dem der geometrische Abstand zwischen Vektoren ihre semantische Ähnlichkeit anzeigt. Eine Vektorsuche ist eine Abfrageoperation, die basierend auf einer bestimmten Ähnlichkeitsmetrik die Vektoren findet, die einem gegebenen Abfragevektor am ähnlichsten sind. Zum Beispiel könnte eine Suche nach „Säugetier“ semantisch mit einem Dokument übereinstimmen, das das Wort „Hund“ enthält, im Gegensatz zu einer herkömmlichen Stichwortsuche, die den wörtlichen Begriff und nicht die zugrunde liegende Bedeutung findet.
Ähnlichkeit messen
Wie werden Vektorähnlichkeit und Abstand gemessen?
In der Vektorsuche wird die Ähnlichkeit quantifiziert, indem der Abstand oder der Winkel zwischen zwei Vektoren in einem hochdimensionalen Raum berechnet wird; Vektoren, die näher beieinander liegen, gelten als semantisch ähnlicher. Zu den gängigen Metriken zur Messung dieser Nähe gehören die Kosinusähnlichkeit, der euklidische Abstand, das Punktprodukt, der Hamming-Abstand und der Manhattan-Abstand.
- Die L2-Distanz (Euklidische Distanz) ist die gebräuchlichste Metrik und stellt die geradlinige „Luftlinie“-Distanz zwischen zwei Vektorpunkten dar.
- L1-Distanz (Manhattan-Distanz) misst die Entfernung, indem die absoluten Differenzen der Vektorkomponenten summiert werden, als ob man durch ein Stadtnetz navigiert.
- Der Linf-Abstand (Tschebyscheff-Abstand) ist die maximale Differenz entlang einer einzelnen Dimension.
- Die Kosinusähnlichkeit misst den Kosinus des Winkels zwischen zwei Vektoren, um festzustellen, ob sie unabhängig von ihrer Größe in eine ähnliche Richtung zeigen. Eine Punktzahl von 1 bedeutet identische Vektoren, und -1 bedeutet, dass sie gegensätzlich sind. Dies ist eine gängige Wahl für normalisierte Einbettungsräume, wie die von OpenAI-Modellen.
- Die Punktprodukt-Ähnlichkeit berücksichtigt sowohl den Winkel als auch den Betrag der Vektoren. Sie entspricht der Kosinusähnlichkeit für normalisierte Vektoren, ist jedoch oft rechnerisch effizienter.
- Der Hamming-Abstand berechnet die Anzahl der Dimensionen, in denen sich zwei Vektoren unterscheiden.
- Maximales inneres Produkt (MaxSim) ist eine Ähnlichkeitsmetrik, die verwendet wird, wenn ein einzelnes Datenelement (wie ein Dokument) durch mehrere Vektoren dargestellt wird (z. B. ein Vektor für jedes Wort). Es berechnet die Ähnlichkeit, indem jeder Vektor in einem Dokument mit dem ähnlichsten Vektor im anderen Dokument verglichen wird und die Ergebnisse dann aggregiert werden.
Effiziente Suchalgorithmen
Wie ermöglichen Algorithmen wie HNSW und ANN eine effiziente Vektorsuche?
Die Suche nach ähnlichen Vektoren in einem riesigen, hochdimensionalen Datensatz stellt eine erhebliche Herausforderung dar. Ein Brute-Force-Ansatz, der einen Abfragevektor mit jedem anderen Vektor vergleicht, ist bei wachsenden Datensätzen rechnerisch nicht durchführbar. Dies wird durch die Verwendung von Algorithmen für ungefähre nächste Nachbarn (ANN) gelöst. Diese Techniken finden schnell Vektoren, die einer Abfrage am nächsten liegen, ohne einen vollständigen Vergleich durchzuführen. Ein gängiger ANN-Algorithmus ist hierarchical navigable small world (HNSW), der Vektoren in eine geschichtete Graphstruktur organisiert, in der Vektoren basierend auf der Ähnlichkeit verbunden sind, was eine schnelle Traversierung ermöglicht. Dies ist effizienter und genauer als eine FLAT-(Brute-Force-)Suche, die zwar rechenintensiv, aber präziser ist. Durch die drastische Reduzierung des Suchumfangs erzielen diese Strukturen massive Geschwindigkeitsgewinne, allerdings auf Kosten einer kleinen, aber in der Regel akzeptablen Reduzierung der absoluten Genauigkeit.
Was ist eine mehrstufige Suche in Vektorsuchsystemen?
Ein mehrstufiger Abruf oder ein Retriever-Framework (der Einfachheit halber können wir es auch Suchpipeline nennen) ist ein orchestrierter Workflow, der die Abfolge der Schritte zur Verarbeitung einer Abfrage definiert. Dazu gehören in der Regel Schritte wie die Abfrageanalyse, der erste Abruf aus einem oder mehreren Indizes (z. B. die Kombination von lexikalischer Suche und Vektorsuche für einen hybriden Ansatz), das Filtern der Ergebnisse und eine letzte Phase des erneuten Rankings, bevor die Ergebnisse an den Nutzer zurückgegeben werden.
Welche Vorteile bietet die Verwendung des Retriever-Frameworks zum Erstellen von Suchpipelines?
Der Hauptvorteil besteht in Modularität und Flexibilität. Dies ermöglicht Entwicklern, verschiedene Such- und Rankingstrategien (wie die Hybridsuche) einfach zu kombinieren und komplexe, mehrstufige Retrieval-Pipelines zu erstellen, die auf spezifische Bedürfnisse zugeschnitten sind, ohne das gesamte System von Grund auf neu erstellen zu müssen.
Was ist semantisches Reranking?
Semantisches Reranking ist ein Prozess der zweiten Stufe, der die Relevanz der Suchergebnisse verbessert. Nachdem eine erste, schnelle Abfragestufe eine große Menge von Kandidatendokumenten abgerufen hat, wird ein rechenintensiveres, aber genaueres Modell verwendet, um diese kleinere Menge neu zu ordnen und ein präziseres endgültiges Ranking zu erstellen.
Wie funktioniert ein mehrstufiger „Retrieve-and-Rerank“-Prozess?
Eine „Retrieve-and-Rerank“-Pipeline arbeitet in zwei unterschiedlichen Phasen:
- Retrieve (Abrufen): Eine effiziente, skalierbare Abrufmethode (wie ANN-Vektorsuche oder lexikalische BM25-Suche) wird verwendet, um einen ersten Satz von Kandidatendokumenten aus dem vollständigen Index abzurufen.
- Rerank (Neusortieren): Diese kleinere Kandidatenmenge wird dann an ein leistungsfähigeres Modell (wie einen Cross-Encoder) übergeben, das eine tiefere Analyse der semantischen Beziehung zwischen der Abfrage und jedem Dokument durchführt und sie neu anordnet, um die endgültige Relevanz zu verbessern.
Was ist der Unterschied zwischen Bi-Encoder- und Cross-Encoder-Architekturen für das Reranking?
- Ein Bi-Encoder erzeugt unabhängig voneinander separate Einbettungen für die Abfrage und die Dokumente. Da die Dokumenteinbettungen vorberechnet und indiziert werden können, ist diese Architektur sehr schnell und wird für die erste Abrufphase verwendet.
- Ein Cross-Encoder verarbeitet die Abfrage und ein Dokument zusammen als einen einzigen Eingang. Dadurch kann er viel tiefere kontextuelle Interaktionen erfassen, was er sehr genau, aber auch viel langsamer macht. Aufgrund der hohen Rechenkosten eignet er sich nur für die Reranking-Phase einer kleinen Menge von Kandidatenergebnissen.
Speicher und Optimierung
Wie werden Vektoren normalerweise in einer Vektordatenbank gespeichert und welche Speicherherausforderungen ergeben sich?
Vektoren werden in der Regel als Arrays von 32-Bit-Gleitkommazahlen (float32) gespeichert. Die primäre Herausforderung ist der immense Speicherbedarf; ein einzelner Vektor mit 384 Dimensionen verbraucht ungefähr 1,5 KB. Ein Index mit 100 Millionen Dokumenten kann daher allein durch das Hinzufügen eines Vektorfeldes um das Siebenfache anwachsen. Da Vektorsuchalgorithmen wie HNSW aus Leistungsgründen erfordern, dass der Index in den RAM geladen wird, entstehen dadurch erhebliche Herausforderungen hinsichtlich der Speicherkosten und der Skalierbarkeit.
Was ist Vektorquantisierung?
Die Vektorquantisierung ist eine verlustbehaftete Komprimierungstechnik, die den Speicher- und Rechenbedarf eines Modells reduziert, indem dessen Parameter mit weniger Bits dargestellt werden. Dies ist besonders nützlich für LLMs, die Milliarden von Parametern haben können. Durch die Konvertierung von hochpräzisen float32-Zahlen in niedrigere Ganzzahlen wie int8 oder int4 kann die Quantisierung die Modellgröße erheblich reduzieren und die Inferenz bei minimalen Auswirkungen auf die Genauigkeit beschleunigen.
Was ist skalare Quantisierung (SQ)?
Die skalare Quantisierung komprimiert Vektoren, indem sie den kontinuierlichen Bereich von float32-Werten auf eine diskrete Menge von ganzzahligen Werten mit niedrigerer Genauigkeit (z. B. int8) abbildet. Dies kann eine bis zu vierfache Reduzierung der Speichergröße erreichen, während ein erheblicher Teil der Größeninformationen des Vektors erhalten bleibt, was für die Relevanz wichtig ist.
Was ist binäre Quantisierung (BQ)?
Die binäre Quantisierung ist eine aggressivere Kompressionstechnik, die jede Komponente eines float32-Vektors in eine binäre Darstellung (z. B. 1-Bit) umwandelt. Dadurch kann eine bis zu 32-fache Komprimierung erreicht werden, was maximale Speichereinsparungen bietet und schnellere Berechnungen mit ganzzahlbasierten Operationen ermöglicht, oft auf Kosten eines gewissen Präzisionsverlusts.
Was sind die Vorteile einer integrierten Vektor-Speicher-(Datenbank-) und Such-Platform?
Eine integrierte Platform, die Vektorspeicher und -suche mit traditionellen Datenbankfunktionen (wie lexikalischer Suche und Filterung) kombiniert, bietet erhebliche Vorteile. Sie vereinfacht die Architektur, da die Synchronisierung der Daten zwischen separaten Systemen nicht mehr erforderlich ist. Am wichtigsten ist jedoch, dass sie eine leistungsstarke Hybridsuche ermöglicht, bei der lexikalische Suche, Vektorsuche und Metadatenfilterung in einer einzigen, einheitlichen Abfrage durchgeführt werden können, was zu relevanteren Ergebnissen und einer einfacheren Entwicklererfahrung führt.
Wie unterscheidet sich die Vektorsuche von der lexikalischen Suche?
- Die lexikalische Suche (z. B. BM25) basiert auf dem Abgleich von Schlüsselwörtern. Sie findet Dokumente, die die genauen Begriffe enthalten, die in der Abfrage vorhanden sind. Sie ist präzise, versteht aber keinen Kontext oder Synonyme.
- Die Vektorsuche basiert auf semantischer Bedeutung. Sie findet Dokumente, die der Suchanfrage konzeptionell ähnlich sind, auch wenn sie keine Schlüsselwörter gemeinsam haben. Sie eignet sich hervorragend zum Verstehen der Nutzerabsicht, kann jedoch weniger präzise sein als die lexikalische Suche.
Was sind häufige Anwendungsfälle für Vektordatenbanken? Was können Entwickler mit der Vektorsuche erstellen?
Entwickler nutzen Vektordatenbanken, um komplexe Anwendungen zu entwickeln, die auf dem Verständnis der semantischen Bedeutung von Daten basieren. Häufige Anwendungsfälle:
- Semantische Suche: Erstellen von Sucherlebnissen, die die Nutzerabsicht über Schlüsselwörter hinaus verstehen, wie z. B. in E-Commerce- oder Dokumentenerkennungssystemen.
- Retrieval Augmented Generation (RAG): Bereitstellung von LLMs und Chatbots mit Zugriff auf externes, aktuelles Wissen, um genauere und sachlichere Antworten zu generieren.
- Empfehlungs-Engines: Produkte, Artikel oder Medien empfehlen, die auf konzeptioneller Ähnlichkeit mit den Interessen oder dem früheren Verhalten eines Nutzers basieren
- Bild- und multimodale Suche: Visuell ähnliche Bilder finden oder in verschiedenen Datentypen suchen (z. B. Text verwenden, um ein Bild zu finden)