+170 XP

Retrieval-augmented generation (RAG): dem Modell Ihre Daten geben

# Retrieval-augmented generation (RAG): dem Modell Ihre Daten geben

Fragen Sie ChatGPT „Wie viele Urlaubstage stehen mir nach drei Jahren hier zu?“, und es hat keine Ahnung. Es hat Ihr Mitarbeiterhandbuch nie gelesen. Es könnte selbstbewusst eine Antwort erfinden, und das ist schlimmer, als nichts zu sagen.

RAG löst das. Es ist die Technik hinter fast jedem „Chat mit Ihren Dokumenten“-Produkt, das Sie kennen: Support-Bots, interne HR-Assistenten, Tools für juristische Recherche. Am Ende dieser Lektion verstehen Sie genau, wie es funktioniert, und Sie sehen den Kern davon in etwa 20 Zeilen Python.

Das Problem, das RAG löst

Ein large language model (LLM) wie GPT-5 oder Claude weiß, was in seinen Trainingsdaten stand. Es weiß nicht:

  • Die internen Richtlinien Ihres Unternehmens
  • Die Meeting-Notizen von letzter Woche
  • Ihre vertraulichen Kundendaten
  • Alles, was sich nach dem Trainings-Cutoff geändert hat

Sie könnten versuchen, Ihr komplettes 200-seitiges Handbuch in den Chat zu kopieren. Aber Modelle haben ein context window: eine Grenze dafür, wie viel Text sie auf einmal lesen können. Selbst mit den großen Fenstern von heute ist es langsam, teuer und macht das Modell weniger genau, wenn man alles hineinschüttet (es lässt sich von irrelevantem Text ablenken).

Der Kerngedanke von RAG: Geben Sie dem Modell nicht alles. Finden Sie die wenigen relevanten Absätze und geben Sie ihm nur diese.

Die drei Schritte von RAG

Stellen Sie sich RAG als clevere Bibliothekarin vor. Sie stellen eine Frage, die Bibliothekarin holt die drei relevantesten Seiten und übergibt sie dem Modell zusammen mit Ihrer Frage.

1. Retrieval: Durchsuchen Sie Ihre Dokumente nach den Chunks, die für die Frage am relevantesten sind.

2. Augmentation: Fügen Sie diese Chunks in den Prompt ein.

3. Generation: Das Modell antwortet auf Basis dieses eingefügten Textes.

Die Magie liegt in Schritt 1. Wie weiß ein Computer, welche Absätze „relevant“ sind? Hier kommen Embeddings ins Spiel.

Embeddings: Bedeutung in Zahlen verwandeln

Ein Embedding ist eine Liste von Zahlen, die die *Bedeutung* eines Textstücks abbildet. Ähnliche Bedeutungen bekommen ähnliche Zahlen.

„Wie viel bezahlten Urlaub habe ich?“ und „Wie lautet die Urlaubsregelung?“ haben fast keine Wörter gemeinsam. Aber ihre Embeddings liegen dicht beieinander, weil sie nahezu dasselbe bedeuten. Das ist der Punkt: Embeddings erlauben die Suche nach Bedeutung, nicht nach Keyword.

Embeddings erzeugen Sie über den Aufruf eines Embedding-Modells (OpenAI, Google und Cohere bieten sie alle günstig an). Sie erhalten für jeden Text-Chunk eine lange Zahlenliste zurück, oft 1.536 Werte.

Sie möchten eine visuelle Intuition dafür? Googles Embedding Projector lässt Sie in 3D durch echte Wort-Embeddings fliegen: projector.tensorflow.org.

Den Handbuch-Chatbot bauen

Bauen wir ihn erst konzeptionell, dann im Code.

Schritt 1: Das Handbuch in Chunks zerlegen

Sie können kein 200-seitiges Dokument als einen Block embedden. Sie teilen es in Chunks, meist ein paar Absätze pro Chunk (sagen wir 500 Wörter). Jeder Chunk wird eine durchsuchbare Einheit.

Aus unserem Handbuch werden so vielleicht 400 Chunks: einer zu Elternzeit, einer zu Spesenabrechnungen, einer zum Urlaubsanspruch und so weiter.

Schritt 2: Jeden Chunk embedden und speichern

Sie schicken jeden Chunk durch das Embedding-Modell und speichern die resultierenden Zahlen in einer Vektordatenbank (eine Datenbank, die für Ähnlichkeitssuche gebaut ist). Beliebte Optionen 2026 sind Chroma, Pinecone und pgvector. Für kleine Projekte brauchen Sie nicht einmal eine: eine einfache Liste im Speicher genügt.

Dieser Schritt passiert einmal, im Vorfeld. Man nennt ihn „Indexing“.

Schritt 3: Eine Frage beantworten

Wenn ein Nutzer etwas fragt:

1. Embedden Sie seine Frage.

2. Finden Sie die Chunks, deren Embeddings dem Frage-Embedding am nächsten liegen.

3. Fügen Sie diese Chunks in den Prompt ein.

4. Schicken Sie ihn an das Modell.

What is Retrieval-Augmented Generation (RAG)?

Watch on YouTube

Die Code-Skizze

Hier ist das komplette Muster als lauffähiges Python mit OpenAI. Keine Sorge, wenn Sie nicht programmieren; lesen Sie die Kommentare, dann folgen Sie der Logik.

python
from openai import OpenAI
import numpy as np

client = OpenAI()  # nutzt Ihren API-Key

# 1. Unser „Handbuch“, in Chunks aufgeteilt
chunks = [
    "Employees accrue 15 vacation days per year. After 3 years, this increases to 20 days.",
    "Expense reports must be submitted within 30 days using the Concur portal.",
    "Parental leave is 16 weeks of paid time off for all new parents.",
]

def embed(text):
    # Text in eine Zahlenliste verwandeln (sein Embedding)
    resp = client.embeddings.create(
        model="text-embedding-3-small", input=text
    )
    return np.array(resp.data[0].embedding)

# 2. Jeden Chunk einmal embedden (der „Index“)
chunk_vectors = [embed(c) for c in chunks]

# 3. Ein Nutzer stellt eine Frage
question = "How many vacation days do I get after three years?"
q_vector = embed(question)

# 4. Den ähnlichsten Chunk finden (Kosinus-Ähnlichkeit)
def similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

scores = [similarity(q_vector, cv) for cv in chunk_vectors]
best_chunk = chunks[int(np.argmax(scores))]

# 5. Den besten Chunk in den Prompt packen
prompt = f"""Answer using ONLY the context below.
If the answer isn't there, say you don't know.

Context: {best_chunk}

Question: {question}"""

answer = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": prompt}],
)
print(answer.choices[0].message.content)

Was passiert: Das Embedding der Frage liegt am nächsten beim *Urlaubs*-Chunk (nicht bei Spesen, nicht bei Elternzeit). Wir fügen nur diesen Chunk ein, und das Modell antwortet „20 Tage“ direkt aus Ihren Daten.

Achten Sie auf die Prompt-Anweisung: „Answer using ONLY the context below.“ Das hält das Modell ehrlich. Es hindert es daran, Antworten zu erfinden, und verankert es in Ihrem Text.

Wissenscheck

1. Was ist der Kerngedanke hinter dem Ansatz von RAG, Fragen mithilfe Ihrer Daten zu beantworten?

2. Warum ist es meist eine schlechte Lösung, ein 200-seitiges Handbuch einfach in das Chatfenster zu kopieren?

3. Warum kann eine Embedding-basierte Suche „Wie viel bezahlten Urlaub habe ich?“ mit „Wie lautet die Urlaubsregelung?“ abgleichen, obwohl sie fast keine Wörter gemeinsam haben?

MEHRFACHAUSWAHL

4. Wählen Sie ALLE der folgenden Punkte, die echte Einschränkungen eines Basis-LLM sind, die RAG adressieren soll.

Wählen Sie alle richtigen Antworten aus.

MEHRFACHAUSWAHL

5. Wählen Sie ALLE Aussagen, die die drei Schritte von RAG (Retrieval, Augmentation, Generation) korrekt beschreiben.

Wählen Sie alle richtigen Antworten aus.

Warum RAG die Alternativen schlägt

Oft kommt die Frage: Warum das Modell nicht einfach auf meinen Daten fine-tunen? (Fine-tuning heißt, das Modell neu zu trainieren, sodass Ihre Daten darin liegen.)

Bei Unternehmenswissen gewinnt meist RAG, weil:

  • Es sofort aktualisiert. Richtlinie geändert? Einen Chunk neu embedden. Bei Fine-tuning müssten Sie neu trainieren.
  • Es Quellen nennt. Sie wissen genau, welcher Chunk die Antwort geliefert hat, und können „aus Seite 14 des Handbuchs“ anzeigen.
  • Es günstiger und schneller einzurichten ist.
  • Es Halluzinationen reduziert. Das Modell antwortet aus dem Text, der vor ihm liegt, nicht aus verschwommener Erinnerung.

Fine-tuning ist besser, um *Stil oder Verhalten* des Modells zu verändern (immer in juristischer Sprache antworten, immer unsere Brand Voice nutzen). RAG ist besser, um *Fakten* zu liefern. Viele reale Systeme nutzen beides.

Wo RAG schiefgeht (und wie man es behebt)

RAG ist keine Magie. Die häufigsten Fehlerquellen:

Schlechtes Chunking. Wenn Sie einen Satz in der Mitte trennen, bricht das Retrieval. Lösung: nach Absatz oder Abschnitt chunken und Chunks leicht überlappen lassen, damit an den Rändern kein Kontext verloren geht.

Falsche Chunks abrufen. Ist die Frage vage, ziehen Sie womöglich irrelevanten Text. Lösung: die Top 3 bis 5 Chunks abrufen statt nur einen, damit das Modell mehr Material hat.

Die Antwort verteilt sich über viele Chunks. „Vergleiche unsere Reiserichtlinien 2024 und 2025“ braucht zwei Abschnitte. Lösung: mehr Chunks abrufen und das Modell synthetisieren lassen.

Veralteter Index. Sie haben das Handbuch aktualisiert, aber das Neu-Embedden vergessen. Der Bot gibt alte Antworten. Lösung: nach Zeitplan neu indexieren.

Sie müssen es nicht immer selbst bauen

2026 bekommen Sie RAG auch ohne den Code oben:

  • ChatGPT und Claude lassen Sie Dateien in ein Projekt hochladen und rufen daraus automatisch ab.
  • Custom GPTs und Claude Projects lassen Sie einen Handbuch-Bot bauen, indem Sie Dokumente hochladen, ganz ohne Code.
  • Googles NotebookLM ist RAG in freundlicher Verpackung: Quellen hochladen, Fragen stellen, Antworten mit Zitaten bis zur exakten Passage erhalten.

Nutzen Sie diese für kleine oder persönliche Zwecke. Bauen Sie die Pipeline selbst, wenn Sie Kontrolle, Skalierung, privates Hosting oder Integration in ein Produkt brauchen.

Key Takeaways

  • RAG = relevante Chunks abrufen, in den Prompt einfügen, das Modell antworten lassen. Es verankert das Modell in *Ihren* Daten statt im offenen Internet.
  • Embeddings sind der Motor. Sie verwandeln Text in Zahlen, damit Sie nach Bedeutung suchen können und „Urlaubsregelung“ zu „bezahlter Urlaub“ passt, auch ohne gemeinsame Wörter.
  • Weisen Sie das Modell immer an, nur aus dem bereitgestellten Kontext zu antworten. Diese einzige Zeile senkt Halluzinationen drastisch und macht Antworten auf eine Quelle zurückführbar.
  • Starten Sie no-code. Nutzen Sie NotebookLM, ein Custom GPT oder ein Claude Project, um Ihren Handbuch-Bot heute zu prototypen, und wechseln Sie zu einer echten Vektordatenbank (Chroma, pgvector), wenn Sie darüber hinauswachsen.
  • Die Chunking-Qualität entscheidet über die Retrieval-Qualität. Nach Abschnitt teilen, leichte Überlappung erlauben und neu indexieren, sobald sich Ihre Dokumente ändern.

Was Sie aus dieser Lektion umsetzen

Diese Maßnahmen sind im Playbook der Rolle zusammengefasst.

  • RAG überspringen und kleine Dokumentmengen direkt in den Prompt einfügen
Vollständiges Action Playbook ansehen

Verwandte Artikel

Aktuelle Blogartikel, die auf dieser Lektion aufbauen.