Definition: Vektordatenbank

Eine Vektordatenbank ist eine Datenbank, die Informationen als numerische Darstellungen von Datenobjekten (Vektoren) speichert, die man auch als Vektoreinbettungen bezeichnet. Diese Vektoreinbettungen werden anschließend verwendet, um riesige Mengen an unstrukturierten und teilweise strukturierten Daten wie etwa 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 – manchmal auch als Einbettungen bezeichnet – 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 Machine Learning und das Verständnis von Mustern, Beziehungen und zugrunde liegenden Strukturen durch KI zu ermöglichen.

Texteinbettungen bereitstellen

Wie funktioniert eine Vektordatenbank?

Eine Vektordatenbank verwendet Algorithmen, um Vektoreinbettungen zu indexieren und abzufragen. Diese Algorithmen unterstützen eine sogenannte ANN-Suche (Approximate Nearest Neighbor, geschätzter nächster Nachbar) mithilfe von Hashing, Quantisierung oder graphbasierter Suche.

Bei der ANN-Suche wird der nächstgelegene Vektornachbar einer Anfrage gesucht, um Informationen abzurufen. Die Suche nach dem geschätzten nächsten Nachbarn ist weniger ressourcenintensiv als die kNN-Suche (bekannter nächster Nachbar oder k-Nearest-Neighbor), dafür aber auch weniger exakt. 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:

Diagram of how a vector search engine works using vector embeddings

  1. Indexierung: Eine Vektordatenbank verwendet Hashing, Quantisierung oder graphbasierte Techniken, um Vektoren zu indexieren, indem sie sie einer vorgegebenen Datenstruktur zuordnet. Auf diese Weise wird die Suche beschleunigt.

    • Hashing: Hashing-Algorithmen, wie etwa der LSH-Algorithmus (Locality-Sensitive Hashing), eignen sich gut für die Suche nach dem geschätzten nächsten Nachbarn, da sie recht schnell eine Annäherung von Ergebnissen liefern. 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: Graphbasierte Algorithmen, wie etwa der HNSW-Algorithmus (Hierarchical Navigable Small World), verwenden Knoten, um Vektoren darzustellen. 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.

     

  2. 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:

    • Die Kosinus-Ä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.
    • Die Euklidische Distanz ermittelt 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.
  3. Nachbereitung: Als letzter Schritt in der Vektordatenbank-Pipeline wird manchmal eine Nachbereitung oder Filterung vorgenommen, bei der die Vektordatenbank ein anderes Ähnlichkeitsmaß verwendet, um die nächsten Nachbarn erneut 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. Vektordatenbanken eignen sich also besonders gut für die Verwaltung von strukturierten Daten und teilweise strukturierten Daten. 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: Prozesse wie Sharding und Replikation werden eingesetzt, um Vektordatenbanken im Hinblick auf Leistung und Fehlertoleranz zu optimieren. Beim Sharding werden Daten über mehrere Knoten partitioniert, und bei der Replikation werden mehrere Kopien von Daten auf verschiedenen Knoten erstellt. Wenn ein Knoten ausfällt, ist damit für Fehlertoleranz und anhaltende Leistung gesorgt.
  • Überwachungsfunktionen: Zur Sicherstellung von Leistung und Fehlertoleranz müssen Vektordatenbanken im Hinblick auf Ressourcennutzung, Abfrageleistung und allgemeine Systemintegrität überwacht werden.
  • Zugriffssteuerungsfunktionen: In Vektordatenbanken muss außerdem die Datensicherheit verwaltet werden. Zugriffssteuerungsmaßnahmen garantieren Compliance, Nachvollziehbarkeit und Funktionen zur Überprüfung der Datenbanknutzung. Dies bedeutet auch, dass die Daten geschützt sind: Nur Personen mit entsprechenden Berechtigungen können darauf zugreifen und sämtliche Nutzeraktivitäten werden aufgezeichnet.
  • Skalierbarkeit und Optimierbarkeit: Robuste Zugriffssteuerungsfunktionen können die Skalierbarkeit und Optimierbarkeit von Vektordatenbanken beeinträchtigen. 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 Nutzer und Datenisolierung: Parallel zur Skalierbarkeit und den Zugriffsteuerungsfunktionen müssen Vektordatenbanken auch 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.
  • Datensicherungen: 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: Vektordatenbanken setzen APIs ein, um benutzerfreundliche Benutzeroberflächen zu unterstützen. 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.

Vektordatenbanken speichern Vektoren in Form von Einbettungen und unterstützen die Vektorsuche, die Abfrageergebnisse auf Basis von Ähnlichkeitsmetriken (anstelle von exakten Übereinstimmungen) zurückgibt. Vektordatenbank können einspringen, wenn traditionelle Datenbanken versagen: Sie sind bewusst für den Einsatz mit Vektoreinbettungen gestaltet.

Vektordatenbanken eignen sich besser als traditionelle Datenbanken für bestimmte Anwendungen, wie etwa Ähnlichkeitssuche, künstliche Intelligenz und Machine Learning, da sie hochdimensionale Suchfunktionen und maßgeschneiderte Indexierungen unterstützen und skalierbar, flexibel und effizient sind.

Anwendungsbereiche für Vektordatenbanken

Vektordatenbanken werden unter anderem für KI, Machine Learning (ML), natürliche Sprachverarbeitung (Natural Language Processing, NLP) und Bildverarbeitungsanwendungen eingesetzt.

  • KI/ML-Anwendungen: Vektordatenbanken verbessern KI-Funktionen mit semantischem Informationsabruf und Langzeitgedächtnis.
  • Natürliche Sprachverarbeitung: Die Vektorähnlichkeitssuche ist eine Schlüsselkomponente von Vektordatenbanken und eignet sich hervorragend für die natürliche Sprachverarbeitung. Vektordatenbanken verarbeiten Texteinbettungen, mit denen Computer unsere menschliche – oder natürliche – Sprache „verstehen“ können.
  • Bilderkennung und -abruf: Vektordatenbanken 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.

Vektordatenbank für Elasticsearch

Elasticsearch enthält eine Vektordatenbank für die Vektorsuche. Entwickler können die Elasticsearch Relevance Engine (ESRE) nutzen, um mit Elastic eigene Vektorsuchmaschinen zu 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.

Elasticsearch-Vektordatenbank kennenlernen

Fußnoten

1 Gu, Huaping. „Unleashing the Power of Vectors: Embeddings and Vector Databases – Linkedin.“ („Die Macht der Vektoren – Einbettungen und Vektordatenbanken“, in englischer Sprache) LinkedIn, 2. April 2023, www.linkedin.com/pulse/unleashing-power-vectors-embeddings-vector-databases-huaping-gu