Wikipedia · einfach zusammengefasst · Stand
Retrieval-Augmented Generation
Unter Retrieval-Augmented Generation (RAG) versteht man ein Softwaresystem, das Information Retrieval mit einem Large Language Model kombiniert.
Inhalt5 Abschnitte
Grundidee und Ablauf
Retrieval-Augmented Generation (RAG) ist ein Softwaresystem, das Information Retrieval (gezieltes Auffinden von Informationen) mit einem Large Language Model kombiniert. Anders als ein Sprachmodell, das nur seine Trainingsdaten nutzt, kann RAG bei einer Anfrage auf externe Informationsquellen, Datenbanken oder das World Wide Web zugreifen. Dadurch sollen Antworten genauer und robuster werden, weil aktuelle und spezifische Informationen einbezogen werden.
Ein RAG-System arbeitet im Wesentlichen in vier Stufen: Datenindexierung, Datenabruf, Augmentierung und Antwortgenerierung. Typische Anwendungen sind Chatbots mit Zugriff auf interne Unternehmensdaten und Systeme, die Sachinformationen ausschließlich aus verlässlichen Quellen bereitstellen sollen.
Daten vorbereiten und indexieren
Zuerst werden die zu verwendenden Daten in Worteinbettungen umgewandelt und in einer Vektordatenbank indexiert. Worteinbettungen sind Vektoren, also Zahlenfolgen, die die Bedeutung von Wörtern oder Daten für einen Vergleich abbilden. In der Datenbank bleiben diese Vektoren mit den ursprünglichen Daten verknüpft.
Die Daten können unstrukturiert sein, etwa Texte, Bilder, Videos oder Audio; semistrukturiert; oder strukturiert vorliegen, zum Beispiel aus einer relationalen Datenbank oder einem Wissensgraphen. Je nach Umsetzung kann ein RAG-System außerdem frühere Suchanfragen und die zugehörigen Antworten indexieren.
Vor der Indexierung werden Daten in kleinere Bestandteile, Chunks, aufgeteilt. Textdokumente lassen sich etwa in Absätze gliedern, Wissensgraphen in Sub-Graphen. Bilder können mithilfe eines Segmentierungsmodells nach dargestellten Objekten wie Hund, Tisch oder Gesicht getrennt werden. Bei relationalen Datenbanken kann das Datenbankschema, beispielsweise DDL, nach zusammengehörigen Tabellen aufgeteilt werden, die fusioniert, etwa per „join“, werden müssen. Jeder Chunk erhält Annotationen, damit er seiner ursprünglichen Quelle zugeordnet werden kann.
Vektoren und verknüpfte Daten
Für die Vektor-Generierung werden Chunks zunächst durch Tokenisierung in Token zerlegt. Ein Einbettungsmodell übersetzt diese Token anschließend in Worteinbettungen. Vektoren, Chunks und Annotationen werden gemeinsam in der Vektordatenbank gespeichert.
Bei Bildern erzeugt meist ein Bild-zu-Text-Modell zunächst eine Beschreibung; diese Beschreibung wird dann für die Worteinbettung verwendet. Seltener wird das Bild selbst codiert, weil dafür ein Tokenizer nötig ist, der Bilddaten verarbeiten kann. Sollen Bild- und Textdaten in derselben Datenbank liegen, wird ein multimodaler Tokenizer benötigt. Entsprechendes gilt für Audio- und Videodaten.
Komplexe Systeme können Daten auch automatisiert vernetzen. Ein Sprachmodell extrahiert dazu aus indexierten Dokumenten einen Wissensgraphen. Die in einem Dokument beschriebenen Konzepte werden mit passenden Konzepten im Wissensgraphen verbunden. So können zuvor unstrukturierte Daten formal analysiert werden.
Suchen, filtern und Daten kombinieren
Bei einer Nutzeranfrage wird die Suchanfrage ebenfalls in eine Worteinbettung übersetzt. Das System ermittelt dann, welche gespeicherten Daten semantisch, also ihrer Bedeutung nach, mit der Anfrage korrelieren. Relevante Treffer werden gewichtet (Ranking) und gefiltert. Für die Berechnung der Korrelation können beispielsweise Okapi BM25, SPLADE, Dragon oder Kombinationen mehrerer Verfahren verwendet werden.
Filter berücksichtigen unter anderem Vertraulichkeit, Jugendschutz-Einschränkungen und Urheberrechte. Einige Systeme bewerten Suchergebnisse zusätzlich mit einem Sprachmodell anhand von Relevanzkriterien. Wenn keine relevanten Daten gefunden werden, kann ein weiterer Agent die Anfrage umformulieren (Rephrasing) und erneut suchen. Die Zahl der Versuche und/oder die verfügbare Zeit wird begrenzt. Dies erhöht Arbeits- und Zeitaufwand, steigert aber die Wahrscheinlichkeit eines günstigen Suchergebnisses.
Bei relationalen Daten werden üblicherweise nicht alle Daten als Dokumente gespeichert, sondern nur das Datenbankschema. Die Suche liefert das benötigte Schema zurück; daraus erzeugt ein Sprachmodell SQL-Quelltext (Text-to-SQL), der auf der Datenbank ausgeführt wird. Der erzeugte Code muss auf syntaktische Fehler wie erfundene Tabellen oder Spalten sowie auf Schädlichkeit, etwa mögliche SQL-Injection, geprüft werden. Die Datenbankabfrage muss durch passende Rechte „Read-Only“, also schreibgeschützt, sein.
In der Augmentierung werden die gefundenen Daten zusammen mit der Nutzeranfrage und anwendungsspezifischen Daten wie Systemprompt und Metadaten des Benutzers zusammengeführt. Komplexe RAG-Systeme können Anfragen dabei in unterschiedliche Wissensgebiete aufteilen und jeweils spezifisch behandeln.
Antworten, Einsatz und Grenzen
Im letzten Schritt erhält ein Sprachmodell die augmentierte Suchanfrage und transformiert die Daten mithilfe eines statistischen Modells in eine Antwort. Die Antwort wird außerdem mit Referenzen auf die Datenquellen verknüpft, typischerweise über einen URI. Das ermöglicht Nutzern, die Antwort nachzuvollziehen und zu kontrollieren.
RAG erweitert klassische Suchmaschinen; daher überschneiden sich die Einsatzbereiche. Genannt werden Kundenbetreuung, Analyse medizinischer Informationen, juristische Recherchen, Bildung, wissenschaftliche Forschung, Finanzanalyse und die Auswertung von Logdaten sowie weitere Anwendungen, bei denen Informationen gefunden werden müssen.
Die Umsetzung ist wegen der vielen beteiligten Softwaresysteme und Akteure komplex. Indexierung, Gewichtung und Filterung müssen laufend an veränderte Gegebenheiten angepasst und erweitert werden. Daher verursacht RAG nicht nur bei der Implementierung, sondern auch im Betrieb kontinuierlichen Aufwand.
Zur Implementierung gibt es anpassbare Softwarepakete: komplexe Frameworks zur Orchestrierung von KI-Agenten und Programmierschnittstellen sowie Low-Code-Umgebungen. Beispiele für Low-Code-Plattformen sind Microsoft Copilot Studio, Azure AI Studio, Vertex AI Agent Builder und watsonx. Open-Source-Werkzeuge umfassen unter anderem PromptFlow, LangChain und LangGraph, Kernel Memory, Semantic Kernel, Haystack, RAGFlow, txtai, LlamaIndex, RAGAS und FlashRAG. Firecrawl dient als API-Service zur Webseitenindexierung. Zusätzlich existieren fertige Pakete wie Pieces for Developers für persönliches Datenmanagement. RAG wird zudem in Suchmaschinen wie Perplexity.ai, Google Gemini, Microsoft Bing und SearchGPT eingesetzt.