LLMS mit RAG: Informationsextraktion leicht gemacht
Lesezeit: 4 Min
Seit einiger Zeit bietet ChatGPT ein neues Feature: das Hochladen von Dokumenten oder Bildern und die Möglichkeit im Anschluss Fragen dazu zu stellen. Durch diese Funktion können Nutzer:innen jetzt effizient nach relevanten Informationen in großen Textmengen suchen, was sowohl im beruflichen als auch im wissenschaftlichen Kontext äußerst wertvoll ist. Wie das neue Feature funktioniert, erklärt unser Softwareentwickler Dominic Hückmann.
In einer zunehmend digitalisierten Welt, in der Informationen im Überfluss vorhanden sind, wird die Fähigkeit, relevante Daten aus Dokumenten zu extrahieren und zu verstehen, immer wichtiger. Denn wir streben danach schnell und einfach Zugang zu unseren Daten zu erhalten.
Darum konnten Inhalte von Dokumenten nicht einfach in ChatGPT einfügt werden
Die Eingabe in das Chatfenster von ChatGPT unterliegt einer maximalen Zeichenanzahl. Für Nutzer:innen hat das bisher bedeutet, lange Texte in kleiner Abschnitte aufzuteilen, um anschließend Fragen dazu stellen zu können. Ein sehr aufwendiger und zeitintensiver Prozess. Leider führte das auch häufig zu ungenauen Ergebnissen, da ChatGPT den Gesamtkontext nicht korrekt interpretieren konnte, um richtige Antworten zu generieren.
Zudem besteht der Inhalt in Dokumenten nicht immer aus reinem Text. So können Tabellen, Bilder und auch Formeln in den Dokumenten vorkommen, welche sich nicht einfach in den Chat kopieren lassen.
Wie können wir dieses Problem lösen, ohne eine KI jedes mal aufwendig trainieren zu müssen?
Eine Technik, die sich dabei als wirksam erwiesen hat, ist RAG.
RAG steht für „Retrieval Augmented Generation“ und wurde im Jahr 2020 von Meta AI eingeführt. Mittels KI-basierter Methoden und Modelle werden die Inhalte analysiert und nur die relevanten Teile berücksichtigt, um präzise und kontextbezogene Antworten zu generieren.
So funktioniert RAG
Retrieval Augmented Generation (RAG) ist ein Konzept, das die Idee kombiniert Informationen abzurufen (retrieval) und darauf basierend neue Informationen zu generieren. In einem physischen Kontext könnte man sich das als einen Besuch in der Bibliothek vorstellen. Dabei stellt die Vektordatenbank die Bibliothek dar, in der Informationen in Form von Büchern gespeichert werden und das Retrieval-System den Bibliothekar. Sie als User:in betreten also die Bibliothek und haben eine spezifische Frage oder ein bestimmtes Problem, das Sie gerne lösen möchten.
R – Retrieval
Anstatt selbst direkt in die Regale der Bibliothek zu gehen, um nach Büchern zu suchen, bitten Sie den Bibliothekar um Hilfe. Der Bibliothekar ist, wie ein Retrieval-System, darauf spezialisiert, die relevanten Bücher für Sie zu finden. Bei der Abfrage erklären Sie ihm die Frage und er sucht mit seinem Wissen nach den besten Büchern (Quellen), die Ihnen bei Ihrem Problem helfen könnten. Dies geschieht unter Berücksichtigung der semantischen Ähnlichkeit zwischen den Word Embeddings der Fragestellung und den Word Embeddings der Textabschnitte.
A – Augmented
Der Bibliothekar „geht“ also durch die Regale und stellt eine Liste mit den Büchern (Quellen) zusammen, die für Ihr Problem oder Ihre Frage relevant sind. Damit hat der Bibliothekar die spezifischen Bücher, aus denen er Ihnen die Informationen geben kann. Diese können gegebenenfalls mit weiteren Büchern bzw. Quellen erweitert werden, um die Generierung des Ergebnisses für den letzten Schritt zu unterstützen.
G – Generation
Nachdem der Bibliothekar die Bücher bzw. Quellen bereitgestellt hat, kommt eine KI – beispielsweise ein Language Model (LLM) – zum Einsatz. Die KI verwendet die erhaltenen Quellen, um dann die Informationen zu generieren, die Sie zur Beantwortung Ihrer Frage benötigen.
Zusammengefasst hilft die Retrieval-Komponente (der Bibliothekar) Ihnen dabei, die relevanten Quellen (Bücher) zu finden, wohingegen die Generierungskomponente (die Lese- und Zusammenfassungsfähigkeiten) es ermöglicht, die benötigten Informationen aus den ausgewählten Quellen zu generieren.
In der digitalen Welt funktioniert es ähnlich wie in unserem Beispiel in der Bibliothek: Zuerst ruft ein Retrieval-System die relevanten Informationen aus einer Datenbank ab. Im nächsten Schritt nutzt ein Generierungssystem diese Informationen, um auf die spezifische Frage der Benutzer:innen einzugehen und eine sinnvolle Antwort zu generieren.
Bevor RAG genutzt werden kann, muss das Dokument zuerst entsprechend vorbereitet werden. Ein Beispiel:
Für die Vorbereitung auf den Retrieval-Schritt in RAG wurde das hochgeladene Dokument zunächst in kurze Textabschnitte zerlegt und diese Abschnitte anschließend in numerische Vektoren, auch bekannt als Word Embeddings, umgewandelt.
Diese Word Embeddings werden dann in einer Art Vektor-Datenbank oder einem Vektor-Speicher hinterlegt, um bei einer Fragestellung nur noch die ähnlichsten Textabschnitte zur Fragestellung zu finden.
Nicht nur ChatGPT kann das!
Es gibt eine Vielzahl anderer großer Sprachmodelle, auf denen RAG (Retrieval Augmented Generation) effektiv angewandt werden kann. Eines davon ist die europäische Antwort auf OpenAI, Aleph-Alpha.
Aleph-Alpha verfügt sowohl über ein Modell zur Erstellung von Word Embeddings als auch über eines zur Generierung von Ergebnissen (Sprachmodell).
Um zu verdeutlichen, wie RAG funktioniert, finden Sie hier ein einfaches Beispiel, das wir im Aleph-Alpha Playground erstellt haben.
In diesem Fall ist der Text nach „### Input:“ der Text, der durch „R – Retrieval“ abgerufen wurde. Der Schritt der Aufbereitung wird hier veranschaulicht, indem er prompt definiert wurde und bei der Generierung das korrekte Ergebnis der Frage herauskommt.
Eigentlich ganz einfach, oder?
Nicht ganz, denn: Je länger, komplexer und unstrukturierter die Dokumente sind, desto schwieriger gestaltet sich die Generierung eines qualitativ hochwertigen Word Embeddings sowie der Retrieval-Schritt zur Auswahl relevanter Abschnitte. Es gibt jedoch verschiedene Techniken, die je nach Situation angewandt werden können, um die Wahrscheinlichkeit der Falschinformationen in der Ausgabe erheblich zu reduzieren.