Ich fing an, ein Dutzend Bücher handschriftlich zusammenzufassen und stellte fest, dass ich für jede Zusammenfassung Wochen brauchen würde. Dann erinnerte ich mich an diese KI-Revolution und beschloss, dass der Sprung in diese Gewässer längst überfällig war.
Als ich anfing, die Verwendung großer Sprachmodelle (LLM) zum Zusammenfassen großer Texte zu untersuchen, fand ich keine klare Richtung, wie das geht .
Dieser Leitfaden enthält einige Einzelheiten zu meinem Prozess der Bestimmung und Prüfung der Details der oben genannten Variablen.
Einige dieser Begriffe werden je nach Kontext unterschiedlich verwendet (kein Wortspiel beabsichtigt).
Large Language Model (LLM) : (AKA-Modell) Eine Art künstlicher Intelligenz, die auf riesigen Datensätzen trainiert wurde, um menschliche Sprache zu verstehen und zu generieren.
Beispiel : GPT3.5 und GPT4 von OpenAI, die die Welt im Sturm erobert haben. (In unserem Fall wählen wir zwischen Open-Source- und/oder frei herunterladbaren Modellen, die auf Hugging Face zu finden sind.)
Retrieval Augmented Generation (RAG) : Eine von Meta AI entwickelte Technik zum Speichern von Dokumenten in einer Datenbank, die der LLM durchsucht, um eine Antwort auf eine bestimmte Benutzeranfrage (Dokument-Q/A) zu finden.
Benutzeranweisungen: (auch bekannt als Eingabeaufforderung oder Kontext) ist die vom Benutzer bereitgestellte Abfrage.
Beispiel: „Fassen Sie den folgenden Text zusammen: { text }
“
Systemaufforderung: Spezielle Anweisungen vor der Benutzeraufforderung, die dabei helfen, die Persönlichkeit Ihres Assistenten zu formen.
Beispiel: „Sie sind ein hilfreicher KI-Assistent.“
Kontext: Benutzeranweisungen und möglicherweise eine Systemaufforderung sowie möglicherweise frühere Runden von Frage-Antwort-Paaren. (Vorherige Q/A-Paare werden auch einfach als Kontext bezeichnet).
Eingabeaufforderungsstil : Hierbei handelt es sich um spezielle Zeichenkombinationen, mit denen ein LLM trainiert wird, um den Unterschied zwischen Benutzeranweisungen, Systemeingabeaufforderung und Kontext aus vorherigen Fragen zu erkennen.
Beispiel: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]
7B: Gibt die Anzahl der Parameter in einem bestimmten Modell an (höher ist im Allgemeinen besser). Parameter sind die internen Variablen, die das Modell während des Trainings lernt und zur Erstellung von Vorhersagen verwendet wird. Für meine Zwecke passen wahrscheinlich 7B-Modelle auf meine GPU mit 12 GB VRAM.
GGUF: Dies ist ein spezielles Format für LLM, das für Consumer-Hardware (CPU/GPU) entwickelt wurde. Für welches Modell Sie sich auch interessieren, für die Verwendung in PrivateGPT müssen Sie die GGUF-Version finden (üblicherweise von TheBloke hergestellt).
Q2-Q8 0, K_M oder K_S: Beim Durchsuchen der Dateien eines GGUF-Repositorys werden Sie verschiedene Versionen desselben Modells sehen. Eine höhere Zahl bedeutet weniger Komprimierung und bessere Qualität. Das M in K_M bedeutet „Mittel“ und das S in K_S bedeutet „Klein“.
VRAM: Dies ist die Speicherkapazität Ihrer GPU. Um es vollständig auf die GPU zu laden, benötigen Sie ein Modell, das kleiner ist als Ihr verfügbarer VRAM.
Tokens: Dies ist die Metrik, mit der LLM die Sprache gewichtet. Jeder Token besteht aus ungefähr 4 Zeichen.
PrivateGPT (pgpt) ist ein Open-Source-Projekt , das eine Benutzeroberfläche und eine programmierbare API bereitstellt, die es Benutzern ermöglicht, LLM mit eigener Hardware zu Hause zu verwenden. Es ermöglicht Ihnen das Hochladen von Dokumenten in Ihre eigene lokale Datenbank für von RAG unterstützte Dokumenten-Q/A.
PrivateGPT-Dokumentation – Übersicht :
PrivateGPT bietet eine API mit allen Bausteinen, die zum Erstellen privater, kontextsensitiver KI-Anwendungen erforderlich sind. Die API folgt und erweitert den OpenAI-API-Standard und unterstützt sowohl normale als auch Streaming-Antworten. Das heißt, wenn Sie die OpenAI-API in einem Ihrer Tools verwenden können, können Sie stattdessen Ihre eigene PrivateGPT-API verwenden, ohne Codeänderungen und kostenlos, wenn Sie privateGPT im
local
Modus ausführen.
Ich begann damit, einfach Fragen zu Buchkapiteln zu stellen, indem ich die PrivateGPT- Benutzeroberfläche\RAG verwendete.
Dann habe ich versucht, den Text für die Zusammenfassung vorab auszuwählen. Dies war die Inspiration für die Rangliste der ersten Runde, um zu sehen, wie groß der Unterschied zwischen meinen Ergebnissen sein würde. (Zusammenfassung vorausgewählter Abschnitte.)
Als nächstes wollte ich herausfinden, welche Modelle diese Aufgabe am besten bewältigen würden, was zur Rangliste der zweiten Runde führte, in der Mistral-7B-Instruct-v0.2 der klare Gewinner war.
Dann wollte ich mit diesem Modell die besten Ergebnisse erzielen, indem ich Eingabeaufforderungsstile in eine Rangfolge brachte und Code schrieb, um genau den erwarteten Eingabeaufforderungsstil zu erhalten.
Danach musste ich natürlich verschiedene Systemansagen testen, um herauszufinden, welche die beste Leistung erbringen würde.
Als nächstes habe ich einige Benutzereingaben ausprobiert, um herauszufinden, welche Eingabeaufforderung für mich die beste ist, um Zusammenfassungen zu erstellen, die am wenigsten Nachbearbeitung erfordern.
Letztendlich sollte diese Art von Tests für jedes LLM durchgeführt werden und um die Wirksamkeit jeglicher Verfeinerung unserer Prozesse zu bestimmen. Meiner Meinung nach können die einzelnen Modelle erst dann richtig gegeneinander eingestuft werden, wenn sie auf die idealsten Bedingungen ausgerichtet sind.
Als ich anfing, verschiedene LLM-Varianten zu testen, war mistral-7b-instruct-v0.1.Q4_K_M.gguf
Teil des Standard-Setups von PrivateGPT (für die Ausführung auf Ihrer CPU). Hier habe ich die Q8_0-Varianten bevorzugt.
Obwohl ich mehr als 50 verschiedene LLM für dieselbe Aufgabe ausprobiert habe, gehört Mistral-7B-Instruct immer noch zu den Besten, insbesondere seit der Veröffentlichung von v0.2 habe ich kein besseres gefunden.
TLDR: Mistral-7B-Instruct-v0.2 – ist mein aktueller Leiter für Zusammenfassungsaufgaben.
Bei der Durchführung von Fragen und Antworten habe ich schnell festgestellt, dass ich viel bessere Ergebnisse erhalte, wenn ich kleinere Datenblöcke in die Datenbank hochlade und jedes Mal mit einer sauberen Weste beginne. Also begann ich, PDFs zu Frage- und Antwortzwecken in Kapitel aufzuteilen.
Für meine erste Analyse habe ich 5 verschiedene LLM für die folgenden Aufgaben getestet:
Modell | Bewertung | Suchgenauigkeit | Figuren | Sekunden | BS | Füllstoff | Kurz | Guter Mist |
---|---|---|---|---|---|---|---|---|
hermes-trismegistus-mistral-7b | 68 | 56 | 62141 | 298 | 3 | 4 | 0 | 6 |
synthia-7b-v2.0 | 63 | 59 | 28087 | 188 | 1 | 7 | 7 | 0 |
mistral-7b-instruct-v0.1 | 51 | 56 | 21131 | 144 | 3 | 0 | 17 | 1 |
Collectivecognition-v1.1-mistral-7b | 56 | 57 | 59453 | 377 | 3 | 10 | 0 | 0 |
Kai-7b-Anweisung | 44 | 56 | 21480 | 117 | 5 | 0 | 18 | 0 |
Für diese erste Runde habe ich den Kapitelinhalt in Abschnitte mit einer Reihe von unterteilt
Jeweils 900–14.000 Zeichen (oder 225–3.500 Token).
HINWEIS: Trotz der zahlreichen veröffentlichten großen Kontextmodelle glaube ich vorerst immer noch, dass kleinere Kontexte zu besseren Zusammenfassungen führen. Ich bevorzuge nicht mehr als 2750 Token (11000 Zeichen) pro Zusammenfassungsaufgabe.
Es überrascht nicht, dass Zusammenfassungen eine viel bessere Leistung erbrachten als Fragen/Antworten, aber sie hatten auch einen gezielteren Kontext.
Name | Punktzahl | Charaktere generiert | % Abweichung vom OG | Sekunden zum Generieren | Kurz | Müll | BS | Füllen | Fragen | Ausführlich |
---|---|---|---|---|---|---|---|---|---|---|
hermes-trismegistus-mistral-7b | 74 | 45870 | -61 | 274 | 0 | 1 | 1 | 3 | 0 | 0 |
synthia-7b-v2.0 | 60 | 26849 | -77 | 171 | 7 | 1 | 0 | 0 | 0 | 1 |
mistral-7b-instruct-v0.1 | 58 | 25797 | -78 | 174 | 7 | 2 | 0 | 0 | 0 | 0 |
Kai-7b-Anweisung | 59 | 25057 | -79 | 168 | 5 | 1 | 0 | 0 | 0 | 0 |
Collectivecognition-v1.1-mistral-7b | 31 | 29509 | -75 | 214 | 0 | 1 | 1 | 2 | 17 | 8 |
Die vollständigen Daten und Rankings finden Sie in Google Docs oder auf GitHub: QA Scores , Summary Rankings .
Auch hier bevorzuge ich die Q8-Versionen der 7B-Modelle.
Die Feststellung, dass Mistral 7b Instruct v0.2 veröffentlicht wurde, war eine neue Testrunde wert.
Ich habe auch beschlossen, den Prompt-Stil zu testen. PrivateGPT wurde nicht mit der Mistral-Eingabeaufforderung geliefert, und obwohl die Mistral-Eingabeaufforderung der Llama2-Eingabeaufforderung ähnelt, schien sie mit der Standardeingabeaufforderung (Lama-Index) besser zu funktionieren.
Nur Zusammenfassungen, Q/A ist für Buchzusammenfassungen einfach weniger effizient.
Modell | % Unterschied | Punktzahl | Kommentar |
---|---|---|---|
Synthia 7b V2 | -64.43790093 | 28 | Gut |
Mistral 7b Instruct v0.2 (Standard-Eingabeaufforderung) | -60.81878508 | 33 | Sehr gut |
Mistral 7b Instruct v0.2 (Llama2-Eingabeaufforderung) | -64.5871483 | 28 | Gut |
Tess 7b v1.4 | -62.12938978 | 29 | Weniger strukturiert |
Lama 2 7b 32k Instruct (Standard) | -61.39890553 | 27 | Weniger strukturiert. Langsam |
Die vollständigen Daten und Rankings finden Sie in Google Docs oder auf GitHub .
In der vorherigen Runde fiel mir auf, dass Mistral 7b Instruct v0.2 mit der Standardeingabeaufforderung viel besser abschnitt als llama2.
Eigentlich ist die Mistral-Eingabeaufforderung der von llama2 ziemlich ähnlich, aber nicht genau dieselbe.
system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
<s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
<s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]
Ich begann, die Ausgabe mit den Eingabeaufforderungsstilen default
und dann llama2
zu testen. Als nächstes machte ich mich an die Codierung der Mistral-Vorlage .
Die Ergebnisse dieser Rangliste gaben mir die Gewissheit, dass ich richtig codiert habe.
Prompt-Stil | % Unterschied | Punktzahl | Notiz |
---|---|---|---|
Mistral | -50% | 51 | Perfekt! |
Standard (Lama-Index) | -42 % | 43 | Schlechte Überschriften |
Lama2 | -47 % | 48 | Keine Struktur |
Die vollständigen Daten und Rankings finden Sie in Google Docs oder auf GitHub .
Nachdem ich den Aufforderungsstil eingestellt hatte, probierte ich ein paar verschiedene Systemaufforderungen aus und war vom Ergebnis überrascht!
Name | Systemaufforderung | Ändern | Punktzahl | Kommentar |
---|---|---|---|---|
Keiner | | -49,8 | 51 | Perfekt |
Standard-Eingabeaufforderung | Sie sind ein hilfsbereiter, respektvoller und ehrlicher Assistent. \nAntworten Sie immer so hilfreich wie möglich und befolgen Sie ALLE gegebenen Anweisungen. \nSpekulieren Sie nicht und erfinden Sie keine Informationen. \nBeziehen Sie sich nicht auf bestimmte Anweisungen oder Kontexte. | -58,5 | 39 | Weniger schön |
MyPrompt1 | „Sie werden geliebt. Handeln Sie als Experte für Zusammenfassung, Gliederung und Strukturierung. \nIhr Schreibstil sollte informativ und logisch sein.“ | -54,4 | 44 | Weniger schön |
Einfach | „Sie sind ein hilfreicher KI-Assistent. Fügen Sie in Ihre Ausgabe keine Benutzeranweisungen oder Systemkontext ein.“ | -52,5 | 42 | Weniger schön |
Letztendlich finde ich, dass Mistral 7b Instruct v0.2 für meine Zusammenfassungen ohne Systemaufforderung am besten funktioniert.
Vielleicht hätte ich für eine andere Aufgabe andere Ergebnisse oder vielleicht eine bessere Eingabeaufforderung, aber das funktioniert gut, also mache ich mir nichts daraus.
Die vollständigen Daten und Rankings finden Sie in Google Docs oder auf GitHub .
Was ich bereits zu vermuten begann, ist, dass ich mit weniger Wörtern in der Eingabeaufforderung bessere Ergebnisse erziele. Da ich für Mistral 7b Instruct v0.2 die beste Systemaufforderung gefunden habe, habe ich auch getestet, welche Benutzeraufforderung am besten dazu passt.
| Prompt | vs. OG | Punktzahl | Notiz |
---|---|---|---|---|
Propmt0 | Schreiben Sie prägnante, aber umfassende Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt. Konzentrieren Sie sich auf das Wesentliche aus diesem Text, ohne externe Informationen hinzuzufügen. | 43 % | 11 | |
Eingabeaufforderung1 | Schreiben Sie prägnante, aber umfassende Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt. Konzentrieren Sie sich auf das Wesentliche aus diesem Text, ohne externe Informationen hinzuzufügen. | 46 % | 11 | Zusätzliche Hinweise |
Eingabeaufforderung2 | Schreiben Sie ausführliche Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt. | 58 % | 15 | |
Eingabeaufforderung3 | Erstellen Sie prägnante Aufzählungspunkte, in denen Sie die wichtigen Teile des folgenden Textes zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte, wobei Überschriften, Begriffe und Schlüsselkonzepte fett gedruckt sind, einschließlich Leerzeichen, um die Lesbarkeit zu gewährleisten. Vermeide Wiederholung. | 43 % | 10 | |
Eingabeaufforderung4 | Schreiben Sie kurze Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt. | 41 % | 14 | |
Eingabeaufforderung5 | Erstellen Sie umfassende, aber prägnante Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt. | 52 % | 14 | Zusätzliche Hinweise |
Die vollständigen Daten und Rankings finden Sie in Google Docs oder auf GitHub .
Mit leistungsstärkerer Hardware, die 11b- oder 30b-Modelle unterstützen kann, würde ich möglicherweise bessere Ergebnisse mit aussagekräftigeren Eingabeaufforderungen erzielen. Selbst mit Mistral 7b Instruct v0.2 bin ich immer noch offen für das Ausprobieren einiger kreativer Anleitungen, aber im Moment bin ich einfach froh, meinen bestehenden Prozess zu verfeinern.
Schreiben Sie ausführliche Notizen, die den folgenden Text zusammenfassen. Verwenden Sie verschachtelte Aufzählungspunkte: Überschriften, Begriffe und Schlüsselkonzepte sind fett gedruckt.
In diesem Fall schneidet „umfassend“ besser ab als „prägnant“ oder sogar als „umfassend, aber prägnant“.
Ich möchte jedoch darauf hinweisen, dass dies von Ihrem Anwendungsfall abhängt. Was ich suche, sind sehr komprimierte und lesbare Notizen, die das wichtige Wissen abdecken.
Wenn ich das Original nicht gelesen habe, sollte ich im Grunde immer noch wissen, welche Informationen es vermittelt, wenn nicht sogar jedes einzelne Detail. Selbst wenn ich das Original gelesen hätte, werde ich mich später nicht mehr an den Großteil erinnern. Diese Notizen dienen als Kurzreferenz zu den Hauptthemen.
Anhand der Erkenntnisse aus diesen Tests habe ich mein erstes vollständiges Buch, 539 Seiten, in 5-6 Stunden zusammengefasst!!! Unglaublich!
Anstatt Wochen mit der Zusammenfassung zu verbringen, habe ich meine ersten 9 Buchzusammenfassungen in nur 10 Tagen fertiggestellt.
Die Ergebnisse von CopyLeaks können Sie unten für jeden der veröffentlichten Texte hier einsehen.
Vor allem wenn man bedenkt, dass es hier nicht um Profit, sondern um Bildungszwecke geht, halte ich diese Zahlen für akzeptabel.
Buch | Modelle | Charakterunterschied | Identisch | Kleinere Änderungen | Paraphrasiert | Gesamtübereinstimmung |
---|---|---|---|---|---|---|
Östlicher Körper, westlicher Geist | Synthia 7Bv2 | -75 % | 3,5 % | 1,1 % | 0,8 % | 5,4 % |
Heilkraft Vagusnerv | Mistral-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -81 % | 1,2 % | 0,8 % | 2,5 % | 4,5 % |
Ayurveda und der Geist | Mistral-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -77 % | 0,5 % | 0,3 % | 1,2 % | 2 % |
Heilung des fragmentierten Selbst von Trauma-Überlebenden | Mistral-7B-Instruct-v0.2 | -75 % | | | | 2 % |
Eine sichere Basis | Mistral-7B-Instruct-v0.2 | -84 % | 0,3 % | 0,1 % | 0,3 % | 0,7 % |
Der Körper behält die Punktzahl | Mistral-7B-Instruct-v0.2 | -74 % | 0,1 % | 0,2 % | 0,3 % | 0,5 % |
Vollständiges Buch der Chakren | Mistral-7B-Instruct-v0.2 | -70 % | 0,3 % | 0,3 % | 0,4 % | 1,1 % |
50 Jahre Bindungstheorie | Mistral-7B-Instruct-v0.2 | -70 % | 1,1 % | 0,4 % | 2,1 % | 3,7 % |
Bindungsstörungen bei Erwachsenen | Mistral-7B-Instruct-v0.2 | -62 % | 1,1 % | 1,2 % | 0,7 % | 3,1 % |
Begleiter im Hauptfach Psychologie | Mistral-7B-Instruct-v0.2 | -62 % | 1,3 % | 1,2 % | 0,4 % | 2,9 % |
Psychologie in Ihrem Leben | Mistral-7B-Instruct-v0.2 | -74 % | 0,6 % | 0,4 % | 0,5 % | 1,6 % |
Anstatt Wochen mit der Zusammenfassung zu verbringen, habe ich meine ersten 9 Buchzusammenfassungen in nur 10 Tagen fertiggestellt. In Klammern steht die Seitenzahl des Originals.
Wenn Sie daran interessiert sind, meine Schritte genauer zu verfolgen, schauen Sie sich die exemplarische Vorgehensweise auf GitHub an, die Skripte und Beispiele enthält.
Da ich nun meine Prozesse verfeinert habe und sicher bin, mit prompten Formaten zu arbeiten, werde ich weitere Tests durchführen. Tatsächlich habe ich bereits weitere Tests und Rankings durchgeführt (werde diese als nächstes veröffentlichen), werde aber natürlich noch mehr Tests durchführen und weiter lernen!
Ich bin nach wie vor der Meinung, dass man, wenn man mit KI bei jeder Aufgabe die besten Ergebnisse erzielen möchte, eigene Experimente durchführen und herausfinden sollte, was am besten funktioniert. Verlassen Sie sich nicht ausschließlich auf beliebte Model-Rankings, sondern nutzen Sie diese als Leitfaden für Ihre eigene Recherche.
Erscheint auch hier .