Die besten Einbettungsmodelle für Abrufpipelines: Welches sollte ich verwenden?
By James Briggs · 2024-03-23
In der Welt der Einbettungsmodelle für Abrufpipelines gibt es viele Alternativen zu OpenAI-002. Erfahren Sie mehr über das MTEP-Benchmark, das E5-Base-V1-Modell und andere Open-Source-Modelle.
Die besten Einbettungsmodelle für Abrufpipelines
- Heute werden wir uns einige der besten Einbettungsmodelle ansehen, die wir derzeit für den Aufbau von Abrufpipelines verwenden können. Im Moment nutzt so ziemlich jeder OpenAI-002, aber es gibt tatsächlich viele andere Modelle da draußen, die entweder wettbewerbsfähig sind oder möglicherweise sogar besser als 002. Wenn man nach Bestenlisten geht, gibt es viele Modelle, die erheblich besser sind. Aber nicht alles dreht sich um Bestenlisten, und wenn man es an echten Daten testet, funktioniert AR immer noch gut. Es ist vergleichbar mit vielen anderen Modellen. Ich werde damit beginnen, einen Blick auf eine der beliebtesten Bestenlisten für Einbettungsmodelle zu werfen, nämlich das MTEP Benchmark. MTEP ist das Massive Text Embedding Benchmark und wird auf Hung Face Space gehostet. Ich glaube, dass es heute buchstäblich ein neues Modell gibt, das nun an erster Stelle steht. Wir werden uns dieses Modells in diesem Video nicht ansehen, aber ich werde es bald tun. Stattdessen werden wir uns dieses andere Modell von Go hier ansehen, das sehr nah dran ist, mit sehr geringen Unterschieden zumindest laut den Benchmark-Ergebnissen hier. Wir werden uns auch eines der kleinen Open-Source-Einbettungsmodelle ansehen. Es gibt viele Open-Source-Modelle hier, aber dasjenige, das ich am besten geeignet finde und das nicht riesig ist, ist eigentlich hier unten: E5 Base V1. Wenn die Modellgröße nicht allzu wichtig ist, können Sie dieses Modell tatsächlich auf das E5 Large V2-Modell upgraden. Wir werden diese Modelle vergleichen, um herauszufinden, welches das beliebteste Einbettungsmodell ist - nämlich 002. Wir werden uns hier ein paar verschiedene Dinge ansehen, aber ich werde Sie im Wesentlichen durch das führen, was Sie über jedes dieser drei Modelle wissen müssen. Beginnen wir also mit den Installationen. Der PIP-Installationsbefehl für jedes dieser Modelle ist ziemlich einfach: Hier haben wir OpenAI C und hier Transformers. Das Datenset, das wir für diese Anleitung verwenden werden, ist das AI Archive Trunk-Datenset. Dieses können Sie wie hier gezeigt installieren. Sie finden dieses Notebook und einen Link am Anfang des Videos. Jetzt kommen wir zu unserer Einbettungsfunktion. Die Einbettungsfunktionen unterscheiden sich am meisten zwischen den Modellen. Natürlich sind die beiden API-Einbettungsmodelle hier, OpenAI insbesondere, am unkompliziertesten. Mit OpenAI müssen Sie eigentlich nichts Besonderes wissen. Sie geben einfach Ihre Dokumente ein und haben Ihr Modell hier. Bei Cair müssen Sie darauf achten, den richtigen Importtyp zu verwenden, nämlich `Suchdokument`, wenn wir Dokumente einbetten, und `Suchanfrage`, wenn wir eine Abfrage einbetten. Außerdem haben wir hier auch den Modellnamen.
Die besten Einbettungsmodelle für Abrufpipelines
Die komplexe Welt des Open-Source-Modells verstehen
- Ansonsten ist es ziemlich geradlinig, aber die Dinge werden etwas komplizierter, wenn wir damit beginnen, unser Open-Source-Modell zu nutzen. Das ist normal, da wir nicht alles hinter einer API verstecken, aber trotzdem ist es nicht wirklich so kompliziert. Das Einzige, worauf wir achten müssen, ist, dass wir für schnelle Geschwindigkeiten wahrscheinlich eine kühlaktivierte GPU benötigen. Auf einem Mac kannst du das auch mit MPS ausführen, also musst du das im Hinterkopf behalten. Anstatt Cuda zu verwenden, wechselst du hier zu MPS, und in diesem Schritt musst du sicherstellen, dass du dich für dein MPS-Gerät entscheidest. Dann initialisieren wir einen Tokenizer und ein Modell, und dann führen wir die Einbettungen durch. Um diese Einbettungen zu erstellen, müssen wir jedes Eingabedokument oder jeden Abschnitt mit dem Text 'Abschnitt' versehen. Das sagt dem Einbettungsmodell einfach, dass dies ein Textabschnitt ist und kein Abfrage-Text. Später ersetzen wir dies durch 'Abfrage' anstelle von 'Abschnitt', wenn wir Abfragen durchführen. Wir tokenisieren alles und verarbeiten dann alles durch ein Modell, extrahieren den versteckten Zustand des Modells und verwandeln das alles in eine einzelne Einbettung für jedes Eingabedokument oder jeden Abschnitt. Das ist also die Einbettung. Danach fügen wir alles in unseren Index ein. Wenn wir hier unsere Vektoren speichern, verwenden wir einfach ein lokales Numpy-Array, da dies ein sehr kleiner Datensatz ist und wir dies nur für eine Demonstration tun. Wenn du jedoch etwas in Produktion machen möchtest, tu das nicht. Verwende eine Vektordatenbank, es sei denn, du bist damit einverstanden, dich um das gesamte Datenmanagement zu kümmern. Für unsere APIs habe ich hier eine Größe von 1 bis 8 verwendet, aber tatsächlich hätte ich das wahrscheinlich auf 256 erhöhen können, um die Dinge etwas zu beschleunigen. Open AI hat ungefähr 9 Minuten gebraucht, um alle diese Dokumente zu indizieren, während es mit Cair 5 und eineinhalb Minuten gedauert hat. Es scheint, als ob Cair etwas schneller beim Einbetten und Zurückgeben von Einbettungen ist. Wenn wir uns unser Open-Source-Modell ansehen: Es ist ein recht kleines Modell, daher können wir Dinge ziemlich schnell einbetten. Für dies habe ich eine V00-GPU auf Google Collab verwendet. Du kannst auch eine T5 verwenden, aber wenn du diesen gesamten Index im Speicher einbettest, was du wahrscheinlich sowieso nicht tun solltest, könnte es passieren, dass dein Speicher knapp wird, wie der tatsächliche RAM-Speicher, in dem du dein Numpy-Array speicherst, anstelle des tatsächlichen GPU-Einbettungsspeichers. Hier haben wir also eine höhere Batch-Größe, also wenn wir das verringern, könnten wir wahrscheinlich langsamere Ergebnisse sehen. Nachdem das erledigt ist, ist unser Index bereit, und wir sind bereit für Abfragen. Also gehen wir zur Abfragefunktion über, die im Wesentlichen dasselbe ist wie zuvor. Wir erstellen unsere Einbettungen.
Die komplexe Welt des Open-Source-Modells verstehen
Die Bedeutung von Embedding-Modellen in der Textverarbeitung
- Hier hätte ich einfach die Einbettungsfunktion vom OpenAI-Notebook verwenden können. Hier konnte ich die Einbettungsfunktion jedoch nicht verwenden, da ich den Eingabetyp auf Query anstelle von Dokument oder Passage anpassen musste. Für das E5-Modell müssten wir dies erneut anpassen, sodass wir hier stattdessen Query anstelle von Passage haben. Ansonsten gibt es hier nicht allzu große Unterschiede. Im Wesentlichen berechnen wir nach all dem die Dot-Produkt-Ähnlichkeit zwischen unserem Abfragevektor und dem Index, und wir tun dasselbe für das Coher-Modell. Beide sind normalisiert, daher berechnen wir nur das Punktprodukt. Ich glaube, dass bei E5 die Ausgabe nicht normalisiert war, sodass wir entweder die Vektoren normalisieren und dann das Punktprodukt verwenden oder einfach die Kosinusähnlichkeit verwenden können, was einfach normalisiertes Punktprodukt ist. Und dann sollten wir hier auf eine wichtige Sache achten, nämlich dass jedes Einbettungsmodell, nicht jedes, aber viele Einbettungsmodelle unterschiedliche Einbettungsdimensionen haben. Wenn wir 002 verwenden, beträgt die Dimensionalität, die wir ausgeben, 1536. Das sind 1536-dimensionale Vektoren, was bedeutet, dass wir mehr Speicherplatz verwenden werden, als wenn wir ein cair-Einbettungsmodell verwenden, das nur 1224 beträgt, und das ist immer noch mehr als wenn wir das E5-Einbettungsmodell verwenden, das 768 beträgt. Das ist besonders wichtig zu beachten, insbesondere langfristig, es wird mehr kosten, die Vektoren höherer Dimension zu speichern. Wenn wir uns jetzt die Ergebnisse zwischen jedem dieser Modelle ansehen, werden wir eine ziemlich ähnliche Leistung feststellen, zumindest bei den wenigen Abfragen, die ich durchgeführt habe. Dies ist kein einfacher Datensatz für ein Einbettungsmodell, um ihn zu verstehen, er ist sehr unordentlich, aber das ist eher repräsentativ für die reale Welt als für saubere Benchmark-Daten oder Ähnliches. Ich denke, das ist ein gutes Beispiel dafür, was sie können und was sie nicht können. Ich habe also gefragt, warum ich Llama 2 verwenden sollte, eine ziemlich einfache Frage. Ich weiß, dass das Llama 2-Papier in diesem Datensatz enthalten ist, daher sollte ich dazu in der Lage sein, Informationen zu erhalten. Wenn Sie diesen Text hier sehen, handelt es sich tatsächlich um Llama 2, er ist nur seltsam formatiert. Im ersten Dokument wird über Llama 2 gesprochen, und ich frage, warum ich es verwenden sollte. Es wird gesagt, dass es für assistentenähnliche Chats gedacht ist und für eine Vielzahl von NL-Generierungstests für natürliche Sprachgenerierung verwendet wird, aber das ist im Grunde genommen das erste Dokument. Hier sprechen wir erneut über Llama 2. Optimiert für Dialog-Anwendungsfälle, übertrifft Open-Source-Chatmodelle in den meisten Benchmarks und unseren menschlichen Bewertungen in Bezug auf Hilfreichkeit und Sicherheit möglicherweise ein Ersatz für geschlossene Modelle. Wir sehen also, dass es eine gute Antwort ist, und dann erhalten wir auch in der letzten hier ähnliche Antworten. Wir sehen, dass es besser ist als Open-Source und konkurrieren mit einigen geschlossenen Modellen. Das alles betrifft 002, schauen wir uns nun das Cooh-Modell an, und wir erhalten einige...
Die Bedeutung von Embedding-Modellen in der Textverarbeitung
Die Bedeutung von Red Teaming in der Welt der künstlichen Intelligenz
- Unterschiedliche Ergebnisse hier, und leider bezieht sich der erste tatsächlich auf das erste Larm-Modell, also stimmt das nicht ganz. Wenn wir uns hierhin bewegen, erhalten wir eines der gleichen Ergebnisse, die 002 erzielt hat. Optimieren für den Dialog mit Open-Source-Chatmodellen, vielleicht als Ersatz für Closed-Source-Modelle. Dann kommen wir hierher zurück und erhalten dieselbe Antwort wie zuvor. Besser als Open Source und auf Augenhöhe mit Closed Source. Dann kommen wir zu E5. Das erste hier oben ist irgendwie nicht relevant, also können wir das ignorieren, aber dann die beiden hier, die wir wieder bekommen, sind die gleichen wie bei den vorherigen beiden Modellen. Schaut man sich eine spezifischere Frage zum Red Teaming für Llama 2 an, können wir sehen, dass der erste hier über Red Teaming spricht, aber nicht spezifisch für Llama 2 ist, obwohl keines der Modelle tatsächlich in der Lage war, diese Informationen im selben Abschnitt zu finden. Man sieht, dass dies sie bei Red Teaming testen. Also ja, es ist relevant. Wir sehen einen Red Team-Ansatz und Ergebnisse. Auf dem zweiten können wir sehen, dass Red-Team-Mitglieder hier den Task genossen haben und keine signifikanten negativen Emotionen erlebt haben. Das erweitert die Fähigkeit des Red Teams, Schwachstellen in unserem System zu finden. Dann haben wir Red Teaming via Jailbreaking. Ich denke, dieser ist wahrscheinlich relevanter und nützlicher. Dann haben wir Co hier, wo es darum geht, extremistischen Text zu generieren. Sie sprechen darüber, was sie für Tests mit Red Teaming gemacht haben, wie die Verbreitung von Falschinformationen und mehr. Wenn KI-Systeme besser werden, scheint der mögliche Schaden zu wachsen. Ein potenziell nützliches Tool zur Bekämpfung von Schäden ist Red Teaming, indem manuelle oder automatisierte Methoden verwendet werden, um eine Sprachmodell auf schädliche Ausgaben zu prüfen. Das erklärt für mich mehr über Red Teaming als alle anderen von 002. Einschließlich von Einschränkungen und Risiken, die von bösartigen Akteuren ausgenutzt werden könnten. Das ist ein weiterer Teil des Red Teamings, um es zu testen und zu sehen, ob diese Dinge bösartig genutzt werden können. Red-Teaming-Ansätze sind unzureichend, um diese zu adressieren.
Die Bedeutung von Red Teaming in der Welt der künstlichen Intelligenz
Die Bedeutung von Red Teaming für die Sicherheit von KI-Systemen
- Praktiken im Bereich KI wie Red Teaming-Übungen helfen Organisationen dabei, ihre eigenen Grenzen und Schwachstellen sowie diejenigen der von ihnen entwickelten KI-Systeme zu entdecken und realistisch anzugehen. Eine Red-Teaming-Übung ist ein strukturierter Versuch, Schwachstellen und Verwundbarkeiten in einem Plan, einer Organisation oder einem technischen System zu finden, der häufig von einem dedizierten Red Team durchgeführt wird, das eine Angreifer-Mentalität und -Methoden annimmt. Die Identifizierung von Schwachstellen ermöglicht es Organisationen, ihre Sicherheit zu verbessern und vieles mehr.
Die Bedeutung von Red Teaming für die Sicherheit von KI-Systemen
Conclusion:
Vergleichen Sie die verschiedenen Einbettungsmodelle für Abrufpipelines und wählen Sie das am besten geeignete für Ihre Anforderungen aus. Ob MTEP-Benchmark, E5-Base-V1 oder Open-Source-Modelle, verstehen Sie die Vor- und Nachteile jedes Modells.