Die Vektorsuche wird verwendet, um ähnliche Elemente oder Datenpunkte, typischerweise als Vektoren dargestellt, in großen Sammlungen zu finden. Vektoren oder Einbettungen sind numerische Darstellungen von Wörtern, Entitäten, Dokumenten, Bildern oder Videos. Vektoren erfassen die semantischen Beziehungen zwischen Elementen und ermöglichen so eine effektive Verarbeitung durch maschinelle Lernmodelle und Anwendungen der künstlichen Intelligenz.
Im Gegensatz zur herkömmlichen Suche, bei der in der Regel eine Stichwortsuche verwendet wird, stützt sich die Vektorsuche auf Vektorähnlichkeitssuchtechniken wie die k-nächste-Nachbarn-Suche (knn), um Datenpunkte abzurufen, die einem Abfragevektor auf der Grundlage einer Distanzmetrik ähneln. Vektoren erfassen semantische Beziehungen und Ähnlichkeiten zwischen Datenpunkten und ermöglichen so eine semantische Suche anstelle einer einfachen Stichwortsuche.
Um den Unterschied zwischen der herkömmlichen Stichwortsuche und der Vektorsuche zu veranschaulichen, betrachten wir ein Beispiel. Nehmen wir an, Sie suchen nach Informationen über das beste Pizzarestaurant und geben in einer herkömmlichen Suchmaschine den Begriff „bestes Pizzarestaurant“ ein. Die Stichwortsuche sucht nach Seiten, die die genauen Wörter „beste“, „Pizza“ und „Restaurant“ enthalten, und gibt nur Ergebnisse wie „Bestes Pizza-Restaurant“ oder „Pizza-Restaurant in meiner Nähe“ zurück. Bei der herkömmlichen Stichwortsuche liegt der Schwerpunkt auf der Übereinstimmung der Stichwörter und nicht auf dem Verständnis des Kontexts oder der Absicht hinter der Suche.
Im Gegensatz dazu versteht die Suchmaschine bei einer semantischen Vektorsuche die Absicht hinter der Abfrage. Semantik bedeutet per Definition, sich auf die Bedeutung in der Sprache zu beziehen, d. h., die semantische Suche versteht die Bedeutung und den Kontext einer Abfrage. In diesem Fall würde nach Inhalten gesucht, in denen über erstklassige oder sehr empfehlenswerte Pizzerien gesprochen wird, auch wenn die genauen Wörter „bestes Pizzarestaurant“ nicht im Inhalt verwendet werden. Die Ergebnisse sind kontextbezogener und können Artikel oder Leitfäden enthalten, die hochwertige Pizzerien an verschiedenen Orten vorstellen.
Bei herkömmlichen Suchmethoden werden Daten in der Regel mithilfe diskreter Token oder Merkmale wie Schlüsselwörter, Tags oder Metadaten dargestellt. Wie in unserem obigen Beispiel gezeigt, beruhen diese Methoden auf exakten Übereinstimmungen, um relevante Ergebnisse zu erhalten. Im Gegensatz dazu stellt die Vektorsuche Daten als dichte Vektoren (ein Vektor, bei dem die meisten oder alle Elemente ungleich Null sind) in einem kontinuierlichen Vektorraum dar, dem mathematischen Raum, in dem Daten als Vektoren dargestellt werden. Jede Dimension des dichten Vektors entspricht einem latenten Merkmal oder Aspekt der Daten, einer zugrunde liegenden Eigenschaft oder einem Attribut, das nicht direkt beobachtet, sondern aus den Daten durch mathematische Modelle oder Algorithmen abgeleitet wird. Diese latenten Merkmale erfassen die verborgenen Muster und Beziehungen in den Daten und ermöglichen aussagekräftigere und genauere Darstellungen von Elementen als Vektoren in einem hochdimensionalen Raum.
Herkömmliche Suchmethoden können aufgrund von Rechen- und Speicherbeschränkungen Probleme mit der Skalierbarkeit für große Datensätze oder hochdimensionale Daten haben. Im Gegensatz dazu lassen sich Vektoreinbettungen leichter auf größere Datensätze und komplexere Modelle skalieren. Im Gegensatz zu spärlichen Darstellungen von Daten, bei denen die meisten Werte über alle Dimensionen hinweg Nullen sind, handelt es sich bei Einbettungen um dichte Vektordarstellungen, die in den meisten Dimensionen Werte ungleich Null aufweisen. Dadurch können Vektoreinbettungen mehr Informationen in einem kleineren, niedrigdimensionalen Raum speichern, wodurch weniger Speicherplatz benötigt wird.1 Dadurch können Algorithmen und Modelle für maschinelles Lernen Einbettungen effizienter mit weniger Rechenressourcen nutzen.
In diesem Beitrag konzentrieren wir uns auf die Vektordarstellungen, die im Rahmen der Verarbeitung natürlicher Sprache (NLP) anwendbar sind, d. h. Vektoren, die Wörter, Entitäten oder Dokumente darstellen.
Wir werden den Vektorisierungsprozess veranschaulichen, indem wir ein kleines Korpus von Sätzen vektorisieren: „Die Katze saß auf der Matte“, „Der Hund spielte im Garten“ und „Vögel zwitscherten in den Bäumen“.
Der erste Schritt beim Erstellen von Vektoreinbettungen ist die Bereinigung und Verarbeitung des Rohdatensatzes. Dies kann die Beseitigung von Lärm und die Standardisierung des Textes beinhalten. In unserem Beispiel werden wir keine Bereinigung durchführen, da der Text bereits bereinigt und standardisiert ist.
Als Nächstes wird ein Einbettungsmodell ausgewählt, das auf dem Datensatz trainiert werden soll. Das trainierte Einbettungsmodell wird verwendet, um Einbettungen für jeden Datenpunkt im Datensatz zu generieren. Zu den beliebten Open-Source-Einbettungsmodellen für Textdaten gehören Word2Vec, GloVe, FastText oder vortrainierte transformatorbasierte Modelle wie BERT oder RoBERTa.2
Für unser Beispiel verwenden wir Word2Vec, um unsere Einbettungen zu generieren.
Als Nächstes werden die Einbettungen in einer Vektordatenbank gespeichert oder es wird ein Vektor-Such-Plugin für eine Suchmaschine wie Elasticsearch verwendet. Bei der Vektorsuche wird die Relevanz eines Suchergebnisses durch die Bewertung der Ähnlichkeit zwischen dem Abfragevektor, der durch Vektorisierung der Abfrage generiert wird, und dem Dokumentvektor, der eine Darstellung der abgefragten Daten ist, ermittelt. In der Vektordatenbank müssen Indizes erstellt werden, um eine schnelle und effiziente Abfrage von Einbettungen auf der Grundlage ähnlicher Abfragen zu ermöglichen. Techniken wie die hierarchische navigierbare kleine Welt (HNSW) können verwendet werden, um die Einbettungen zu indizieren und die Ähnlichkeitssuche bei der Abfrage zu erleichtern. HNSW organisiert den Datensatz und ermöglicht eine schnelle Suche nach den nächsten Nachbarn, indem ähnliche Vektoren während des Indexaufbauprozesses in Gruppen zusammengefasst werden.
Schließlich muss ein Mechanismus oder Verfahren zur Generierung von Vektoren für neue Abfragen eingerichtet werden. Dies umfasst in der Regel die Erstellung einer API oder eines Dienstes, der Suchanfragen von Benutzern in Echtzeit als Eingabe entgegennimmt, sie unter Verwendung desselben Vektormodells verarbeitet und eine entsprechende Vektordarstellung generiert. Dieser Vektor kann dann verwendet werden, um in der Datenbank zu suchen und die relevantesten Ergebnisse zu erhalten.
Bei der Vektorsuche wird die Relevanz durch die Messung der Ähnlichkeit zwischen Abfrage- und Dokumentvektoren bestimmt. Um zwei Vektoren miteinander zu vergleichen und ihre Ähnlichkeit zu bestimmen, kann eine Abstandsmessung verwendet werden, wie z. B. die euklidische Distanz oder die Kosinusähnlichkeit.3
Die euklidische Distanz ist ein Maß für die geradlinige Entfernung zwischen zwei Punkten. Er wird als Quadratwurzel der Summe der quadrierten Differenzen zwischen den entsprechenden Koordinaten der beiden Punkte berechnet.
Diese Formel kann auf höherdimensionale Räume erweitert werden, indem weitere Terme hinzugefügt werden, um zusätzliche Dimensionen zu berücksichtigen.
Die Kosinus-Ähnlichkeit ist ein Maß für die Ähnlichkeit zwischen zwei Vektoren in einem mehrdimensionalen Raum. Sie berechnet den Kosinus des Winkels zwischen den beiden Vektoren und gibt an, wie eng die Vektoren aneinander ausgerichtet sind.
Mathematisch wird die Kosinus-Ähnlichkeit, cos(θ), zwischen zwei Vektoren als das Skalarprodukt der beiden Vektoren geteilt durch das Produkt ihrer Größen berechnet.
Die Kosinus-Ähnlichkeit reicht von -1 bis 1, wobei gilt:
Die Kosinus-Ähnlichkeit ist besonders nützlich, wenn es um Vektoren geht, da sie sich auf die Richtungsbeziehung zwischen Vektoren und nicht auf deren Größenordnung konzentriert.
Obwohl die zuvor erwähnten Distanzmaße zur Messung der Vektorähnlichkeit verwendet werden können, wird es ineffizient und langsam, alle möglichen Vektoren zum Abfragezeitpunkt für die Ähnlichkeitssuche mit dem Abfragevektor zu vergleichen. Um dies zu lösen, können wir eine ANN-Suche (Approximate-Nearest Neighbor) verwenden.
Anstatt eine exakte Übereinstimmung zu finden, suchen ANN-Algorithmen effizient nach den Vektoren, die einer bestimmten Abfrage am nächsten kommen, basierend auf einer Distanzmetrik wie der euklidischen Distanz oder der Cosinus-Ähnlichkeit. Durch die Berücksichtigung einer gewissen Annäherung können diese Algorithmen die Rechenkosten der Suche nach dem nächsten Nachbarn erheblich reduzieren, ohne dass die Einbettungsähnlichkeiten über einen gesamten Korpus hinweg berechnet werden müssen.
Einer der beliebtesten ANN-Algorithmen sind HNSW-Graphen. Die hierarchische navigierbare Small-World-Graphen-Struktur indiziert den Datensatz und erleichtert die schnelle Suche nach den nächsten Nachbarn, indem sie beim Erstellen des Index ähnliche Vektoren gruppiert. HNSW organisiert Daten nach Stadtvierteln und verknüpft sie mit wahrscheinlichen Verbindungen. Beim Indexieren eines dichten Vektors identifiziert es die geeignete Umgebung und ihre potenziellen Verbindungen und speichert sie in einer Graphenstruktur. Bei einer HNSW-Suche mit einer dichten Vektorabfrage wird der optimale Nachbarschaftseintrittspunkt lokalisiert und die nächsten Nachbarn werden zurückgegeben.
Die Vektorsuche hat zahlreiche Anwendungsfälle in verschiedenen Bereichen, da sie ähnliche Elemente auf der Grundlage ihrer Vektordarstellungen effizient abrufen kann. Einige gängige Anwendungen der Vektorsuche sind:
Die Vektorsuche wird in Suchmaschinen verwendet, um Dokumente, Artikel, Webseiten oder andere Textinhalte basierend auf ihrer Ähnlichkeit mit einer Suchanfrage abzurufen. Sie ermöglicht es den Benutzern, relevante Informationen zu finden, auch wenn die genauen Begriffe, die in der Abfrage verwendet werden, nicht in den Dokumenten vorhanden sind.
Die Vektorsuche ist ein wesentlicher Bestandteil des Retrieval Augmented Generation (RAG)-Frameworks zur Abfrage von relevantem Kontext aus einem großen Textkorpus. RAG ist ein Framework für generative KI, das Vektorsuche mit generativen Sprachmodellen kombiniert, um Antworten zu generieren.
Bei herkömmlichen Aufgaben zur Sprachgenerierung werden große Sprachmodelle (LLMs) wie GPT (Generative Pre-trained Transformer) von OpenAI oder Granite Models von IBM verwendet, um Antworten auf der Grundlage der Eingabeaufforderung zu erstellen. Diese Modelle können jedoch Schwierigkeiten haben, Antworten zu liefern, die kontextbezogen relevant, sachlich korrekt oder aktuell sind. RAG behebt dieses Problem, indem vor der Generierung der Antwort ein Abrufschritt eingefügt wird. Während des Abrufs kann die Vektorsuche verwendet werden, um kontextuell relevante Informationen zu identifizieren, wie z. B. relevante Passagen oder Dokumente aus einem großen Textkorpus, die in der Regel in einer Vektordatenbank gespeichert sind. Als Nächstes wird ein LLM verwendet, um eine Antwort auf der Grundlage des abgerufenen Kontexts zu generieren.
Neben der Sprachgenerierung haben RAG und Vektorsuche weitere Anwendungen in verschiedenen anderen NLP-Aufgaben, einschließlich der Beantwortung von Fragen, Chatbots, Zusammenfassungen und der Generierung von Inhalten.
Die Vektorsuche kann in hybride Suchansätze integriert werden, um die Effektivität und Flexibilität des Suchprozesses zu erhöhen. Die Hybridsuche kombiniert die Vektorsuche mit anderen Suchtechniken, wie der schlüsselwortbasierten Suche oder der metadatenbasierten Suche. Die Vektorsuche kann verwendet werden, um Elemente basierend auf ihrer Ähnlichkeit mit einer Abfrage abzurufen, während andere Suchmethoden verwendet werden können, um Elemente basierend auf exakten Übereinstimmungen oder bestimmten Kriterien abzurufen.
Mit Vektorspeichern werden in Bild- und Videosuchmaschinen visuelle Inhalte auf der Grundlage von Ähnlichkeit indexiert und abgerufen. Bild- und Videoeinbettungen werden als Vektoren gespeichert, sodass Benutzer in großen Datensätzen nach visuell ähnlichen Bildern oder Videos suchen können.
Empfehlungsmaschinen in Streaming-Diensten sowie E-Commerce-, Social-Media- und visuellen Medienplattformen können durch Vektorsuche unterstützt werden. Die Vektorsuche ermöglicht die Empfehlung von Produkten, Filmen, Musik oder anderen Artikeln auf der Grundlage ihrer Ähnlichkeit mit Artikeln, mit denen Benutzer zuvor interagiert haben oder die ihnen gefallen haben.
Die Vektorsuche wird in Anwendungen für georäumliche Daten verwendet, um räumliche Daten wie Sehenswürdigkeiten, geografische Merkmale oder räumliche Trajektorien basierend auf ihrer Nähe oder Ähnlichkeit zu einem Abfrageort oder -muster abzurufen. Es ermöglicht eine effiziente räumliche Suche und Analyse in geografischen Informationssystemen und standortbasierten Diensten.
Wir haben 2.000 Unternehmen zu ihren KI-Initiativen befragt, um herauszufinden, was funktioniert, was nicht und wie Sie vorankommen können.
IBM® Granite ist unsere Familie offener, leistungsfähiger und vertrauenswürdiger KI-Modelle, die auf Unternehmen zugeschnitten und für die Skalierung Ihrer KI-Anwendungen optimiert sind. Entdecken Sie die Optionen zu Sprache, Code, Zeitreihen und Guardrails.
Greifen Sie auf unseren vollständigen Katalog mit über 100 Online-Kursen zu, indem Sie noch heute ein Abonnement für Einzel- oder Mehrbenutzer erwerben, mit dem Sie Ihre Fähigkeiten in einer Reihe unserer Produkte zu einem günstigen Preis erweitern können.
Das Programm, das von führenden IBM Experten geleitet wird, soll Führungskräften dabei helfen, das nötige Wissen zu erwerben, um die Prioritäten für KI-Investitionen zu setzen, die zu mehr Wachstum führen.
1 Bahaaldine Azarmi und Jeff Vestal, Vector Search for Practitioners with Elastic, Packt Publishing, 2023
2 Vicki Boykis, “What are embeddings,” 2023, https://vickiboykis.com/what_are_embeddings
3 Trey Grainger, Doug Turnbull und Max Irwin, AI Powered Search, Manning Publications, 2024