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 ...
Oder Japanisch ...
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.
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.
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
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).
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
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.
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
Alle verwendeten Bilder mit korrekter Quellenangabe