Skip to content

Einführung in RAG mit Python

Große Sprachmodelle können Texte zusammenfassen, Fragen beantworten, Programmcode erzeugen und komplexe Zusammenhänge erklären. Doch sobald sie mit aktuellen Unternehmensdaten, internen Dokumentationen oder produktspezifischem Wissen arbeiten sollen, stoßen sie an eine grundlegende Grenze: Sie kennen diese Informationen nicht automatisch.

Ein Sprachmodell kann beispielsweise erklären, wie Webhooks grundsätzlich funktionieren. Es weiß aber nicht zuverlässig, welche Retry-Regeln eine bestimmte Unternehmenssoftware verwendet, welche API-Version aktuell ist oder welche Informationen in einem internen Betriebshandbuch stehen. Selbst wenn ähnliche Informationen während des Trainings enthalten waren, können sie inzwischen veraltet sein.

Retrieval-Augmented Generation (RAG) setzt genau hier an.

Statt ausschließlich auf das Wissen eines Sprachmodells zu vertrauen, suchen wir zunächst nach relevanten Informationen in einer externen Wissensbasis. Diese Informationen stellen wir dem Modell als zusätzlichen Kontext zur Verfügung. Das Modell kann seine Antwort dadurch auf konkrete Dokumente stützen.

Das Grundprinzip ist einfach. Die technische Umsetzung ist anspruchsvoller.

Denn ein RAG-System ist weit mehr als eine Vektordatenbank mit angeschlossenem Sprachmodell. Es muss Dokumente zuverlässig verarbeiten, geeignete Textabschnitte bilden, semantisch relevante Informationen finden und entscheiden, welche davon tatsächlich zur Beantwortung einer Frage geeignet sind.

Außerdem müssen wir sicherstellen, dass die gefundenen Informationen korrekt verwendet werden. Eine Antwort kann überzeugend formuliert sein und trotzdem auf veralteten Dokumenten, unvollständigem Kontext oder einer falschen Interpretation beruhen.

Begleitendes GitHub-Repository

Dieses Buch wird durch ein frei verfügbares GitHub-Repository mit Python-Beispielen und praktischen Übungen ergänzt.

Die Beispiele ermöglichen es, zentrale RAG-Konzepte selbst auszuprobieren und die einzelnen Verarbeitungsschritte nachzuvollziehen. Von ersten Embeddings und Ähnlichkeitssuchen bis zum Aufbau einer eigenen RAG-Pipeline.

Python-Code und Übungen auf GitHub herunterladen

Das Repository kann direkt geklont werden:

git clone https://github.com/realcaptainsolaris/rag-training-lab.git

Alternativ lässt sich der vollständige Quellcode auf GitHub über Code → Download ZIP herunterladen.

Die Übungen begleiten die theoretischen Erklärungen und bieten die Möglichkeit, Parameter zu verändern, verschiedene Ansätze zu vergleichen und das Verhalten eines RAG-Systems selbst zu untersuchen.

Was Sie in diesem Buch lernen

Dieses Buch vermittelt die technischen Grundlagen und die praktische Umsetzung von RAG-Systemen mit Python.

Wir beginnen bei den grundlegenden Konzepten und entwickeln daraus schrittweise die Komponenten einer vollständigen RAG-Anwendung.

Kapitel 1: Wie RAG funktioniert

Wir betrachten die Architektur eines RAG-Systems, die Zusammenarbeit zwischen Retrieval und Sprachmodell sowie die grundlegenden Mechanismen der Antwortgenerierung. Erste Python-Beispiele zeigen, wie aus einer Benutzerfrage eine dokumentengestützte Antwort entsteht.

Kapitel 2: Dokumente einlesen und sinnvoll chunken

Bevor wir Informationen durchsuchen können, müssen wir sie aus unterschiedlichen Dateiformaten extrahieren und in geeignete Textabschnitte zerlegen. Wir untersuchen verschiedene Chunking-Strategien und ihre Auswirkungen auf die spätere Suche.

Kapitel 3: Embeddings und Vektordatenbanken

Wir beschäftigen uns mit der numerischen Repräsentation von Texten, semantischer Ähnlichkeit und der Speicherung von Embeddings. Dabei lernen wir, wie Vektordatenbanken funktionieren und wie wir sie mit Python einsetzen.

Kapitel 4: Retrieval: Wie RAG die richtigen Informationen findet

Wir vergleichen unterschiedliche Suchverfahren, darunter semantische Suche, klassische Stichwortsuche und hybride Ansätze. Außerdem untersuchen wir Metadatenfilter, Ranking-Verfahren und die Auswahl geeigneter Dokumentabschnitte.

Kapitel 5: Context Engineering und Grounding

Gefundene Informationen sind noch keine gute Antwort. Wir betrachten, wie Retrieval-Ergebnisse aufbereitet, priorisiert und in den Kontext eines Sprachmodells eingebunden werden. Dabei spielt Grounding eine zentrale Rolle: Antworten sollen sich auf die bereitgestellten Quellen stützen.

Kapitel 6: Evaluation und Debugging

Wie erkennen wir, ob ein RAG-System zuverlässig funktioniert? Wir untersuchen typische Fehlerquellen und lernen Verfahren kennen, mit denen sich Retrieval-Qualität, Antwortkorrektheit und Quellenbindung systematisch bewerten lassen.

Kapitel 7: Sicherheit und Betrieb

RAG-Anwendungen verarbeiten häufig sensible Informationen. Wir beschäftigen uns mit Zugriffskontrollen, Prompt Injection, Datenschutz und weiteren Sicherheitsaspekten sowie den Anforderungen an einen zuverlässigen Betrieb.

Kapitel 8: Architektur und Deployment

Aus einzelnen Python-Skripten wird eine Anwendung. Wir betrachten die Architektur produktionsnaher RAG-Systeme, die Trennung ihrer Komponenten und wichtige Aspekte der Bereitstellung und Wartung.

Kapitel 9: Advanced RAG

Zum Abschluss untersuchen wir weiterführende Retrieval-Strategien. Dazu gehören Query Rewriting, Multi-Query Retrieval, Query Decomposition, iterative Suche, Graph-Based Retrieval und agentische RAG-Architekturen. Wir betrachten, wann diese Verfahren sinnvoll sind und welche zusätzliche Komplexität sie verursachen.

Anhang A: Der Teralune-Corpus

Für unsere Experimente verwenden wir eine eigens entwickelte, synthetische Unternehmensdokumentation. Der Anhang beschreibt ihren Aufbau, die enthaltenen Produktversionen, bewusst eingebauten Widersprüche und die bereitgestellten Evaluationsdaten.

Lernen durch praktische Experimente

Der Schwerpunkt dieses Buchs liegt auf der praktischen Arbeit mit Python.

Wir entwickeln die zentralen Komponenten zunächst selbst, anstatt ihre Funktionsweise hinter umfangreichen Frameworks zu verbergen.

So wird nachvollziehbar, wie Dokumente verarbeitet, Embeddings erzeugt, Suchergebnisse ausgewählt und Antworten generiert werden.

Die Beispiele bauen aufeinander auf, lassen sich aber auch einzeln untersuchen und verändern.

Als gemeinsame Wissensbasis verwenden wir den Teralune-Corpus. Er enthält technische Dokumentationen eines fiktiven Cloud-Anbieters, einschließlich unterschiedlicher Produktversionen, historischer Informationen und absichtlich widersprüchlicher Aussagen.

Dadurch können wir Retrieval-Verfahren unter vergleichbaren Bedingungen testen und typische Fehler systematisch reproduzieren.

Nicht jedes Experiment wird auf Anhieb die richtige Antwort liefern. Das ist beabsichtigt. Gerade die Untersuchung fehlerhafter Retrieval-Ergebnisse zeigt, welche Auswirkungen Chunking, Embeddings, Ranking und Kontextaufbereitung auf die Qualität eines RAG-Systems haben.

Für wen dieses Buch gedacht ist

Das Buch richtet sich an Python-Entwickler, Softwarearchitekten und technisch interessierte Leser, die verstehen möchten, wie RAG-Systeme funktionieren und wie sie sich selbst implementieren lassen.

Grundkenntnisse in Python werden vorausgesetzt. Erfahrung mit Vektordatenbanken, Embeddings oder Large Language Models ist dagegen nicht erforderlich.

Wir beginnen mit den Grundlagen und arbeiten uns schrittweise zu fortgeschrittenen Verfahren vor.

Dabei geht es nicht darum, möglichst viele Frameworks kennenzulernen oder jede verfügbare Retrieval-Technik einzusetzen.

Das Ziel ist, die technischen Entscheidungen hinter einem RAG-System zu verstehen.

Warum funktioniert eine bestimmte Suche besser als eine andere? Wann hilft ein größeres Kontextfenster? Wann benötigen wir Reranking? Und wann erhöht eine zusätzliche Komponente lediglich die Komplexität, ohne die Antwortqualität messbar zu verbessern?

Wer diese Fragen beantworten kann, ist in der Lage, RAG-Systeme nicht nur zu implementieren, sondern auch gezielt zu verbessern.

Vom ersten Retrieval zum eigenen RAG-System

Am Ende dieses Buchs sollen Sie nicht nur wissen, was Retrieval-Augmented Generation bedeutet.

Sie sollen verstehen, wie die einzelnen Komponenten zusammenarbeiten, welche Fehler auftreten können und wie sich ihre Ursachen untersuchen lassen.

Vor allem sollen Sie in der Lage sein, eine eigene dokumentengestützte Anwendung mit Python zu entwickeln, ihre Ergebnisse kritisch zu bewerten und fundierte Entscheidungen über die weitere Architektur zu treffen.

Denn ein gutes RAG-System zeichnet sich nicht dadurch aus, dass es möglichst viele Technologien kombiniert.