Hybrides RAG für belegte Antworten über Forschungsarbeiten
Antworten zu Papern der Sprachverarbeitung, die die Textstelle zitieren, aus der sie stammen, dazu ein Audit, wie gut ich das gemessen habe.
- Zeitraum
- Februar bis Oktober 2026
- Status
- Forschungsprototyp, offline evaluiert
- Passende Rollen
- AI Research Scientist · Applied Scientist · ML Engineer
Kurzfassung
- Ausgangslage. Wer eine Frage zu einem Paper der Sprachverarbeitung stellt, braucht eine Antwort, die genau die Textstelle zitiert, auf der sie beruht. Ich habe eine Retrieval-Pipeline auf dem QASPER-Benchmark (Dasigi u. a., 2021) gebaut und dazu Evaluationscode geschrieben, der am Ende umfangreicher ist als die Pipeline, die er prüft.
- Vorgehen. Ich habe Stichwortsuche und semantische Suche zusammengeführt und die Textstellen mit ColBERT v2 gerankt. Llama-3.1-8B schreibt danach kurze Antworten mit einem Zitat in jedem Satz. Weil 40 % meiner Testfragen eine Tabelle oder Abbildung brauchten, habe ich die Tabelleninhalte aus dem LaTeX-Quelltext jedes Papers auf arXiv extrahiert.
- Ergebnis. Auf 150 Fragen, geprüft gegen von Menschen markierte Belege und ohne KI-Bewertung, stieg der Evidence-Recall von 0,485 auf 0,829. Der Anteil der Tabellen- und Abbildungsbelege, die das Modell erreichen, stieg von 0,000 auf 0,700.
Die Aufgabenstellung
Ein Sprachmodell kann eine Frage zu einem Paper flüssig beantworten und trotzdem die falsche Textstelle zitieren. In meinen ersten Evaluationsläufen stützten sich 32 von 150 Antworten auf Textstellen aus einem anderen Paper. Forschende vertrauen nur einer Antwort, die sie an ihrer Quelle prüfen können.
Technische Formulierung. Ich habe die Aufgabe als Frage-Antwort-Aufgabe über ein bekanntes Paper gefasst. Zu einer Frage und der QASPER-ID ihres Papers holt das System Textstellen aus diesem Paper und schreibt eine Antwort aus 1 oder 2 Sätzen, mit einem Zitat [Doc N] in jedem Satz.
Im Umfang. Die 888 Paper aus dem Trainingssplit von QASPER, Fragen mit frei formulierten Referenzantworten, Retrieval, Generierung und der Evaluationscode selbst.
Nicht im Umfang. Das richtige Paper unter allen 888 finden, der Vergleich mit der QASPER-Bestenliste (die offizielle Answer-F1 berechne ich noch nicht) und der Betrieb. Die Chat-Oberfläche liegt in einem eigenen Repository.
Erfolgskriterien.
- Retrieval: Die maßgeblichen Belege erreichen den Generator, gemessen als Evidence-Recall (Anteil der annotierten Belegstellen, die das Modell erreichen) gegen die QASPER-Annotationen.
- Zitate: Jeder Antwortsatz wird von dem gestützt, was er zitiert, gemessen mit ALCE-Zitationsgenauigkeit und ALCE-Zitations-Recall.
- Gültigkeit der Bewertung: Die automatischen Richter stimmen mit einer unabhängigen Prüfung überein, gemessen mit Cohens Kappa.
- Abdeckung: Jeder Mittelwert steht neben der Zahl der tatsächlich beantworteten Fragen.
Die Datenaufbereitung
Quelle. QASPER (allenai/qasper auf Hugging Face) umfasst 5 049 Fragen zu 1 585 Papern der Sprachverarbeitung. Ich habe die 888 Paper des Trainingssplits indexiert.
Erster Befund. Von meinen 150 Testfragen hatten 60 eine Tabelle oder Abbildung als maßgeblichen Beleg, und mein Index enthielt keins von beidem. Bei Fragen, die sich nur aus einer Tabelle oder Abbildung beantworten lassen, lag der Context-Recall bei 0,094, gegenüber 0,494 bei Textfragen.
Was ich geändert habe.
- Ein eigener QasperChunker erzeugt das Abstract, Absätze in Chunks zu 500 Tokens mit 10 % Überlappung und einen Chunk je Tabellen- oder Abbildungsbeschriftung.
- Die Tabelleninhalte habe ich aus dem LaTeX-Quelltext jedes Papers auf arXiv geholt, gedrosselt auf 1 Anfrage alle 3 Sekunden. Für 809 von 888 Papern lag der Quelltext vor, und 3 259 von 3 631 Tabellenbeschriftungen ließen sich einem Inhalt zuordnen, abgelegt als Markdown.
- Jeder Chunk beginnt mit „Title: <Titel des Papers>. Section: <Abschnittsüberschrift>.“, damit Stichwortbewertung und dichte Bewertung sehen, aus welchem Paper und Abschnitt er stammt.
- Dichte Vektoren (SPECTER2, 768 Dimensionen) liegen in einem flachen FAISS-Index mit Skalarprodukt. Ein BM25-Index nutzt NLTK-Tokens ohne Stoppwörter, mit Porter-Stemming.
Ein früherer Build nur mit Text umfasste etwa 47 800 Chunks. Die Größe des aktuellen Index mit Tabellen habe ich nicht protokolliert.
Die Architektur
Ausgangspunkt. Meine erste Pipeline gab die 10 besten ColBERT-Textstellen in Score-Reihenfolge an das Modell. Ein CRAG-Schritt löschte Textstellen unter einer Schwelle, und der Index enthielt nur Text. Evidence-Recall: 0,485.
Der vierstufige Entwurf.
- Hybrides Retrieval: dichte Suche mit SPECTER2 und BM25, zusammengeführt per Reciprocal Rank Fusion (k=60), bis zu 100 Kandidaten innerhalb des Papers.
- Ranking: ColBERT v2 bewertet jeden Kandidaten per Late Interaction (MaxSim über Token-Embeddings).
- CRAG-Prüfung (Yan u. a., 2024): Jede Textstelle erhält das Label Correct, Ambiguous oder Incorrect.
- Generierung: Die besten 20 Textstellen gehen an Llama-3.1-8B-Instruct auf vLLM, in ihrer Reihenfolge im Paper und mit einem Budget von 6 000 Tokens. Der Prompt verlangt eine kurze Begründung, danach eine zitierte Endantwort.
Was die Antwort in der Praxis bestimmt. Die meisten Paper haben höchstens 100 Chunks, daher liefert Stufe 1 für 94 % von ihnen das ganze Paper. Die Antwort hängt dann vom ColBERT-Ranking und von der Reihenfolge im Paper ab. Die HyDE-Query-Erweiterung läuft nur, wenn sie die Kandidaten verändern kann. Den vollständigen Entwurf behalte ich für Ablationen und für den Einsatz in offener Domäne, wo Stufe 1 über mehrere Paper hinweg suchen muss.
Meine Abwägung bei CRAG. Bei den 39 von 150 Fragen, bei denen das Löschen griff, erreichte der maßgebliche Textbeleg das Modell in 42 % der Fälle, sonst in 85 %. Schwierigere Fragen erklären einen Teil dieser Lücke. CRAG setzt außerdem eine externe Quelle voraus, die ersetzt, was es entfernt, und diese Pipeline hat keine. Deshalb vergibt CRAG jetzt nur noch Labels und löscht nichts.
Getestet und verworfen. RRF als finales Ranking senkte den Text-Recall auf dem neuen Index und bleibt deshalb optional. Die CRAG-Verfeinerung auf Satzstücken lag beim Evidence-Recall 0,4 bis 1,1 Punkte unter dem reinen Label-Modus.
Alle Modelle in diesem Projekt sind vortrainiert. Ich habe keines davon trainiert.
Evaluation und Ergebnisse
| Konfiguration | Evidence-Recall | Treffer Textbeleg | Treffer Tabelle/Abbildung |
|---|---|---|---|
| Basis: alte Auswahl, Index nur mit Text | 0,485 | 0,766 | 0,000 |
| Neue Kontextauswahl, Index nur mit Text | 0,646 | 0,944 | 0,000 |
| Neue Auswahl, Index mit Tabellen (Standard) | 0,829 | 0,944 | 0,700 |
Der erste Sprung kam von der Kontextauswahl, den zweiten brachten die Tabellen. Der Basiswert null bei Tabellen und Abbildungen ergibt sich aus dem Aufbau: Dieser Index enthielt keine Tabellen. Eine Tabelle gilt als gefunden, wenn ihre Beschriftung das Modell erreicht.
| Metrik | Mittelwert |
|---|---|
| ALCE-Zitationsgenauigkeit | 0,654 |
| ALCE-Zitations-Recall | 0,674 |
| Antwortkorrektheit (Prometheus-2-Rubrik) | 0,467, etwa 0,40, wenn unbeantwortete Fragen als falsch zählen |
Ein vollständiger Lauf auf der aktuellen Pipeline steht noch aus. Der letzte Versuch brach am 04.10.2026 mit einem Speicherfehler ab, die Ursache habe ich behoben.
Messkorrekturen, getrennt von Modellgewinnen. Vier Fehler in meinem Bewertungscode haben Metriken verschoben, während das System gleich blieb:
- Ein Schnitt bei 500 Zeichen pro Textstelle verdeckte den Beleg in 64 % der Chunks, und der Context-Recall zeigte 0,0616.
- Ein Richter-Prompt setzte die Aussage dorthin, wo die bewertete Antwort hingehört, und ALCE fiel auf etwa 0,012.
- Genauigkeit und Recall teilten sich einen Nenner und stimmten deshalb auf allen 128 bewerteten Zeilen überein.
- Der Context-Recall las 6 der 10 Textstellen, die das Modell erhielt.
Jede dieser Korrekturen weise ich als Korrektur am Messinstrument aus.
Wo die Pipeline noch scheitert. BM25 verwirft Zahlen-Tokens, auf einem Benchmark voller Zahlen. Bei 20 Textstellen zitierte das Modell 4 bis 5 pro Satz. Eine Prompt-Änderung senkte den Median in einer Prüfung mit 12 Fragen auf 2 pro Antwort.
Wirkung. Das Modell kann nur zitieren, was bei ihm ankommt, deshalb begrenzt der Evidence-Recall die Antwortqualität. Status: Forschungsprototyp, offline evaluiert.
Links
- Forschungs-Repository mit Pipeline und Evaluationscode
- QASPER-Paper (Dasigi u. a., 2021)
- Projekt RAG-Chatboard: Betriebscode und Chat-Oberfläche.