Was ist eine Vektordatenbank?
Definition: Vektordatenbank
Eine Vektordatenbank ist eine Datenbank, die Informationen als Vektoren speichert, also als numerische Darstellungen von Datenobjekten, die auch als Vektoreinbettungen bezeichnet werden. Es nutzt die Leistungsfähigkeit dieser Vektoreinbettungen, um einen riesigen Datensatz aus unstrukturierten Daten und teilweise strukturierten Daten, wie Bilder, Texte oder Sensordaten, zu indexieren und zu durchsuchen. Vektordatenbanken werden zur Verwaltung von Vektoreinbettungen erstellt und bieten daher eine vollständige Lösung zur Verwaltung unstrukturierter und teilweise strukturierter Daten.
Eine Vektordatenbank ist nicht dasselbe wie eine Vektorsuch-Bibliothek oder ein Vektorindex. Vektordatenbanken sind Datenverwaltungslösungen zum Speichern und Filtern von Metadaten. Sie sind skalierbar, unterstützen dynamische Datenänderungen, führen Sicherungen durch und bieten Sicherheitsfunktionen.
Vektordatenbanken organisieren die Daten in Form von hochdimensionalen Vektoren. Hochdimensionale Vektoren enthalten Hunderte von Dimensionen, wobei jede Dimension einem bestimmten Merkmal oder einer Eigenschaft des abgebildeten Datenobjekts entspricht.
Was sind Vektoreinbettungen?
Vektoreinbettungen sind numerische Darstellungen von Subjekten, Wörtern, Bildern oder anderen Datenelementen. Vektoreinbettungen – auch als Einbettungen bekannt – werden von großen Sprachmodellen und anderen KI-Modellen generiert.
Anhand des Abstands zwischen Vektoreinbettungen können Vektordatenbanken oder Vektorsuchmaschinen die Ähnlichkeit von Vektoren ermitteln. Der Abstand kann mehrere Dimensionen von Datenobjekten abbilden, um maschinelles Lernen und das Verständnis von Mustern, Beziehungen und zugrunde liegenden Strukturen durch KI zu ermöglichen.
Wie funktioniert eine Vektordatenbank?
Eine Vektordatenbank verwendet Algorithmen, um Vektoreinbettungen zu indexieren und abzufragen. Diese Algorithmen ermöglichen eine ANN-Suche (Approximate Nearest Neighbor, angenäherter nächster Nachbar) mittels Hashing, Quantisierung oder graphbasierter Suche.
Bei der ANN-Suche wird der nächstgelegene Vektornachbar einer Anfrage gesucht, um Informationen abzurufen. Die Suche nach dem annähernd nächsten Nachbarn ist weniger rechenintensiv als eine kNN-Suche (k-Nearest-Neighbor-Algorithmus), dafür aber auch weniger genau. Sie funktioniert jedoch effizient und im großen Stil für große Datensätze mit hochdimensionalen Vektoren.
Eine Vektordatenbank-Pipeline sieht wie folgt aus:
Indizierung: Eine Vektordatenbank verwendet Hashing-, Quantisierungs- oder graphbasierte Techniken, um Vektoren zu indexieren, indem sie sie einer vorgegebenen Datenstruktur zuordnet. Auf diese Weise wird die Suche beschleunigt.
- Hashing: Ein Hashing-Algorithmus, wie etwa der LSH-Algorithmus (Locality-Sensitive Hashing), eignet sich gut für die ungefähre Suche nach den nächsten Nachbarn, da er schnelle Ergebnisse ermöglicht und ungefähre Ergebnisse liefert. LSH verwendet Hashtabellen (stellen Sie sich eine Art von Sudoku-Puzzle vor), um die nächsten Nachbarn zu kartografieren. Eine Abfrage wird in die Tabelle gehasht und dann mit einer Reihe von Vektoren in derselben Tabelle verglichen, um deren Ähnlichkeit zu ermitteln.
- **Quantisierung:** Quantisierungstechniken, wie etwa die Produktquantisierung (PQ), unterteilen Vektoren in kleinere Teile, bilden diese Teile mit Code ab und fügen sie anschließend wieder zusammen. Das Ergebnis ist eine Codedarstellung eines Vektors und dessen Komponenten. Die Gesamtheit dieser Codes wird auch als Codebuch bezeichnet. Vektordatenbanken, die Quantisierung verwenden, brechen die an sie gestellten Abfragen in Code herunter und vergleichen sie anschließend mit dem Codebuch, um den ähnlichsten Code zu finden und Ergebnisse zu generieren.
- Graphbasiert: Ein Graphalgorithmus, wie der Hierarchical Navigable Small World (HNSW)-Algorithmus, verwendet Knoten zur Darstellung von Vektoren. Sie gruppieren die Knoten in Clustern und ziehen Linien oder Kanten zwischen ähnlichen Knoten, um hierarchische Graphen zu erstellen. Bei einer Abfrage navigiert der Algorithmus durch die Graph-Hierarchie und sucht nach Knoten mit Vektoren, die dem Abfragevektor möglichst ähnlich sind.
Vektordatenbanken indexieren außerdem die Metadaten von Datenobjekten. Daher enthalten Vektordatenbanken zwei Indizes: einen Vektorindex und einen Metadatenindex.
Abfragen: Wenn eine Vektordatenbank eine Abfrage erhält, vergleicht sie die indexierten Vektoren mit dem Abfragevektor, um die nächsten Vektornachbarn zu ermitteln. Zur Ermittlung der nächsten Nachbarn verwendet die Vektordatenbank mathematische Methoden, die man auch als Ähnlichkeitsmaße bezeichnet. Wir unterscheiden verschiedene Arten von Ähnlichkeitsmaßen:
- **Cosinus-Ähnlichkeit** misst die Ähnlichkeit auf einer Skala von -1 bis 1. Dabei wird der Kosinus des Winkels zwischen zwei Vektoren im Vektorraum bestimmt, um einander entgegengesetzte Vektoren (-1), orthogonale Vektoren (0) oder identische Vektoren (1) zu unterscheiden.
- Euklidische Distanz bestimmt die Ähnlichkeit auf einer Skala von 0 bis unendlich, indem die Distanz zwischen Vektoren in einer geraden Linie gemessen wird. Identische Vektoren werden als 0 dargestellt, und größere Werte stehen für einen größeren Abstand zwischen den Vektoren.
- Das Skalarprodukt ermittelt die Ähnlichkeit zwischen Vektoren auf einer Skala von minus unendlich bis unendlich. Dazu werden das Produkt der Länge von zwei Vektoren und der Kosinus des Winkels zwischen ihnen gemessen. Dadurch ergeben sich negative Werte für Vektoren, die voneinander wegzeigen, 0 für orthogonale Vektoren und positive Werte für Vektoren, die in dieselbe Richtung zeigen.
Nachbearbeitung: Der letzte Schritt in einer Vektordatenbank-Pipeline ist manchmal die Nachbearbeitung oder Nachfilterung, bei der die Vektordatenbank ein anderes Ähnlichkeitsmaß verwendet, um die nächsten Nachbarn neu zu ordnen. In dieser Phase filtert die Datenbank die bei der Suche identifizierten nächsten Nachbarn für die Suche anhand ihrer Metadaten.
Manche Vektordatenbanken wenden Filter an, bevor eine Vektorsuche durchgeführt wird. In diesem Fall spricht man von Vorbereitung oder Vorabfilterung.
Warum sind Vektordatenbanken wichtig?
Vektordatenbanken sind wichtig, weil sie Vektoreinbettungen enthalten und eine Reihe von Funktionen ermöglichen, inklusive Indexierung, Distanzmetriken und Ähnlichkeitssuche. Mit anderen Worten, Vektordatenbanken sind auf die Verwaltung von unstrukturierten Daten und halbstrukturierten Daten spezialisiert. Daher sind Vektordatenbanken ein unverzichtbares Tool in den Bereichen Machine Learning und KI.
Kernkomponenten von Vektordatenbanken
Vektordatenbanken bestehen meistens aus den folgenden Kernkomponenten:
- Leistung und Fehlertoleranz: Die Prozesse des Shardings und der Replikation gewährleisten, dass eine Vektordatenbank leistungsfähig und fehlertolerant ist. Sharding umfasst die Partitionierung von Daten über mehrere Knoten, während die Replikation das Erstellen mehrerer Datenkopien auf verschiedenen Knoten beinhaltet. Wenn ein Knoten ausfällt, ist damit für Fehlertoleranz und anhaltende Leistung gesorgt.
- Monitoring capabilities: Zur Sicherstellung von Leistung und Fehlertoleranz erfordert eine Vektordatenbank Monitoring der Ressourcennutzung, der Abfrageleistung und der allgemeinen Systemgesundheit.
- Zugangskontrollfunktionen: Vektordatenbanken erfordern ebenfalls ein Management der Datensicherheit. Zugriffssteuerungsmaßnahmen garantieren Compliance, Nachvollziehbarkeit und Funktionen zur Überprüfung der Datenbanknutzung. Dies bedeutet auch, dass Daten geschützt sind: Nur Personen mit den entsprechenden Berechtigungen können darauf zugreifen, und es wird eine Aufzeichnung der Benutzeraktivitäten geführt.
- Skalierbarkeit und Optimierbarkeit: Gute Zugriffskontrollfunktionen beeinflussen die Skalierbarkeit und Optimierbarkeit einer Vektordatenbank. Mit zunehmender Menge der gespeicherten Daten ist es entscheidend, horizontal skalieren zu können. Unterschiedliche Einfüge- und Abfrageraten sowie Unterschiede in der verwendeten Hardware wirken sich auf die Anforderungen von Anwendungen aus.
- Mehrere Benutzer und Datenisolierung: Parallel zur Skalierbarkeit und den Zugriffsteuerungsfunktionen sollte eine Vektordatenbank mehrere Nutzer oder Mandanten unterstützen. Dazu müssen die Vektordatenbanken Datenisolierung unterstützen, damit alle Nutzeraktivitäten (Einfügen, Löschen oder Abfragen) gegenüber anderen Nutzern verborgen bleiben, sofern nicht anderweitig erforderlich.
- Sicherungen: Vektordatenbanken erstellen regelmäßige Datensicherungen. Diese Sicherungen sind eine Schlüsselkomponente von Vektordatenbanken im Fall eines Systemausfalls. Falls Daten verloren gehen oder beschädigt werden, kann die Datenbank mit einer Sicherung wiederhergestellt werden. Auf diese Weise werden Ausfallzeiten minimiert.
- APIs und SDKs: Eine Vektordatenbank nutzt APIs, um eine benutzerfreundliche Schnittstelle zu ermöglichen. Eine API ist eine Anwendungsprogrammierschnittstelle, also eine Art von Software, die es Anwendungen ermöglicht, über Anfragen und Antworten miteinander zu „sprechen“. API-Ebenen vereinfachen das Vektorsucherlebnis. SDKs, oder Software Development Kits, werden oft als Verpackung (Wrapper) für die APIs eingesetzt. Die SDKs sind die Programmiersprachen, mit denen die Datenbank kommuniziert und verwaltet wird. SDKs erleichtern Entwicklern die Nutzung von Vektordatenbanken, da sie sich beim Umsetzen bestimmter Anwendungsfälle (semantische Suche, Empfehlungssysteme usw.) keine Gedanken um die zugrunde liegende Struktur machen müssen.
Was ist der Unterschied zwischen Vektordatenbanken und traditionellen Datenbanken?
Traditionelle Datenbanken speichern Informationen in Tabellenform und indexieren die Daten, indem sie Werte zu Datenpunkten zuweisen. Beim Abfragen gibt eine traditionelle Datenbank Ergebnisse zurück, die exakt mit der Abfrage übereinstimmen.
Eine Vektordatenbank speichert Vektoren in Form von Einbettungen und ermöglicht die Vektorsuche, die Abfrageergebnisse auf Basis von Ähnlichkeitsmetriken (anstelle von exakten Übereinstimmungen) zurückgibt. Eine Vektordatenbank "springt ein", wo eine herkömmliche Datenbank nicht kann: Sie ist bewusst so konzipiert, dass sie mit Vektoreinbettungen arbeitet.
Eine Vektordatenbank eignet sich besser als eine herkömmliche Datenbank für bestimmte Anwendungen, wie etwa Ähnlichkeitssuche, künstliche Intelligenz und Machine-Learning-Anwendungen, da sie hochdimensionale Suchfunktionen und maßgeschneiderte Indexierungen unterstützt und skalierbar, flexibel und effizient ist.
Anwendungsbereiche für Vektordatenbanken
Vektordatenbanken werden in KI-, maschinellen Lern- (ML), natürlichen Sprachverarbeitungs- (NLP) und Bilderkennungsanwendungen verwendet.
- **KI/ML-Anwendungen:** Vektordatenbanken verbessern KI-Funktionen mit semantischem Informationsabruf und Langzeitgedächtnis.
- **NLP-Anwendungen:** Vektorähnlichkeitssuche, eine Schlüsselkomponente von Vektordatenbanken, eignet sich hervorragend für Anwendungen der natürlichen Sprachverarbeitung. Vektordatenbanken verarbeiten Texteinbettungen, mit denen Computer unsere menschliche – oder natürliche – Sprache „verstehen“ können.
- Anwendungen zur Bilderkennung und -suche: Vector databases transformieren Bilder in Bildeinbettungen. Mit der Ähnlichkeitssuche können sie ähnliche Bilder abrufen oder einander ähnliche Bilder identifizieren.
Vektordatenbanken können auch zur Anomalieerkennung und in Gesichtserkennungsanwendungen eingesetzt werden.
Erfahren Sie, wie Vektordatenbanken die KI-Suche mit Energie versorgen. Sehen Sie sich unser Webinar an und erfahren Sie, wie Sie ein modernes Sucherlebnis für Ihr Projekt aufbauen können.
Zukunftstrends für Vektordatenbanken
Die Zukunft von Vektordatenbanken ist eng mit der Entwicklung von KI und ML verbunden, sowie mit der Forschung zur Nutzung von Deep Learning, um leistungsstärkere Einbettungen für strukturierte und unstrukturierte Daten1 zu generieren.
Angesichts immer ausgefeilterer Einbettungstechniken brauchen Vektordatenbanken neue Techniken und Algorithmen, um die Einbettungen besser verarbeiten und verwalten zu können. Diese Methoden werden ständig weiterentwickelt.
Außerdem wird fortlaufend an der Entwicklung von Hybriddatenbanken geforscht. Diese Variante kombiniert die Leistung traditioneller relationaler Datenbanken mit Vektordatenbanken, um dem wachsenden Bedarf nach effizienten und skalierbaren Datenbanken gerecht zu werden.
Vektordatenbank für Elasticsearch
Elasticsearch enthält eine Vektordatenbank für Vektorsuche. Mit der Elasticsearch Relevance Engine (ESRE) können Entwickler eigene Vektorsuchmaschinen mit Elastic erstellen.
Mit den Elasticsearch-Tools können Sie eine Vektorsuchmaschine erstellen, um strukturierte und unstrukturierte Daten zu durchsuchen, Filter und Facetten anzuwenden, Text- und Vektordaten hybrid zu durchsuchen und Sicherheitsfunktionen auf Dokument- und Feldebene zu nutzen. Außerdem kann die Lösung lokal, in der Cloud oder in Hybridumgebungen eingesetzt werden. Die Vektordatenbank und die Search-AI-Plattform von Elasticsearch bieten Entwickler:innen umfassende Hybrid-Search-Funktionen und Zugriff auf Innovationen der führenden LLM-Anbieter. Mit dem Low-Code-Spielplatz von Elastic können Entwickler LLMs mit ihren eigenen privaten Daten in wenigen Minuten testen.
Entdecken Sie weitere Ressourcen zu Vektordatenbanken
Fußnoten
1 Gu, Huaping. "Die Macht der Vektoren entfesseln: Einbettungen und Vektordatenbanken - Linkedin." LinkedIn, 2. Apr. 2023, www.linkedin.com/pulse/unleashing-power-vectors-embeddings-vector-databases-huaping-gu