RAG-Qualität: warum das Retrieval läuft — und die Antworten trotzdem daneben liegen
Einführung · 8 Abschnitte · ~9 Min Lesezeit · Stand
Erst diagnostizieren: Retrieval- oder Generierungs-Problem?
Die Pipeline steht, das System antwortet — aber die Qualität schwankt. Der teuerste Fehler an dieser Stelle ist, blind zu tunen. Bevor du irgendeinen Hebel ziehst, trenne die beiden Fehlerklassen: Sitzt das Problem im Retrieval (die richtigen Chunks kommen gar nicht erst an) oder in der Generierung (die richtigen Chunks sind da, aber das Modell nutzt sie schlecht)?
Präzision vs. Recall — die zwei Achsen des Retrievals
Retrieval-Qualität hat zwei Achsen, und sie brauchen gegensätzliche Eingriffe. Recall: Ist der relevante Chunk überhaupt unter den Kandidaten? Präzision: Stehen die relevanten Chunks weit oben und ist der Rest gefiltert?
| Der richtige Chunk fehlt ganz | Recall-Problem → mehr/andere Kandidaten holen |
|---|---|
| Der richtige Chunk ist dabei, aber verrauscht/weit unten | Präzisions-Problem → besser ranken/filtern |
Bessere Anfragen: Query-Rewriting & Expansion
Retrieval ist nur so gut wie die Anfrage, die es bekommt. Kurze, mehrdeutige oder kontextabhängige Nutzer-Eingaben („geht nicht mehr“) sind der Normalfall — nicht die Ausnahme.
Query-Rewriting formuliert die Rohanfrage mit Chatverlauf/Kontext zu einer eigenständigen, präziseren Suchanfrage um — das adressiert Mehrdeutigkeit. Query-Expansion (mehrere Varianten der Frage, oder ein hypothetisches Antwort-Dokument à la HyDE) wirft ein breiteres Netz und hebt den Recall, wenn Nutzer- und Dokument-Vokabular auseinanderliegen.
Fusion justieren: die RRF-Gewichtung
Hybrid-Retrieval (BM25 + dense) fusioniert zwei Ranglisten, üblicherweise per Reciprocal Rank Fusion (RRF). RRF mit gleicher Gewichtung ist ein robuster Default — aber kein Naturgesetz.
Reranking: der stärkste Präzisions-Hebel
Der erste Retrieval-Schritt (BM25/dense) ist auf Durchsatz optimiert und rankt grob. Ein Reranker (Cross-Encoder) bewertet jedes Query–Chunk-Paar direkt und sortiert die Kandidaten neu — deutlich präziser, aber pro Paar teuer.
Zweiter Hebel am selben Ort: der Cutoff danach. Nach dem Reranking nur die besten n Chunks ans LLM geben — nicht alle Kandidaten. Mehr Chunks heißt nicht bessere Antwort, sondern mehr Rauschen und höhere Kosten.
Den Kontext kuratieren: Diversität & Reihenfolge
Selbst nach dem Reranking ist der Kontext nicht automatisch gut. Zwei häufige Restprobleme:
Redundanz: Die Top-Treffer sind oft Beinahe-Duplikate — dieselbe Passage aus fünf leicht verschiedenen Dokumenten. Sie belegen einen Kontext-Platz, den ein ergänzender Aspekt bräuchte. MMR (Maximal Marginal Relevance) balanciert Relevanz gegen Neuheit und entdoppelt so.
Reihenfolge: Modelle nutzen den Anfang und das Ende eines langen Kontexts zuverlässiger als die Mitte („lost in the middle“). Die relevantesten Chunks gehören daher an die Ränder, nicht in die Mitte.
Grounding & Abstention: die Generierung ehrlich halten
Selbst mit perfektem Kontext kann das Modell plausibel klingende, unbelegte Details ergänzen. Das ist in RAG selten ein Wissens-, meist ein Grounding-Problem: es fehlt der Zwang, jede Aussage an eine konkrete retrievte Quelle zu binden.
Die zweite Ehrlichkeits-Frage: Was passiert, wenn die Antwort nicht im Kontext steht? Ein System, das immer antwortet, halluziniert bei Recall-Lücken. Abstention — kontrolliertes „das steht nicht in meinen Quellen“ — ist ein Feature, kein Versagen.
Die Decke erkennen — und alles messen
Irgendwann greift Ranking-Tuning nicht mehr: Wenn der relevante Chunk gar nicht im Bestand oder nicht unter den Kandidaten ist, kann kein Reranker ihn nach oben sortieren. Dann ist es ein Recall-/Abdeckungs-Problem (Chunking, Query-Expansion, fehlende Dokumente) — nicht noch eine Runde Präzisions-Tuning.
Und all das entscheidet man nicht per Bauchgefühl. Jeder Hebel hier — Rewriting, Fusion, Reranking, Ordering, Grounding — wird vorher/nachher gemessen (Faithfulness, Context Precision/Recall). Ohne Eval-Set weißt du nicht, ob ein Eingriff die eine Fragenklasse verbessert und eine andere kaputt macht.