Loading AI tools
LLMs, die auf auf externe Wissensquellen verweisen Aus Wikipedia, der freien Enzyklopädie
Unter Retrieval-Augmented Generation (RAG) versteht man ein Softwaresystem, welches Information Retrieval mit einem Large Language Model kombiniert. Eine Abfrage, welche an das System gestellt wird, kann hierbei auf Informationen aus (externen) Informationsquellen, Datenbanken oder dem World Wide Web zugreifen statt nur auf die Trainingsdaten des Modells.[1][2] Dies erhöht die Genauigkeit und Robustheit der generierten Inhalte, indem es die Modelle mit aktuellen und spezifischen Informationen versorgt.[3] Typische Anwendungsfälle sind der Zugriff von Chatbots auf interne (Unternehmens-)Daten oder die Bereitstellung von Sachinformationen, die ausschließlich aus verlässlichen Quellen stammen sollen.
Retrieval-Augmented Generation besteht im Wesentlichen aus vier Stufen:
Die zu referenzierenden Daten werden im ersten Schritt in Worteinbettungen umgewandelt und in einer Vektordatenbank indexiert. Die Daten können hierbei sowohl unstrukturiert (Texte, Bilder, Video, Audio), semistrukturiert, strukturiert (z. B. aus einer Relationalen Datenbank oder einem Wissensgraphen[4]) vorliegen. In der Vektordatenbank werden hierbei die Worteinbettungen mit den originalen Daten verknüpft.[2]
Abhängig von der jeweiligen Implementierung können auch Suchanfragen an das System und die zugehörigen Antworten durch ein RAG-System indexiert werden.
Im ersten Schritt werden die zu indexierenden Daten in kleinere Bestandteile (Chunks) aufgeteilt. Textdokumente können beispielsweise in kleinere Absätze aufgeteilt werden, während man Wissensgraphen in Sub-Graphen zerteilt. Bilder können nach den Objekten im Bild (Hund, Tisch, Gesicht etc.) mittels eines Segmentierungsmodells aufgeteilt werden.[5] Bei relationalen Datenbanken kann man das Datenbankschema (z. B. DDL) nach zusammengehörigen Tabellen aufteilen, welche miteinander verjoined werden müssen.
Die einzelnen Bestandteile werden anschließend mit Annotationen versehen, um sie der ursprünglichen Datenquelle zuordnen zu können.
Die einzelnen Chunks werden mittels eines Tokenizers in Worteinbettungen (Token-Vektoren) übersetzt. Diese werden anschließend in der Vektordatenbank gemeinsam mit den Chunks und Annotationen gespeichert.
Bei Bildinformationen wird hier das Bild von einem Bild-zu-Text Modell in eine Beschreibung übersetzt und diese Beschreibung für die Worteinbettung verwendet. Seltener wird das Bild selbst codiert, denn hierfür wird ein geeigneter Tokenizer benötigt, welcher Bilddaten verarbeiten kann. Wenn Bild- und Textdaten in derselben Datenbank gespeichert werden sollen, wird ein multimodaler Tokenizer benötigt. Ähnliches gilt für das Verarbeiten von Audio- und Videodaten.
Komplexe RAG-Systeme besitzen die Möglichkeit die Daten miteinander automatisiert zu verknüpfen. Hierbei werden mittels eines Sprachmodells aus den indizierten Dokumenten ein Wissensgraph extrahiert und die innerhalb eines Dokuments beschriebenen Konzepte mit den jeweiligen Konzepten im Wissensgraphen verknüpft.[6] Diese Verknüpfung ermöglicht eine formale Analyse der zuvor nur unstrukturiert vorgelegenen Daten.
Beim Datenabruf wird eine Suchanfrage des Benutzers zuerst in eine Worteinbettung umgewandelt. Anschließend wird ermittelt, welche in der Vektordatenbank gespeicherten Daten mit der Abfrage des Benutzers semantisch korrelieren.[7][2] Werden hierbei relevante Daten gefunden, werden diese gewichtet (Ranking) und gefiltert.
Für die Berechnung der Korrelation können unterschiedliche Verfahren zum Einsatz kommen. Typisch ist die Verwendung von Okapi BM25[8], SPLADE[9], Dragon[10], oder eine Kombination mehrerer Verfahren.
Die Filterung der Daten kann aus unterschiedlichen Gründen erfolgen. Hierbei gilt es die Vertraulichkeit der Daten, Jugendschutz-Einschränkungen, Urheberrechte und ähnliches zu berücksichtigen.
Einige Systeme können die Suchergebnisse mittels eines Sprachmodells auf Relevanzkritieren bewerten. Werden keine relevanten Daten gefunden, kann ein weiter Agent die Anfrage des Benutzers umformulieren (rephrasing) und eine neue Suche starten. Das System wird darin beschränkt, wie viele Versuche es hat und/oder wie lange es hierfür Zeit hat.
Da bei diesem Verfahren mehrere zusätzliche Schritte benötigt werden, ergibt sich ein erhöhter Arbeits- und Zeitaufwand für das System, um ein Ergebnis zu liefern. Der Vorteil besteht in der höheren Wahrscheinlichkeit ein günstiges Suchergebnis zu erhalten.
Bei relationalen Daten werden die Daten üblicherweise nicht vollständig in Dokumente umgewandelt und in der Vektordatenbank gespeichert, sondern nur das Datenschema. Bei der Suche wird das nötige Datenschema zurückgeliefert, aus dem ein Sprachmodell SQL-Code erzeugt (Text-to-SQL). Dieser Code wird auf der Datenbank ausgeführt, um an die benötigten Informationen zu kommen.[11]
Hierbei gilt zu beachten, dass der erzeugte Code fehlerhaft oder schadhaft sein kann. Die Anfrage muss daher sowohl auf syntaktische Richtigkeit (Halluzination von nicht-existenden Tabellen oder Spalten), als auch auf SQL-Injection untersucht werden. Die Datenbankabfrage muss durch geeignete Rechtesetzung Read-Only sein.
Im Augmentierungsprozess werden anwendungsspezifische Daten, etwa ein Systemprompt und die Metadaten des Benutzers, sowie die gefundenen Daten der Suchanfrage mit der Anfrage des Benutzers zusammengeführt.[2] Komplexe RAG-Systeme können hierbei die Anfrage des Benutzers in unterschiedliche Wissensgebiete aufteilen und spezifisch behandeln.
Im letzten Schritt wird die augmentierte Suchanfrage in ein Sprachmodell übergeben, welches die Daten mittels eines statistischen Modells in eine Antwort transformiert[12].
Zudem wird die vom Sprachmodell generierte Antwort mit Referenzen auf die Quellen der Daten verknüpft (typischerweise über einen URI), um dem Benutzer eine Nachvollziehbarkeit und Kontrollmöglichkeit der Antwort zu ermöglichen.
Da RAG-Systeme eine Erweiterung zu klassischen Suchmaschinen sind, sind die Einsatzbereiche überschneidend. Anwendungen für RAG-Systeme finden in der Kundenbetreuung[13][14][15], der Analyse medizinischer Informationen[16][17], juristischen Recherchen[18], der Bildung[19][20], wissenschaftlichen Forschung, Finanzanalyse[21][22], der Auswertung von Logdaten[23][24], sowie allen anderen Anwendungen, bei denen das Auffinden von Informationen relevant ist.
RAG-Systeme weisen aufgrund einer Vielzahl an beteiligten Softwaresystemen und Akteuren eine hohe Komplexität in der Implementierung auf.
Zudem muss die Indexierung, die Gewichtung und die Filterung der Daten kontinuierlich an sich ständig ändernde Gegebenheiten angepasst und erweitert werden. Der Betrieb eines RAG-Systems ist somit nicht nur mit einem hohen Aufwand in der Implementierung, sondern auch mit einem kontinuierlichen Aufwand im Betrieb verbunden.
Für die Implementierung von RAG-Systemen gibt es Softwarepakete, welche Anwendungsspezifisch angepasst werden müssen. Hierbei unterscheidet man zwischen komplexen Software-Frameworks, welche eine umfangreiche Orchestrierung von KI-Agenten und Programmierschnittstellen ermöglichen, sowie Softwarepaketen, welche eine Low-Code Umgebung bereitstellen.
Softwarepaket | Lizenz | Beschreibung |
---|---|---|
Microsoft Copilot Studio | Proprietär | Low-Code Web-Plattform in Microsoft 356 |
Azure AI Studio | Proprietär | Low-Code Web-Plattform in Microsoft Azure. Auch komplexe Orchestrierung möglich. |
PromptFlow | Open-Source | Technologie hinter Copilot Studio und Azure AI Studio. Ermöglicht eine komplexe Orchestrierung. Integration mit LangChain oder Semantic Kernel möglich. |
Vertex AI Agent Builder | Proprietär | Low-Code Web-Plattform der Google Cloud |
watsonx | Proprietär | Low-Code Orchestrierungs-Plattform von IBM |
Firecrawl | Open-Source | API-Service zur Webseitenindexierung |
LangChain und LangGraph | Open-Source | Framework für Orchestrierung von KI-Systemen |
Kernel Memory | Open-Source | Framework zur Erstellung von RAG-Systemen |
Semantic Kernel | Open-Source | Framework für Orchestrierung von KI-Systemen |
Haystack | Open-Source | Framework zur Erstellung von RAG-Systemen |
REALM | Open-Source | Google-Research-Projekt mit einer RAG-System Beispielimplementierung |
Zusätzlich gibt es auch fertige Softwarepakete wie Pieces for Developers, welche für das persönliche Datenmanagement eingesetzt werden können.
Retrieval Augmented Generation wird zudem in einigen Suchmaschinen wie Perplexity.ai, Google Gemini, Microsoft Bing, sowie SearchGPT eingesetzt.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.