Skip to content
BotServBotServ
RAGRerankingCross-EncoderBi-EncoderRetrievalLokale KIQualität

Reranking: RAG-Ergebnisse verbessern

Was ist Reranking bei RAG? Wie Cross-Encoder und Reranker die Qualität von RAG-Antworten verbessern. Praxisguide mit Beispielen und lokalen Modellen.

S

schutzgeist

11 min read
Reranking für bessere RAG-Ergebnisse

Reranking: RAG-Ergebnisse verbessern

Was dieser Artikel über Reranking behandelt

  • Was Reranking ist und warum es die Qualität von RAG-Antworten deutlich verbessert
  • Wie Cross-Encoder und Bi-Encoder funktionieren und wo die Unterschiede liegen
  • Welche Reranking-Modelle sich für den lokalen Einsatz eignen
  • Wie Du Reranking mit sentence-transformers in Python umsetzt
  • Wann sich der zusätzliche Aufwand lohnt und welche Stolpersteine es gibt

Einleitung: Reranking verständlich erklärt

Du hast ein lokales RAG-System aufgebaut, eine Vektordatenbank mit Deinen Dokumenten gefüllt und stellst Deine erste Frage. Die Antwort ist okay, aber nicht richtig gut. Oft liegt das nicht am Sprachmodell, sondern an den Textabschnitten, die es als Grundlage bekommt. Genau hier kommt Reranking ins Spiel.

Reranking ist ein zweiter Filterschritt nach der eigentlichen Suche. Es nimmt die Ergebnisse der ersten Suche und sortiert sie neu, diesmal mit einem präziseren Modell. Das Ergebnis: Die wirklich relevanten Textstellen landen ganz oben und das Sprachmodell bekommt besseres Material für seine Antwort.

Warum brauche ich Reranking?

Stell Dir vor, Du fragst Dein RAG-System: “Wie stelle ich die automatische Sicherung in Anwendung X ein?” Die Vektorsuche liefert 10 Textabschnitte zurück. Der relevante Abschnitt mit der genauen Anleitung steht an Position 7, weil die semantische Ähnlichkeit der Vektoren dort nicht so hoch war. Die Abschnitte an Position 1 bis 6 handeln allgemeiner von “Sicherung” und “Backup”, aber nicht von der konkreten Funktion.

Standard-RAG nimmt nun die obersten 3 bis 5 Abschnitte und reicht sie an das Sprachmodell. Der wichtige Abschnitt an Position 7 fällt raus. Die Antwort wird vage oder falsch.

Mit Reranking passiert Folgendes: Ein zweites Modell bewertet alle 10 Abschnitte noch einmal, diesmal mit der Frage und dem Text gemeinsam. Der Abschnitt an Position 7 rückt auf Position 1. Das Sprachmodell bekommt genau die Information, die es braucht, und liefert eine präzise Antwort.

Reranking kurz erklärt

Reranking funktioniert wie ein zweistufiger Bewerbungsprozess. In der ersten Runde durchsucht ein schneller Recruiter hunderte Lebensläufe und wählt 20 Kandidaten aus. Diese Auswahl ist schnell, aber grob. In der zweiten Runde führt ein erfahrener Fachleiter persönliche Interviews mit den Top-10-Kandidaten. Das dauert länger, ist aber deutlich genauer.

Bei RAG übernimmt der Bi-Encoder die erste Runde: Er wandelt Frage und Dokumente in Vektoren um und vergleicht sie schnell. Der Cross-Encoder übernimmt die zweite Runde: Er liest Frage und Dokument gemeinsam und bewertet die Relevanz viel genauer. Am Ende steht eine sortierte Liste, bei der die besten Ergebnisse oben stehen.

Für wen ist Reranking gedacht?

Reranking lohnt sich für alle, die mit RAG arbeiten und die Antwortqualität verbessern wollen, ohne das Sprachmodell auszutauschen. Besonders relevant ist es in folgenden Fällen:

  • Du hast viele Dokumente und die Vektorsuche liefert oft gute, aber nicht die besten Treffer
  • Deine Fragen sind spezifisch und erfordern präzise Textabschnitte
  • Du nutzt ein kleines oder mittleres Sprachmodell, das mit schlechten Kontexten nicht gut umgehen kann
  • Du willst die Qualität Deines RAG-Systems systematisch testen

Für einfache Demos mit wenigen Dokumenten ist Reranking nicht zwingend nötig. Sobald aber echte Datenmengen ins Spiel kommen, macht es einen deutlichen Unterschied.

Wichtige Begriffe rund um Reranking

BegriffBedeutung
RerankingZweiter Sortierschritt, der die Ergebnisse der ersten Suche neu bewertet
Cross-EncoderModell, das Frage und Dokument gemeinsam verarbeitet und einen Relevance Score ausgibt
Bi-EncoderModell, das Frage und Dokument getrennt einbettet und Vektoren vergleicht
RetrievalDer Suchschritt, der passende Dokumente aus der Datenbank holt
Relevance ScoreZahlenwert, der angibt, wie relevant ein Dokument für eine Frage ist
Top-KAnzahl der Ergebnisse, die nach der Suche oder dem Reranking behalten werden
Re-RankSynonym für Reranking, das erneute Sortieren von Ergebnissen
CohereAnbieter eines bekannten gehosteten Reranking-Modells
Sentence-TransformersPython-Bibliothek, die Reranking-Modelle lokal ausführen kann
PrecisionMaß dafür, wie viele der gefundenen Ergebnisse tatsächlich relevant sind

Wie funktioniert Retrieval ohne Reranking?

Beim Standard-Retrieval legt Du zuerst alle Dokumente als Vektoren in einer Datenbank ab. Das übernimmt ein Embedding-Modell. Bei einer Frage wird daraus ebenfalls ein Vektor berechnet. Die Datenbank sucht dann die Vektoren, die dem Fragevektor am nächsten liegen, meist über Kosinus-Ähnlichkeit.

Dieser Ansatz ist schnell und skaliert gut auf Millionen von Dokumenten. Er hat aber eine Schwäche: Frage und Dokument werden getrennt verarbeitet. Das Embedding-Modell sieht nie beide Texte gleichzeitig. Es kann daher feine Zusammenhänge nicht erfassen. Ein Satz wie “Die Funktion ist deaktiviert” kann semantisch nah an “Wie aktiviere ich die Funktion?” liegen, obwohl er die Frage nicht beantwortet.

Das Ergebnis ist eine grobe Sortierung. Die obersten Treffer sind oft relevant, aber nicht immer die relevantesten. Für viele Anwendungen reicht das. Wenn es aber auf Präzision ankommt, ist das der Punkt, an dem Reranking ansetzt.

Wie funktioniert Reranking?

Reranking setzt einen Cross-Encoder ein. Im Gegensatz zum Bi-Encoder verarbeitet dieser Frage und Dokument in einem gemeinsamen Durchlauf. Das Modell sieht beide Texte gleichzeitig und kann deren Zusammenhang genau bewerten. Am Ende gibt es einen einzelnen Relevance Score aus, also einen Wert, der beschreibt, wie gut das Dokument die Frage beantwortet.

Der Ablauf sieht so aus:

  1. Die Vektorsuche liefert die Top-K Ergebnisse, zum Beispiel 20 Dokumente
  2. Der Cross-Encoder berechnet für jedes dieser Dokumente einen Relevance Score, immer in Kombination mit der Frage
  3. Die Dokumente werden nach diesem Score neu sortiert
  4. Die obersten N Dokumente, zum Beispiel 5, gehen an das Sprachmodell

Dieser zweite Schritt ist langsamer, weil der Cross-Encoder jedes Dokument einzeln zusammen mit der Frage verarbeitet. Da er aber nur auf eine kleine Menge von Dokumenten angewendet wird, bleibt die Gesamtzeit im Rahmen. Typischerweise dauert das Reranking von 20 Dokumenten wenige Millisekunden auf einer GPU und unter einer Sekunde auf einer CPU.

Bi-Encoder vs. Cross-Encoder

EigenschaftBi-EncoderCross-Encoder
VerarbeitungFrage und Dokument getrenntFrage und Dokument gemeinsam
GeschwindigkeitSehr schnell, skaliert auf MillionenLangsamer, nur für kleine Mengen
GenauigkeitGrob, gut für erste FilterungPräzise, erkennt feine Zusammenhänge
SpeicherVektoren vorberechnet, wenig AufwandKeine Vorberechnung möglich, Live-Berechnung
EinsatzErste Suche in der VektordatenbankZweite Sortierung der Top-K Ergebnisse
SkalierbarkeitHochBegrenzt durch Rechenzeit

Die beiden Ansätze konkurrieren nicht miteinander, sie ergänzen sich. Der Bi-Encoder macht die schnelle Vorauswahl, der Cross-Encoder die genaue Nachsortierung.

Reranking-Modelle für lokalen Einsatz

Für lokale KI stehen mehrere frei verfügbare Reranking-Modelle zur Verfügung. Die wichtigsten:

BGE-Reranker von BAAI ist eine Familie von Modellen in verschiedenen Größen. bge-reranker-base ist klein und schnell, bge-reranker-large bietet höhere Genauigkeit. Die Modelle sind mehrsprachig und eignen sich für deutsche Texte.

ms-marco-MiniLM von Microsoft wurde auf der MS MARCO Datensatz trainiert. cross-encoder/ms-marco-MiniLM-L-6-v2 ist kompakt und liefert gute Ergebnisse für englische Inhalte. Für deutsche Texte ist ein mehrsprachiges Modell oft die bessere Wahl.

jina-reranker von Jina AI ist ebenfalls mehrsprachig und in mehreren Größen verfügbar. jina-reranker-v2-base-multilingual deckt viele Sprachen ab und ist auf Effizienz optimiert.

Alle diese Modelle lassen sich über die sentence-transformers Bibliothek laden und lokal ausführen. Mit Ollama kannst Du ebenfalls Modelle bereitstellen, für Reranking speziell ist sentence-transformers aber der direktere Weg.

Beispiel: RAG mit und ohne Reranking

Ein konkreter Vergleich zeigt den Unterschied. Du fragst: “Wie setze ich den Timeout für API-Requests in Bibliothek Y?”

Ohne Reranking liefert die Vektorsuche diese Top-5 Ergebnisse:

  1. “Allgemeine Konfiguration der Bibliothek” (Relevant, aber allgemein)
  2. “Timeout in Netzwerkprotokollen erklärt” (Thematisch nah, aber nicht spezifisch)
  3. “Installation der Bibliothek” (Falscher Kontext)
  4. “Error Handling bei API-Requests” (Teilweise relevant)
  5. “Beispielprojekt mit Bibliothek Y” (Kein Timeout-Inhalt)

Der relevante Abschnitt “Timeout setzen mit setTimeout(5000)” landet erst an Position 8 und wird nicht mehr an das Sprachmodell weitergereicht. Die Antwort wird ungenau.

Mit Reranking sieht die neue Top-5 Liste so aus:

  1. “Timeout setzen mit setTimeout(5000)” (Jetzt an Position 1)
  2. “Allgemeine Konfiguration der Bibliothek”
  3. “Error Handling bei API-Requests”
  4. “Timeout in Netzwerkprotokollen erklärt”
  5. “Erweiterte Timeout-Optionen”

Das Sprachmodell bekommt den korrekten Abschnitt direkt an erster Stelle und liefert eine präzise Antwort mit dem passenden Code-Beispiel.

Implementierung mit sentence-transformers

Die Umsetzung mit sentence-transformers ist unkompliziert. Du brauchst nur die Bibliothek und ein Reranking-Modell.

from sentence_transformers import CrossEncoder

# Modell laden
model = CrossEncoder('BAAI/bge-reranker-base')

# Frage und gefundene Dokumente
query = "Wie setze ich den Timeout für API-Requests?"
documents = [
    "Allgemeine Konfiguration der Bibliothek.",
    "Timeout setzen mit setTimeout(5000).",
    "Installation der Bibliothek.",
    "Error Handling bei API-Requests.",
    "Beispielprojekt mit Bibliothek Y."
]

# Paare aus Frage und Dokument bilden
pairs = [[query, doc] for doc in documents]

# Relevance Scores berechnen
scores = model.predict(pairs)

# Ergebnisse nach Score sortieren
ranked = sorted(zip(scores, documents), reverse=True)

for score, doc in ranked:
    print(f"{score:.4f}  {doc}")

Das Modell gibt für jedes Paar einen Score zurück. Höhere Werte bedeuten höhere Relevanz. Danach sortierst Du die Dokumente nach dem Score und behältst die obersten N für das Sprachmodell.

In einer vollständigen RAG-Pipeline sieht der Ablauf so aus: Vektorsuche liefert 20 Ergebnisse, Cross-Encoder sortiert sie neu, die obersten 5 gehen an das Sprachmodell. Mehr zur Pipeline-Struktur findest Du in den RAG Grundlagen.

Wann lohnt sich Reranking?

Reranking ist nicht immer nötig. Diese Entscheidungshilfe zeigt, wann es sich lohnt:

  • Viele Dokumente: Ab einigen tausend Dokumenten wird die Vorauswahl ungenauer, Reranking hilft
  • Spezifische Fragen: Je genauer die Frage, desto mehr profitiert sie von präzisen Treffern
  • Kleines Sprachmodell: Modelle mit kleinem Kontextfenster brauchen wenige, aber hochrelevante Abschnitte
  • Hohe Qualitätsanwartungen: Bei Support- oder Rechtsthemen ist Präzision wichtiger als Geschwindigkeit
  • Hybrid Search vorhanden: Wenn Du bereits Hybrid Search nutzt, ergänzt Reranking die Kombination aus semantischer und Stichwortsuche

Reranking lohnt sich weniger bei sehr kleinen Dokumentmengen, bei denen die Vektorsuche ohnehin gute Ergebnisse liefert, oder bei Anwendungen, bei denen Latenz kritisch ist und jeder Millisekunde zählt.

Typische Stolpersteine beim Reranking

  1. Falsches Modell für die Sprache: Ein englisch trainiertes Reranking-Modell liefert bei deutschen Texten schlechte Ergebnisse. Wähle ein mehrsprachiges Modell wie BGE-Reranker oder jina-reranker.

  2. Zu viele Dokumente im Reranking: Wenn Du 100 oder mehr Dokumente an den Cross-Encoder übergibst, wird es langsam ohne großen Qualitätsgewinn. 20 bis 50 Dokumente sind ein guter Kompromiss.

  3. Top-K vor dem Reranking zu klein: Wenn die Vektorsuche nur 5 Ergebnisse liefert und das relevante Dokument an Position 6 steht, kann Reranking es nicht mehr retten. Hole genug Ergebnisse, zum Beispiel 20, bevor Du rerankst.

  4. Top-K nach dem Reranking zu groß: Wenn Du nach dem Reranking 15 Dokumente an das Sprachmodell übergibst, verwässern weniger relevante Abschnitte die Antwort. Behalte nur die obersten 3 bis 5.

  5. Lange Dokumente nicht chunked: Ein Cross-Encoder hat eine maximale Eingabelänge. Wenn ein Dokument zu lang ist, wird es abgeschnitten und der wichtige Teil geht verloren. Chunking bleibt wichtig.

  6. Kein Benchmark ohne Reranking: Vergleiche immer Ergebnisse mit und ohne Reranking. Nur so siehst Du, ob der zusätzliche Schritt bei Deinen Daten wirklich hilft.

  7. Reranking-Modell nicht auf GPU: Auf der CPU ist der Cross-Encoder deutlich langsamer. Bei häufigen Anfragen lohnt sich eine GPU.

  8. Scores falsch interpretiert: Die absoluten Scores eines Cross-Encoders sind nicht zwischen Modellen vergleichbar. Nutze sie nur für die Sortierung innerhalb eines Modells.

Hardware, Kosten und Sicherheit beim Reranking

Reranking-Modelle sind kleiner als Sprachmodelle, aber größer als reine Embedding-Modelle. bge-reranker-base hat etwa 280 Millionen Parameter und läuft auf einer modernen CPU in akzeptabler Zeit. Für produktive Anwendungen mit vielen Anfragen empfiehlt sich eine GPU.

Die Kosten halten sich in Grenzen, da alle genannten Modelle frei verfügbar sind. Es fallen nur die Hardwarekosten an, was ein Vorteil der lokalen KI ist. Im Vergleich zu gehosteten Reranking-APIs wie Cohere sparst Du laufende Kosten, tauschst aber Bequemlichkeit gegen eigenen Betriebsaufwand.

Sicherheitstechnisch ist Reranking unbedenklich, solange es lokal läuft. Weder Frage noch Dokumente verlassen Dein System. Das ist besonders bei sensiblen Daten ein wichtiger Punkt. Gehostete Reranking-Dienste übertragen Deine Texte an externe Server, was bei internen Dokumenten ein Risiko darstellen kann.

FAQ: Reranking - Typische Fragen

Was ist Reranking bei RAG?

Reranking ist ein zweiter Sortierschritt nach der Vektorsuche. Ein Cross-Encoder bewertet Frage und Dokument gemeinsam und sortiert die Ergebnisse neu, sodass die relevantesten oben stehen.

Brauche ich Reranking für kleine Dokumentmengen?

Bei wenigen Dokumenten liefert die Vektorsuche oft schon gute Ergebnisse. Reranking lohnt sich ab mehreren hundert bis tausend Dokumenten oder bei hohen Qualitätsanforderungen.

Was ist der Unterschied zwischen Bi-Encoder und Cross-Encoder?

Ein Bi-Encoder verarbeitet Frage und Dokument getrennt und ist schnell. Ein Cross-Encoder verarbeitet beide gemeinsam und ist genauer, aber langsamer. Beide ergänzen sich in einer RAG-Pipeline.

Welches Reranking-Modell ist für deutsche Texte geeignet?

Mehrsprachige Modelle wie BGE-Reranker oder jina-reranker-v2-base-multilingual funktionieren gut für deutsche Inhalte. Rein englische Modelle wie ms-marco-MiniLM sind für Deutsch weniger geeignet.

Wie viele Dokumente sollte ich reranken?

Ein guter Wert sind 20 bis 50 Dokumente. Zu wenige bergen das Risiko, dass das relevante Dokument gar nicht dabei ist. Zu viele verlangsamen den Prozess ohne großen Nutzen.

Läuft Reranking auch auf der CPU?

Ja, die meisten Reranking-Modelle laufen auf der CPU. Für produktive Anwendungen mit vielen Anfragen ist eine GPU deutlich schneller.

Kann ich Reranking mit Ollama nutzen?

Ollama fokussiert sich auf Sprach- und Embedding-Modelle. Für Reranking speziell ist sentence-transformers mit einem Cross-Encoder der direktere Weg. Du kannst beide Tools parallel in einer Pipeline einsetzen.

Wie viel bringt Reranking wirklich?

Das hängt von Deinen Daten ab. In vielen Fällen verbessert Reranking die Precision der Top-Ergebnisse deutlich. Vergleiche Ergebnisse mit und ohne Reranking anhand eines Testsets, um den Effekt zu messen.

Ist Reranking dasselbe wie Hybrid Search?

Nein. Hybrid Search kombiniert semantische und Stichwortsuche in der ersten Stufe. Reranking sortiert die Ergebnisse danach neu. Beide Ansätze lassen sich kombinieren und verstärken sich gegenseitig.

Muss ich ein Reranking-Modell trainieren?

In den meisten Fällen nicht. Vortrainierte Modelle wie BGE-Reranker decken viele Anwendungsfälle ab. Bei sehr spezifischen Domänen kann Feintuning helfen, ist aber für den Start nicht nötig.

Verlängert Reranking die Antwortzeit spürbar?

Bei 20 gerankten Dokumenten dauert der Schritt auf einer GPU wenige Millisekunden. Auf einer CPU kann es unter einer Sekunde liegen. Gegenüber der Textgenerierung durch das Sprachmodell ist der Anteil meist gering.

Quellen und weiterführende Literatur

  • Sentence Transformers Dokumentation zu Cross-Encodern
  • BAAI BGE-Reranker auf Hugging Face
  • Jina AI Reranker Modelle
  • Microsoft MS MARCO Cross-Encoder Modelle
  • Cohere Rerank API Dokumentation als Vergleich zu lokalen Modellen
Zurück zum KI Blog
Share:

Ähnliche Beiträge