paint-brush
Vektoreinbettungen für die KI-gestützte Suche verstehenvon@picocreator
2,429 Lesungen
2,429 Lesungen

Vektoreinbettungen für die KI-gestützte Suche verstehen

von picocreator7m2023/01/28
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Einbettungen können für die Suche oder andere Aufgaben wie die Beantwortung von Fragen, die Textklassifizierung und die Textgenerierung verwendet werden. Ein Einbettungsvektor stellt das zusammengefasste Textverständnis des KI-Modells dar. Dies kann man sich als eine „N-Wörter-Zusammenfassung“ vorstellen, die in einer Sprache geschrieben ist, die nur die KI verstehen kann. Dies ist ein großer Sprung über die einfache Stichwortsuche klassischer Suchmaschinen hinaus.
featured image - Vektoreinbettungen für die KI-gestützte Suche verstehen
picocreator HackerNoon profile picture
0-item
1-item

Und verabschieden Sie sich von der schlüsselwortbasierten Suche


Bei GPT 3+ oder ChatGPT ist Prompt Engineering intuitiv leichter zu verstehen. Mit vielen Anleitungen und Beispielen im Internet und in den sozialen Medien. Wie zum Beispiel



Einbettungen erfordern Programmierung und werden aufgrund verschiedener kontraintuitiver Verhaltensweisen bei der Funktionsweise weniger verstanden. Es handelt sich jedoch um ein äußerst leistungsstarkes Tool für die Suche oder die Verwendung zusammen mit vorhandenen textbasierten Modellen für verschiedene andere mögliche Anwendungsfälle.


Einbettungen sind innerhalb des KI-Toolkits wohl ein ebenso leistungsfähiges Werkzeug für Unterrichtsmodelle. Aufgrund seiner Fähigkeit, Suchvorgänge über verschiedene Wörter und Sätze hinweg oder sogar über ganze Sprachen hinweg durchzuführen. Konzentrieren Sie sich auf die Suche nach dem relevanten Dokument für jede Anfrage.


Es kann beispielsweise verwendet werden, um die Suche und Beantwortung einer englischsprachigen Dokumentation zu beschleunigen. Auf Englisch ...

Fragen Sie unseren Q&A-Bot auf Englisch

Oder Japanisch ...

Wenn Sie dieselbe Frage auf Japanisch stellen, beachten Sie, dass unsere Dokumente nur auf Englisch verfügbar sind

Oder jede andere Sprache, die das KI-Modell unterstützt.


Die Vektoreinbettung kann für die Suche oder andere Aufgaben wie die Beantwortung von Fragen, die Textklassifizierung und die Textgenerierung verwendet werden.


Beachten Sie, dass sich dieser Artikel auf den Suchaspekt konzentriert, der Antwortprozess erfolgt in einem Folgeartikel.


Was ist eine Vektoreinbettung?

Um eine Vektoreinbettung zu generieren, verwendet man ein einbettendes KI-Modell, das jeden Text (ein großes Dokument, einen Satz oder sogar ein Wort) in ein „N-dimensionales Array“, einen sogenannten Vektor, umwandelt.


Zum Beispiel ein Satz wie How do I write a UI test script with Uilicious?


Kann über das OpenAI-Modell text-embedding-ada-002 in ein Array (einen Vektor genannt) konvertiert werden: [0.010046141, -0.009800113, 0.014761676, -0.022538893, ... an a 1000+ numbers]


Dieser Vektor stellt das zusammengefasste Textverständnis des KI-Modells dar. Dies kann man sich als eine „N-Wörter-Zusammenfassung“ vorstellen, die in einer Sprache geschrieben ist, die nur die KI verstehen kann.

Wo verwandte Dokumente einen geringen Abstand zueinander haben, basierend auf dem Verständnis der KI für das Dokument (und nicht nur für seinen Text).


Dies ist ein großer Sprung über die einfache Stichwortsuche klassischer Suchmaschinen hinaus, da es mit Variationen in der Satzstruktur und der Sprache umgehen kann (vorausgesetzt, das KI-Modell ist darauf trainiert, diese Sprache zu verstehen).


Nehmen Sie das Folgende als hypothetisches Beispiel, das zum besseren Verständnis ungenau in den zweidimensionalen Raum übertragen wurde:



Was im 2D-Raum wie folgt visuell dargestellt werden kann.


Beispielsweise sind D1,2,3 alle Dokumente, die sich auf die unterschiedliche Verwendung von Uilicious beziehen und in einem Cluster zusammengefasst sind


D4 und D5 sind lediglich Verknüpfungen und haben keinen darüber hinausgehenden inhärenten Wert und werden separat in einem anderen Cluster zusammengefasst.


Darüber hinaus sind D1 und D2 weiter gruppiert, da es sich um Uilicious-Testbefehle handelt, die unsere ganz eigene JavaScript-basierte Testsprache verwenden.


Während D3 separat gruppiert ist, geht es um die direkte Verwendung des Web-Treiberprotokolls in unserer Infrastruktur, das für einen anderen Anwendungsfall und eine andere Zielgruppe gedacht ist.


Ähnlich verhält es sich bei Q1 und Q2: Trotz der drastischen Unterschiede in der Satzstruktur und der Sprache werden die beiden Fragen zusammengefasst, da es sich im Wesentlichen um dieselbe Frage handelt.


Obwohl die Frage technisch gesehen in beide Richtungen interpretiert werden könnte (unter Verwendung des Uilicious-Testskripts oder des Webdriver-Protokolls), liegt die Position der Frage „näher“ an D1 und D2 und weiter von D1 und D2 entfernt, da die Frage die Verwendung von Uilicious-Testskripten über Webdriver impliziert D3.


Obwohl es große Überschneidungen bei Schlüsselwörtern gibt, werden diese Nuancen in Gruppierungen von der KI erfasst, die in den Einbettungen kodiert ist. Hervorhebung des charakteristischen Unterschieds zur Stichwortsuche


In Wirklichkeit kann eine Einbettung jedoch anstelle eines stark vereinfachten zweidimensionalen Arrays, das für Menschen leicht zu verstehen ist, leicht ein Array mit mehr als 1.000 Dimensionen sein. Dieses Array gilt nur für das jeweils verwendete KI-Modell und kann nicht mit den Einbettungen eines anderen KI-Modells gemischt werden.



Anmerkungen zur Mathematik: N-dimensionale Mathematik ist nicht mit 2/3D-Mathematik kompatibel

Während die stark vereinfachten zweidimensionalen Beispiele gut zum Verständnis des übergeordneten Konzepts der Gruppierung relativ zu einer Frage (oder einem Standpunkt) geeignet sind, stellen sie eine N-Dimension nicht genau dar.


Aufgrund der komplizierten N-dimensionalen Mathematik kann es zu Situationen kommen, in denen A nahe bei B und B nahe bei C liegen kann, A und C jedoch als weit voneinander entfernt betrachtet werden können. Das ist ein äußerst kontraintuitives Problem.


Solche Abstände sind nur sinnvoll, wenn sie relativ zum gleichen Punkt und den verwendeten Formeln verwendet werden. Was entweder mit berechnet werden kann


  • Euklidischer Abstand : Auch als Satz des Pythagoras für Steroide bekannt. Er ist die am häufigsten verwendete Abstandsmetrik und ist der geradlinige Abstand zwischen zwei Punkten in der N-Sphäre.
  • Kosinusähnlichkeit : Dies ist ein Maß für den Winkelabstand zwischen zwei Punkten in einer N-Kugel und eignet sich zur Messung der Ähnlichkeit von Dokumenten oder anderen Vektoren.
  • Manhattan- oder Hamming- Distanz: Diese beiden Metriken werden zum Messen der Unterschiede zwischen zwei Vektoren verwendet und sind nützlich zum Messen der „Bearbeitungsdistanz“ zwischen zwei Zeichenfolgen.


Während die Wirksamkeit jeder Formel für verschiedene Anwendungsfälle ihre jeweiligen Vor- und Nachteile hat. Bei der Textsuche wird allgemein angenommen, dass die euklidische Distanz in den meisten Fällen „besser funktioniert“ und „gut genug“ für Fälle ist, in denen andere Methoden die Nase vorn haben.


All dies wird tatsächlich verwendet, um N-Dimensionen auf eine einzige Dimension (Abstand) relativ zu einem einzelnen Punkt zu reduzieren. Dies würde bedeuten, dass sich die Gruppierungen je nach gestellter Frage drastisch ändern können/können.


Diese „Relativität“ von Entfernungen macht klassische Datenbanksuchindizes wirkungslos.

Wenn das keinen Sinn ergibt, können Sie den 4-dimensionalen Raum mit mathematischen N-Kugeln auf diese Weise richtig visualisieren.


Stellen Sie sich nun 1.000 Dimensionen vor? Ja, es macht keinen Sinn.


Ohne dieses Thema mit einer Doktorarbeit zu entgleisen, fasse ich dies so zusammen, dass ich einfach den Mathematikprofessoren vertraue.


Alles, was wir verstehen müssen, ist, dass im Allgemeinen die Wahrscheinlichkeit, dass sie füreinander relevant sind, umso größer ist, je geringer der Abstand zwischen zwei Vektoreinbettungspunkten ist.

Aus Sicht der praktischen Umsetzung. Beginnen Sie zunächst mit der Verwendung der euklidischen Distanz. Bevor Sie darüber nachdenken, die anderen Formeln zu verwenden, die durch Ausprobieren für bessere Ergebnisse auf Ihren Anwendungsfall abgestimmt sind (nicht empfohlen).



Suche nach Einbettungen mit einer Vektordatenbank

Da wir also verschiedene Dokumente in Einbettungen umwandeln können, können wir sie nun in einer Datenbank speichern und damit eine Suche durchführen.


Im Gegensatz zu einer SQL-Datenbanksuche mit Text sind jedoch sowohl die Suche als auch die durchsuchten Daten die Vektoreinbettung selbst. Dies bedeutet, dass herkömmliche Datenbanksuchindizes bei der Suche nach Einbettungen wirkungslos sind.


Wir können alle Ihre Dokumente einbetten, vorberechnen und in einer Vektorsuchdatenbank speichern. Dies kann dann verwendet werden, um eine Liste von Übereinstimmungen bereitzustellen, sortiert nach der kürzesten Entfernung.


Dies kann mithilfe vorhandener Vektordatenbanken erfolgen, z

  • REDIS : eine beliebte Open-Source-Datenbank, mit der Vektoreinbettungen gespeichert und effizient durchsucht werden können.
  • Annoy : eine von Spotify erstellte Bibliothek, die einen optimierten Algorithmus verwendet, um schnell nach Einbettungen zu suchen.
  • FAISS : eine von Facebook erstellte Bibliothek, die effiziente Suchalgorithmen für große Datensätze bereitstellt.

Eine wichtige Sache ist, dass die „Datenbanktechnologie“ der Vektorsuche relativ neu ist. Wo ein Großteil der Vektorsuchdatenbanken für Anwendungsfälle in Unternehmen wie Facebook, Spotify oder Google konzipiert wurde, mit Datensätzen in der Größenordnung von Millionen oder Milliarden. Und ist möglicherweise nicht für kleine Datensätze optimiert.


Dies wird sich in den nächsten Jahren ständig verändern. Hier ist eine Github-„Awesome-Liste“, die dabei helfen soll, zukünftige Vektorsuchdatenbanken zu verfolgen und zu finden


Daher haben wir im Allgemeinen festgestellt, dass es für kleine Datensätze (<10.000 ~ 100.000 Einbettungen) für viele Anwendungsfälle „gut genug“ ist, den Einbettungsdatensatz im Speicher zu belassen und den euklidischen Abstand zum Quadrat brutal zu erzwingen, und dass er manchmal die formale Leistung übertrifft Datenbanklösungen (die Festplatten-/Netzwerk-Overheads verursachen) mit etwas wie dem Folgenden.



Der offensichtliche Nachteil dieses Ansatzes besteht darin, dass der gesamte Datensatz klein genug sein muss, um ohne Mehraufwand in den Speicher zu passen.


Unabhängig davon, ob Sie eine lokale In-Memory-Einbettungssuche oder eine formale Vektorsuchdatenbank verwenden.


Das ist es!


Bei der eingebetteten Suche handelt es sich lediglich um einen Sortier- und Rangalgorithmus, der flexibel mit verschiedenen Sprachen und Szenarien funktioniert. Für Sie als Leser stellt sich die Frage, wie Sie es nutzen können. Es kann so wie es ist als möglicher Ersatz für die Google-Suche oder zusammen mit anderen Tools, vom Chat bis hin zu Spielen, verwendet werden. Die Möglichkeiten sind endlos und offen für Erkundungen.


~ Bis zum nächsten Mal 🖖 Lebe lange und gedeihe

Eugene Cheah @ tech-talk-cto.com


Ursprünglich veröffentlicht auf: https://substack.tech-talk-cto.com/p/introducing-ai-embeddings-and-how

Dream Big, mit oder ohne Einbettungen


Alle verwendeten Bilder mit korrekter Quellenangabe