BlogRAG
Herausfinden, ob Retrieval oder Generierung eine falsche Antwort verursacht hat
Markieren Sie die Textstellen, die jede Testfrage beantworten sollten, protokollieren Sie, was das System tatsächlich abgerufen hat und was im Prompt ankam, und suchen Sie den ersten Schritt, an dem der erwartete Beleg verloren ging. Kam der Beleg beim Modell an und die Antwort ist trotzdem falsch, liegt das Problem in der Generierung. Kam er nie an, hilft eine Änderung am Antwort-Prompt nicht; die Arbeit liegt dann bei Ingestion, Anfrage oder Such- und Reranking-Einstellungen.
Zwei Fragen hinter jeder falschen Antwort
Für die Nutzer sieht eine falsche Antwort immer gleich aus, egal woher sie kommt. Für das Team sind es zwei getrennte Fragen: Hat der Beleg, den die Antwort braucht, das Modell erreicht? Und hat das Modell diesen Beleg richtig verwendet? Teams, die nur fertige Antworten bewerten, optimieren am Ende Prompts für Fehler, die im Index entstanden sind.
Evaluierungswerkzeuge bilden diese Trennung ab. LlamaIndex etwa unterscheidet die Retrieval-Evaluierung, bewertet mit Ranking-Metriken wie Hit Rate und Mean Reciprocal Rank, von der Antwort-Evaluierung, die Faithfulness, Relevanz und Korrektheit der generierten Antwort beurteilt.
Erwartete Belege markieren
Erfassen Sie für jede Testfrage die Kennungen der Textstellen, die sie beantworten, und die erwartete Antwort. Halten Sie fest, ob diese Textstellen Alternativen sind, von denen jede allein die Frage beantwortet, oder ob alle gemeinsam nötig sind. Mit diesen IDs wird die Bewertung des Retrievals günstig und deterministisch. Ragas bietet etwa einen ID-basierten Context Recall, der abgerufene IDs mit Referenz-IDs vergleicht, ohne ein Sprachmodell aufzurufen. Da er durch alle Referenz-IDs teilt, nutzen Sie ihn für gemeinsam erforderliche Belege und werten einen Treffer, sobald eine von mehreren Alternativen abgerufen wurde.
Protokollieren Sie dann für jeden Testlauf einen Trace. Die folgenden Felder sind das Minimum, das sich für uns bewährt hat; die Namen sind beispielhaft und an kein Framework gebunden.
# One trace record per test question (field names are illustrative)
question_id: q-017
question: "Which firmware versions need a manual reset?"
expected_evidence: all_of [release-notes-4.2#known-issues, runbook-reset#scope]
# use any_of [...] when either passage alone answers
in_index: [true, true] # did ingestion produce these chunks?
candidate_rank: [3, 41] # rank in first-stage search results
in_prompt: [true, false] # survived reranking and the top-k cut?
answer_verdict: incomplete # judged against the expected answer
first_failure: retrieval (rank 41 > prompt cut at 10)Den ersten Fehler finden
- 1
Ist die Textstelle im Index?
Wenn nicht, liegt die Ursache in der Ingestion: ein Parser, der eine gescannte Seite übersprungen hat, ein Konnektor, der einen Ordner verpasst hat, oder ein Dokument, das nie im Umfang war. Beheben Sie Pipeline oder Quelle.
- 2
Ist sie unter den Kandidaten der ersten Stufe?
Steht sie weit hinten oder gar nicht in der Liste, prüfen Sie die Anfrage, einschließlich eines eventuellen Umschreibeschritts, und das Suchverfahren. Exakte Kennungen brauchen oft lexikalische Suche neben der semantischen Suche, und Chunks ohne Kontext passen womöglich nicht zur Frage.
- 3
Ist sie im Prompt angekommen?
Eine Textstelle kann abgerufen und trotzdem durch Reranking oder den Schnitt auf die obersten Chunks verworfen werden. Vergleichen Sie den Kandidatenrang mit der Grenze.
- 4
Hat das Modell sie richtig genutzt?
Erst jetzt liegt das Problem in der Generierung. Prüfen Sie, ob die Antwort den Textstellen treu, vollständig und korrekt ist und ob widersprüchliche Textstellen das Modell verwirrt haben.
Eine nützliche Abkürzung für den letzten Schritt ist ein Orakeltest. Geben Sie dem Modell die markierten Textstellen direkt und umgehen Sie die Suche. Antwortet es nun richtig, liegt der Fehler weiter vorne. Scheitert es weiterhin, arbeiten Sie an Prompt, Modell oder am Quelltext selbst.
Eine hypothetische Diagnose
Angenommen, ein Testset hat 60 Fragen mit markierten Textstellen, und 18 erhalten falsche oder unvollständige Antworten. Die Zahlen sind erfunden und zeigen, wie eine Aufschlüsselung die Arbeit lenkt. Vier erwartete Textstellen fehlen im Index, weil eine Reihe gescannter PDFs keine Textebene hatte. Sieben werden gefunden, aber auf den Rängen 20 bis 50, während nur die obersten 10 in den Prompt gelangen. Zwei fallen beim Reranking heraus. Fünf erreichen das Modell, und die Antworten sind trotzdem falsch; in drei Fällen wurden zwei Fassungen einer Richtlinie zusammen abgerufen, was ebenso ein Quellen- wie ein Modellproblem ist.
Dreizehn der 18 Fehler entstehen, bevor die Antwort generiert wird, Änderungen am Antwort-Prompt könnten also höchstens fünf beheben. Umschreiben von Anfragen und Änderungen am Reranker zählen hier zur Retrieval-Arbeit. Daraus folgt die Reihenfolge: OCR für die gescannten Dateien, dann Änderungen an der Suche für die sieben und die zwei, dann Entfernen oder Kennzeichnen der überholten Richtlinie und zuletzt die übrigen Generierungsfehler.
Retrieval-Metriken richtig lesen
Recall bei einer festen Grenze ist die Metrik, die dieser Diagnose am direktesten entspricht, denn sie fragt, ob die erwartete Textstelle unter den Chunks war, die das Modell sehen konnte. Anthropic nutzte in seinen Experimenten zu Contextual Retrieval von 2024 eins minus Recall bei 20 als Fehlerrate. Wählen Sie die Grenze, die Ihr System tatsächlich verwendet; Recall bei 50 sieht gut aus und sagt wenig, wenn nur 10 Chunks im Prompt landen.
Einige Fälle erschweren die Diagnose. Hat eine Frage alternative gültige Textstellen, sollte jede einzelne als Erfolg zählen, und ein gewöhnlicher Recall über alle unterschätzt das Ergebnis. Fragen, die viele Dokumente zugleich brauchen, etwa Zählungen über ein Jahr an Berichten, bedient Top-k-Retrieval schlecht, und sie brauchen womöglich ein anderes Design. Außerdem veralten Markierungen, wenn sich Dokumente ändern, und modellbasierte Prüfer schwanken zwischen Läufen, weshalb Microsoft Zielbereiche statt einzelner Zielwerte empfiehlt.
Fragen
Brauchen wir dafür von Hand markierte Daten?
Für die Retrieval-Hälfte ja: Jemand muss festlegen, welche Textstelle jede Frage beantwortet. Frameworks können für den Anfang Frage-Textstellen-Paare aus Ihren Dokumenten erzeugen, aber eine Fachperson sollte sie prüfen, denn generierte Fragen übernehmen oft den Wortlaut der Textstelle und lassen das Retrieval leichter wirken, als es ist.
Welche Metrik sollten wir zuerst verfolgen?
Recall bei der Anzahl Chunks, die Ihr Prompt tatsächlich erhält, aufgeschlüsselt nach Fragetyp. Er zeigt, ob der Beleg verfügbar war, und das ist die Voraussetzung für alles, was das Modell danach tut.
Verwandte Leistungen
Mehr aus dem Blog
Zitatqualität in RAG
Wie Sie prüfen, ob die Textstellen, die ein Assistent zitiert, jede seiner Aussagen tatsächlich stützen: Prüfung pro Aussage, Rechenbeispiel und Abnahmekriterien.
Chunking von Geschäftsdokumenten
Wie Sie Verträge, Richtlinien und lange Verfahren so aufteilen, dass eine Antwort bei ihren Ausnahmen und Definitionen bleibt, und wie Sie die Strategie per Experiment wählen.
Quellen für RAG vorbereiten
Wie Sie entscheiden, welche Dokumente ein Retrieval-Assistent nutzen soll, wem jede Quelle gehört und wie Sie fehlende Antworten vor der Indexierung finden.
Mit einem Engineer sprechen
Bringen Sie eine Aufgabe mit, die Sie verbessern möchten. Das Gespräch dauert 30 Minuten und braucht keinen Zugriff auf Ihre Systeme oder Ihre Daten.
Die Buchung läuft über Google Kalender.
Lieber zuerst schreiben? Hinterlassen Sie Ihre E-Mail-Adresse und ein paar Zeilen, dann antworten wir mit Terminvorschlägen.
Sehen Sie in Ihrem E-Mail-Programm nach dem Entwurf
Senden Sie ihn von dort ab, und ein Engineer antwortet Ihnen persönlich mit Terminvorschlägen für ein 30-minütiges Gespräch. Hat sich kein Entwurf geöffnet, schreiben Sie uns an miki@cloudsail.com.