Large Language Models und RAG

„Draw a distinction.“

George Spencer-Brown

(1923-2016)

Dieser Beitrag ist Teil einer Serie zu generativer künstlicher Intelligenz. In den beiden vorherigen Beiträgen wurde gezeigt, wie LLMs entstanden sind und genutzt werden können (Teil 1) und welche Eigenschaften und Schwachstellen LLMs aufweisen sowie mögliche Verbesserungsansätze (Teil 2).

Die Besonderheit an LLMs: sie können mit natürlicher Sprache befragt werden und antworten auch mit natürlicher Sprache. Das dazu nötige Wissen wurde während des umfangreichen Trainings mit riesigen Datenmengen in den Parametern des LLM gespeichert („parametrischer Speicher“). Die manchmal unzureichende Qualität der Antworten, insbesondere in spezifischen Domänen lässt sich auf Basis von „In Context Learning“ – Ansätzen mit Methoden des Prompt-Engineerings oder des aufwändigeren Finetunings des LLMs verbessern. Dies ist eine von zwei Dimensionen der Verbesserungsmöglichkeiten, wie im letzten Beitrag dargestellt – man ändert die Fähigkeiten des Modells (hier LLM) und/oder die Qualität des zugeführten Kontextes:

(Bildquelle: Bouchard, L.-F., Peters, L. (2024). Building LLMs for Production: Enhancing LLM Abilities and Reliability with Prompting, Fine-Tuning, and RAG (English Edition). Kindle-Version, Towards AI.)

Im letzten Beitrag wurde näher auf das Prompt-Engineering und das Finetuning eingegangen. Neben diesen mehr datenorientierten Änderungsmethoden gibt es aber auch “infrastrukturelle“ Weiterentwicklungen.

Bei den LLMs entwickeln sich die Modelle ebenfalls fort. Es sollen zwei Neuerungen beispielhaft genannt werden:

  • Die Verkleinerung der Modelle (Small Language Models). Neben den großen Modellen z.B. von Open AI, Meta, Google usw. werden nunmehr jeweils LLM-Familien mit LLMs kleiner und mittlerer Größe herausgebracht. Kleinere Modelle (Parameteranzahl im einstelligen Milliardenbereich) lassen sich kostengünstiger und einfacher trainieren/finetunen und als lokale Modelle auf Endgeräten betreiben.
  • Die Erweiterung zu Multimodalen Modellen, d.h. Modellen, die neben der Sprache auch (gleichzeitig) Ton, Bilder und Videos verarbeiten können und als Ein- und Ausgabe unterstützen. Die Fähigkeiten von LLMs mit diesen multimodalen Erweiterungen werden erheblich verbessert, können hier aber aufgrund des Umfangs nicht dargestellt werden.

Bisher nicht genauer behandelt wurde die andere im letzten Artikel erwähnte Dimension der LLM-Verbesserung, der kontextuellen Erweiterung mittels eines Retrieval Augmented Generation (RAG)-Verfahrens. LLMs besitzen, wie oben und in den ersten Beiträgen beschrieben, ein allgemeines, statisches „parametrisches Wissen“. Um den eher dynamischen Anforderungen in der Anwendungsrealität (fachspezifische, aktuelle, sich ändernde Umgebungen) gerecht zu werden, wird z.B. bei einer Anfrage („Query“) zu einem Thema durch das RAG externes Wissen (z.B. in Form von Text-Dokumenten) abgerufen und dem LLM im Prompt zur Verfügung gestellt, um eine kontextrelevante, präzisere Antwort zu ermöglichen:

(Bildquelle: Kimothi, A. (2024). A Simple Guide to Retrieval Augmented Generation (Version 3). Manning Publications (MEAP Edition).)

Das RAG-Verfahren geht auf Arbeiten im Umfeld von Meta[1] in 2020/2021 zurück (vgl. Lewis et al., 2021). Mit diesem Verfahren lassen sich (insbesondere auch lokale) LLMs besser in den Unternehmensalltag integrieren, da durch den ermöglichten Rückgriff auf aktuelle und fachspezifische (interne) Informationen die Qualität der LLMs in Frage-/Antwortsituationen stark gesteigert werden kann. Der Prozess kann offensichtlich in vielen Situationen eingebracht werden. Es ist deshalb nachvollziehbar, dass RAG-Verfahren im Jahr 2023 eine der intensivsten Forschungsgegenstände im Bereich der Künstlichen Intelligenz (KI) waren und im Jahr 2024 RAG-Realisierungen mit am häufigsten im KI-Umfeld anzutreffen[2] sind, z.B. bei neuen adobe und Microsoft oder Google-Produkten. Im Standardprozess werden dabei meist unstrukturierte Textdaten als externe Information genutzt.

Wie sieht der Prozess aus, der zu einer Frage eine möglichst genaue und relevante Antwort durch das LLM ermöglicht? Wesentlich für den Erfolg ist die Bereitstellung der passenden (externen) Dokumente, aus denen im RAG- Verfahren die bestens geeigneten Informationen abgerufen werden, um sie für das LLM zur Verfügung zu stellen.

Kernelement des Abrufverfahrens („Retrieval“) ist die Nutzung der „semantischen Suche“ nach der passenden Information. Wie kommt Semantik in automatische Abläufe, wie kann man die Bedeutung von Wörtern, Sätzen oder Textabschnitten erfassen und operational handhabbar machen?

Dazu muss man wissen, wie ein LLM intern Sprache verarbeitet. Wörter werden gewöhnlich in Token zerlegt (der Recheneinheit, nach deren Anzahl z.B. Open AI den Gebrauch seiner API abrechnet). Für die semantische Erfassung werden Tokens zu sogenannten Chunks zusammengefasst, häufig immer in die gleiche Anzahl von Tokens je Chunk. Damit hat man einen Text in viele Chunks zerlegt. Nun werden die Chunks jeweils einem hochdimensionalen Vektor (fester Dimension von über 500, manchmal auch über 1000) zugeordnet.

Die Lage der Vektoren spiegeln die Bedeutungsähnlichkeit wider, nahe beieinander bedeutet ähnlicher in der Bedeutung. Die Nähe misst man zwischen Vektoren z.B. häufig durch den Winkel zwischen beiden.[3]

Wie bekommt man diese Zuordnung zwischen Text und Vektoren hin? Man nutzt sogenannte Einbettungsverfahren („Embeddings“), die durch Training auf großen Datensätzen entstanden sind und Text in hochdimensionale Vektorräume abbilden[4], damit dieser dann „mathematisch behandelt“ werden kann, z.B. auch mit neuronalen Netzen. Technisch gibt es Software für Tokenisierungs-, Chunking-, und Embeddingverfahren. Die Vektoren werden in sogenannten Vektordatenbanken verwaltet.

Nach dieser Vorbereitung muss nun die geeignete Information gefunden werden. Als Ausgangspunkt betrachtet man den Vektor zur Frage („Query“), die dem LLM gestellt wird und sucht unter den Vektoren zum externen Text möglichst nahe liegende, um damit bedeutungsähnlichen Text zu bestimmen Die Fundstellen werden einem Ranking-Verfahren unterzogen und der/die Treffer werden dem Prompt zusammen mit der Query und möglichen zusätzlichen technischen Anweisungen (z.B. zum Verhalten des LLMs) übergeben. Das LLM gibt dann die Antwort auf die Frage.

Ganz offensichtlich gibt es viele „Stellschrauben“ (z.B. alle oben aufgezählten Verfahren) die unterschiedlich ausgestaltet werden können und damit Einfluss auf die Qualität der Antwort haben. Man nennt deshalb das einfache oben beschriebene Grundverfahren auch „Naive RAG“ und die auf zahlreichen Änderungen und Ergänzungen in diesen Methoden beruhende fortentwickelte RAG auch „Advanced RAG“ (als Sammelbegriff).[5]

Beispielhaft für die Fortentwicklung von Verfahren im Rahmen des „Advanced RAG“ sei das Chunking genannt. Offensichtlich hängt ein erfolgreiches Retrieval von der Granularität und dem passenden Zuschnitt des Textes in Chunks und damit Vektoren zusammen. Ein „Semantic Chunking“ hat zum Ziel, die Bedeutungszusammenhänge besser abzubilden. Dafür gibt es eine Reihe von Ansätzen. Man benutzt z.B. das Umschreiben der Frage, die Erzeugung synthetischer Dokumente, iterative und rekursive Retrievalmethoden. Das hilft beim Auffinden relevanter Stellen („Recall“). Beim Prompting wird durch Einsatz von Chain of Thought (CoT)-Prompts, oder ähnlicher Ver-fahren (vgl. Artikel 2) bewirkt, dass das LLM in seiner Antwort durch eine Abfolge von sprachlich formulierten Zwischenschritten transparent präzisere Ergebnisse liefert („Pre-cision“) , z.T. sogar automatisiert (DSPy-vgl. Artikel 2).

Ein weiteres Mittel, um den Inhalt des bereitgestellten externen Wissens besser zu durchdringen, sind sogenannte „Knowledge Graphs“ oder Wissensgraphen, die in Graph-Datenbanken verwaltet werden und strukturierte Daten sind.[7]

Ein Wissensgraph ist eine Datenstruktur, welcher Daten in semantische Einheiten zerlegt, die Konzepte und Entitäten mithilfe von Knoten darstellt und diese Knoten durch Beziehungen miteinander verknüpft. Zum Beispiel stellen Knoten Entitäten wie Personen, Unternehmen, Artikel und Aufgaben dar, während Kanten die Beziehungen zwischen ihnen kennzeichnen, wie z. B. Beschäftigung, Berichtsstrukturen, Erwähnungen in Artikeln und Aufgabenzuweisungen und können sowohl strukturierte Informationen als auch unstrukturierte Informationen speichern. Durch ein tieferes und breiteres Kontextverständnis können auch Fragen, welche mehrere Dokumente/Themen umfassen, beantwortet werden, wie z.B. „Was sind die Hauptthemen im Datensatz?“. Außerdem können durch die Wissensaufbereitung Halluzinationen reduziert und die Genauigkeit erhöht werden. Diese Fähigkeit macht sie ideal für RAG-Anwendungen, da sie eine effiziente Speicherung, Abfrage und Kontextualisierung komplexer und miteinander verbundener Daten ermöglichen (Bülow, 2024).

Insgesamt werden im Rahmen von „Advanced RAG“ eine Menge neuer und effizienterer Methoden angeboten, die das RAG dynamischer und treffsicherer beim Retrieval werden und eine relevante Antwort erzeugen lassen. Dabei werden auch iterative und adaptive Verfahren unterstützt, die eine flexiblere Berücksichtigung wechselnder Anwendungsumgebungen unterstützen.  

Für eine ausführlichere Darstellung von Weiterentwicklungen im Rahmen „Advanced RAG“ vgl. z.B. Xalli AI Lab (2024); Huang, Y., Huang, J. X. (2024); Singh, V. (2024).

Die obigen Ziele werden durch den „Advanced RAG“ weiterführenden „Modular RAG“-Ansatz noch konsequenter verfolgt. Es werden Komponenten gebaut und eingesetzt, für das optimale Chunking oder die semantische Suche und ein passendes Ranking der Suchergebnisse usw. Die Module erhöhen die Flexibilität und Wartbarkeit des RAG-Systems. Allerdings sind diese Umgebungen komplexer zu managen, insbesondere da zusätzlich durch iterative und adaptive Verknüpfungen Präzision und das Anwendungsspektrum erhöht werden.

Neben diesen Herausforderungen auf der Systemarchitektur- und Betriebsseite interessiert natürlich die Messung der Optimalität dieser Systeme mittels einer Evaluierungssoftware, die mit seinen Metriken u.a. auch zur iterativen Optimierung in laufenden RAG-Systemen genutzt werden kann. RAG-Systeme sollen erreichen, dass LLM-Antworten im vorgegebenen Kontext relevant verankert sind und Halluzinationen verringert/vermieden werden, wozu insbesondere auch die große Anzahl von Verbesserungsvorschlägen im Pre- und Postretrieval im Zuge des Advanced RAG dienen. Zur Überprüfung, inwieweit die Erwartungen erfüllt werden, gibt es Evaluationsansätze für das gesamte System und insbesondere die Hauptteilkomponenten des RAG-Systems, dem Retriever und der Generierung.

Bei der Bewertung von RAG-Systemen wird meist zwischen der Messung der Qualität von Retriever und Generator unterschieden. Beispielsweise sind typische Methoden BLEU oder ROUGE. Darüber hinaus gibt es LLM-basierte Metriken, die synthetische Datensätze zur Überprüfung und zum Benchmarking erzeugen, einer weiteren wichtigen Funktion der Evaluationsmethoden, z.B. RAGAs und ARES. Hier soll ein sehr neues Framework, RagChecker (vgl. Ru, D., Qiu, L., Hu, X. et al. (2024)) vorgestellt werden. Diese Evaluierungssoftware ist als open source veröffentlicht und betrachtet, wie oben beschrieben, das Gesamtsystem und die beiden Teilsysteme. Es werden sogenannte Behauptungen (engl. claims) aus den Texten extrahiert und die Anzahl von richtigen und falschen Behauptungen in der Modellantwort und den beim Retrieval ausgewählten Chunks betrachtet. Dabei wird sich aus den bereits aus dem Machine Learning bekannten Metriken „Precision“ und „Recall“ bedient[8], wobei die Precision das Verhältnis von wahren Behauptungen zu insgesamt aufgestellten Behauptungen in der Modellantwort ausdrückt und der Recall den Anteil der durch das Modell erfassten insgesamt korrekten Behauptungen (vgl. folgende Grafik):

(Bildquelle: Ru, D., Qiu, L., Hu, X. et al. (2024). RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation. arXiv:2408.08067v2, 17. August 2024)

Insgesamt zeigt die Entwicklung des Einsatzes von LLMs immer mehr die Einbettung eines oder mehrerer LLMs in RAG-Systeme auf, die dann auch in der Lage sein müssen, heterogene Daten aus unterschiedlichen Quellen zu verarbeiten. Da im Rahmen einer umfassenden Automatisierung die Umgebungen komplexer werden und die steigenden Qualitätsanforderungen zu mehr iterativen und adaptiven Prozessen führen, tritt Systemdesign und -betrieb in den Vordergrund. Dies gilt insbesondere, da sich die Entwicklung der Komponenten als Agenten, die autonom handeln, zu beobachten ist.

Im nächsten Artikel sollen LLM-basierte Agenten und Anwendungen von RAG-Systemen behandelt werden.


[1] Facebook AI Research (FAIR)

[2] Typische Anwendungen sind “Ask your document,” Support von Service desks oder Chatbots.

[3] Der Cosinus des Winkels zwischen den beiden Vektoren entspricht hier dem Skalarprodukt der Vektoren, dividiert durch das Produkt der Längen der Vektoren. Damit kann man mit dem einfach zu berechnenden Skalarprodukt arbeiten.

[4] Letztendlich nutzt man als Grundidee die mehr als sechzig Jahre alte „Distributional Hypothesis“: „A word is characterized by the company it keeps“ (vgl. 1 Firth, J.R. (1957).

[5] Zur Bedeutung und Einordnung dieser Begriffe in eine Gesamtbetrachtung des Status und der geplanten Entwicklungen vgl. Gao, Y. et al. (2024).

[6] Vgl. z.B. Huang, Y., Huang, J. X. (2024); Singh, V. (2024) zu den in diesem Absatz erwähnten Methoden.

[7] Die Umwandlung unstrukturierter Daten (Textdokumente) in strukturierte Daten ist häufig als Informationsextraktion in der Praxis auch Gegenstand in LLM- und RAG-Projekten.

[8] Vgl. auch oben im Zusammenhang der Verbesserung des Naive RAG im Rahmen des Advance RAG.

Bibliography

Bülow, J. (2024). Knowledge Graph RAG: Die Zukunft der KI-gestützten Wissensnutzung. https://de.linkedin.com/pulse/knowledge-graph-rag-die-zukunft-der-ki-gest%C3%BCtzten-j%C3%B6rn-b%C3%BClow-4gsde (abgerufen am 05.09.2024)

Firth, J.R. (1957). “A synopsis of linguistic theory 1930-1955”. Studies in Linguistic Analysis: 1–32. Reprinted in F.R. Palmer, ed. (1968). Selected Papers of J.R. Firth 1952-1959. London: Longman

Gao, Y., Xiong, Y., Gao, X., Jia, K., Pan, J., Bi, Y., Dai, Y., Sun, J. & Wang, H. (2024). Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997v5

Gao, Y., Xiong, Y., Wang, M., Wang, H. (2024). Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks. arXiv:2407.21059v1

Greyling, C. (2024). RAG & LLM Context Size. Medium. https://cobusgreyling.medium.com/rag-llm-context-size-6728a2f44beb (abgerufen am 05.09.2024)

Huang, Y., Huang, J. X. (2024). The Survey of Retrieval-Augmented Text Generation in Large Language Models. arXiv:2404.10981v2

June, F. (2024). Advanced RAG 01: Problems of Naive RAG. Medium. https://ai.plainenglish.io/advanced-rag-part-01-problems-of-naive-rag-7e5f8ebb68d5 (abgerufen am 06.09.2024)

Kimothi, A. (2024). A Simple Guide to Retrieval Augmented Generation (Version 3). Manning Publications (MEAP Edition).

Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., Küttler, H., Lewis, M., Yih, W., Rocktäschel, T., Riedel, S., Kiela, D. (2021). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401v4

Microsoft (2024). GraphRAG. GitHub, GitHub repository. https://github.com/microsoft/graphrag

Ru, D., Qiu, L., Hu, X. et al. (2024). RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation. arXiv:2408.08067v2

Singh, V. (2024). Building LLM Applications: Advanced RAG (Part 10). Medium. https://medium.com/@vipra_singh/building-llm-applications-advanced-rag-part-10-ec0fe735aeb1 (abgerufen am 06.09.2024)

Xalli AI Lab (2024). LLM: Building Advanced RAG (Part 1). Medium. https://xallyai.medium.com/llm-building-advanced-rag-part-1-14e9f7a8f063 (abgerufen am 27.09.2024)

Wilhelm Niehoff