Fortgeschritten 12 Min.Optimierung

Ein Reranker hinzufügen zu pipeline

Direkte Antwort

Ein Reranker ist ein Cross-Encoder, der jedes Paar aus Frage und Textabschnitt erneut liest und die von der Vektorsuche zurückgegebenen Kandidaten neu sortiert: Es werden zunächst viele Textabschnitte abgerufen (20 bis 100), von denen die besten 3 bis 5 für das Modell ausgewählt werden. Für französische Texte ist BAAI/bge-reranker-v2-m3 (Apache-2.0-Lizenz, etwa 568 Millionen Parameter) der einfachste Einstieg: lokal auf einer GPU oder sogar auf einer CPU, sofern der Umfang überschaubar bleibt.

Embeddings finden Passagen, die einer Frage inhaltlich nahekommen, aber nicht unbedingt solche, die sie beantworten. Der Reranker behebt diesen Mangel, indem er jedes Frage-Passage-Paar in einem einzigen Rechenschritt bewertet. Dieser Leitfaden erklärt, wann sich seine Kosten lohnen, welches Modell Sie für Französisch wählen sollten, wie Sie ihn mit dreißig Zeilen Code einbinden und wie Sie anhand Ihrer eigenen Dokumente überprüfen, ob er die Ergebnisse tatsächlich verbessert.

Von Mohamed Meguedmi·Aktualisierung 2026-09-30·Unter Windows, macOS und Linux getestet

#Reranker: Wozu er in einer RAG-Pipeline dient

Ein Reranker nimmt eine Frage und eine Textpassage entgegen, liest beide gemeinsam und gibt einen Relevanzwert zurück; anschließend werden die Kandidaten nach absteigendem Wert sortiert, und nur die besten werden an das Sprachmodell weitergegeben. In einer lokalen RAG-Pipeline wird er zwischen der Vektordatenbank (ChromaDB, Qdrant, Weaviate) und dem LLM eingefügt: Die Vektorsuche liefert beispielsweise 30 Textpassagen, von denen der Reranker 5 auswählt. Die offizielle Modellbeschreibung von BAAI erklärt es so: Im Gegensatz zu einem Embedding-Modell erhält der Reranker die Frage und das Dokument als Eingabe und erzeugt direkt einen Ähnlichkeitswert statt eines Vektors. Der Nutzen ist am deutlichsten, wenn die richtige Antwort unter den Kandidaten zu finden ist, aber nicht ganz oben steht: Textpassagen, die das richtige allgemeine Thema behandeln, ohne die konkrete Frage zu beantworten, belegen die ersten Plätze, und das Modell erzeugt dann eine Antwort, die an der Frage vorbeigeht oder erfunden ist. Wenn die richtige Antwort nicht unter den Kandidaten ist, kann ein Reranker nichts ausrichten: Er sucht nicht, er sortiert.

Ein Embedding erzeugt für jedes Dokument einen Vektor, unabhängig von der gestellten Frage, und die Distanz misst die allgemeine thematische Nähe. Zwei Passagen zum selben Thema können daher ähnliche Scores erzielen, obwohl nur eine die Antwort enthält. Der Cross-Encoder betrachtet das Paar als Ganzes: Er erkennt, ob das gesuchte Datum, der gesuchte Name oder die gesuchte Bedingung in der Passage vorkommt. Bei dieser Beurteilung des einzelnen Paars ist er präziser, aber auch aufwendiger, weil pro Paar ein Durchlauf durch den Transformer nötig ist statt nur einer Berechnung pro Dokument.

i
Die Metapher
Das Embedding ist der Bibliothekar, der Sie zum richtigen Regal führt und Ihnen zwanzig Bücher reicht. Der Reranker ist der Experte, der diese zwanzig Bücher mit Ihrer Frage im Hinterkopf durchblättert und die drei, die sie beantworten, oben auf den Stapel legt.

#Bi-Encoder und Cross-Encoder: Warum man beide kombiniert

Das RAG-Local-Kit

Ihre Dokumente, Ihre KI: ein zuverlässiges lokales RAG für Ihre PDFs, Notizen und E-Mails – ohne Daten in die Cloud zu senden.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Erstattung binnen 30 Tagen
Bi-Encoder (Embedding)
Codiert die Frage und jedes Dokument getrennt; die Dokumentvektoren werden einmal bei der Indexierung berechnet, sodass sich die Suche auf einen Vergleich von Vektoren reduziert. Schnell, für Millionen von Textpassagen geeignet.
Cross-Encoder (reranker)
Kodiert die Frage und die Textpassage gemeinsam und gibt einen Score aus. Keine Berechnung lässt sich wiederverwenden: Sie muss für jede Frage und jeden Kandidaten erneut durchgeführt werden. Präzise, aber nicht auf das gesamte Korpus anwendbar.

Die Dokumentation von Sentence Transformers erläutert die Überlegung dahinter: Tausende oder Millionen von Paaren zu bewerten wäre recht langsam. Deshalb verwendet man den Retriever, um eine Menge von Kandidaten zusammenzustellen, beispielsweise etwa hundert, die der Cross-Encoder anschließend neu ordnet. Dieses zweistufige Verfahren entspricht dem klassischer Suchmaschinen. Es erklärt auch die wichtigste Einstellung: Die Anzahl der abgerufenen Kandidaten bestimmt sowohl den Recall (je mehr Kandidaten man einbezieht, desto wahrscheinlicher ist es, dass die richtige Antwort darunter ist) als auch die Latenz (jeder zusätzliche Kandidat erfordert einen Durchlauf durch den Cross-Encoder).

#Welches Reranking-Modell für Französisch wählen?

Für die Auswahl sind drei Kriterien entscheidend: Sprache, Lizenz und Speicher. Die unten aufgeführten Größenangaben stammen aus den Modellbeschreibungen auf Hugging Face. Beachten Sie, dass die Dateigröße von der Präzision der Gewichte abhängt: F32 bei bge-reranker-v2-m3 (etwa 4 Byte pro Parameter), F16 bei mxbai.

Lokal nutzbare Reranker (Modellbeschreibungen auf Hugging Face, September 2026)
ModellSprachenAngegebene GrößeLizenzUrteil für Französisch
BAAI/bge-reranker-v2-m3Multilingual0,6 Milliarden Parameter, Modellgewichte in F32 (etwa 2,3 GB)Apache 2.0Standardwahl: mehrsprachig, leichtgewichtig, mit guter Tool-Unterstützung
BAAI/bge-reranker-v2-gemmaMultilingual3 Milliarden Parameter, Gewichte in F32 (ca. 10 GB)Apache 2.0Anspruchsvollen Fällen mit dedizierter GPU vorbehalten; Reranker auf Basis von Gemma-2B
mixedbread-ai/mxbai-rerank-large-v1Englisch0,4 Milliarden Parameter, Gewichte in F16Apache 2.0Für ein französischsprachiges Korpus vermeiden: Die Modellkarte nennt Englisch als Sprache
Cohere RerankMultilingualGehosteter DienstKommerziellNicht relevant für eine 100 % lokale Pipeline: Die Passagen verlassen Ihr Gerät

Die Modellkarte von bge-reranker-v2-m3 beschreibt das Modell als leichtgewichtigen Reranker mit starken mehrsprachigen Fähigkeiten, der einfach bereitzustellen und bei der Inferenz schnell ist; die Modellkarte von bge-reranker-v2-gemma sieht das Modell für mehrsprachige Kontexte vor und nennt gute Ergebnisse sowohl auf Englisch als auch bei mehrsprachigen Aufgaben. Zwei nützliche Korrekturen gegenüber häufig gelesenen Angaben: Die Datei von bge-reranker-v2-m3 ist über 2 GB groß, nicht 560 MB (568 Millionen Parameter in F32), und mxbai-rerank-large-v1 ist ein englischsprachiges Modell, das Sie für französische Dokumente nicht auswählen sollten. Nach dem Laden mit halber Präzision belegt das m3-Modell etwa 1,1 GB für die Gewichte (568 Millionen Parameter × 2 Byte, Berechnung dieses Leitfadens); hinzu kommen die Aktivierungen des verarbeiteten Batches.

→
Embedding- und Reranker-Modell sind unabhängig
Sie können das eine ändern, ohne das andere neu zu indexieren: Der Reranker liest nur den Text der Passagen, niemals deren Vektoren. Zur Auswahl des Embedding-Modells siehe den speziellen Leitfaden zu Embedding-Modellen für Französisch.

#Die Pipeline vor und nach dem Reranker

Vorher / Nachher
AVANT :
  Question → Embedding → Base vectorielle (top-5) → LLM

APRÈS :
  Question → Embedding → Base vectorielle (top-20 à top-50)
                       → Reranker (top-5) → LLM

On récupère large, puis on ordonne finement.

Zwei Parameter steuern das Ganze: k_retrieve, die Anzahl der Kandidaten, die die Vektordatenbank zurückgibt, und k_final, die Anzahl der Textpassagen, die an das LLM übergeben werden. Ein k_final von 3 bis 5 eignet sich für die meisten lokalen Modelle mit 7 bis 14 Milliarden Parametern; darüber hinaus wird das Kontextfenster ohne klaren Nutzen gefüllt, und die Verarbeitungszeit des Prompts steigt. k_retrieve hängt von der Schwierigkeit des Korpus ab: 20 ist ein guter Wert für einen ersten Versuch, 50 bis 100 eignen sich bei vagen Fragen oder wenn das Korpus viele ähnliche Textpassagen enthält. Der Leitfaden zum Kontextfenster erläutert im Detail, welche Kosten zusätzliche Textpassagen im Prompt verursachen.

#Implementierung: sentence-transformers, FlagEmbedding, llama.cpp

#Mit sentence-transformers

Die Klasse CrossEncoder lädt das Modell und bewertet Paare. Ihre Methode rank akzeptiert direkt die Frage und die Liste der Dokumente und gibt die besten zurück; der Parameter top_k begrenzt die Anzahl der Ergebnisse (ohne ihn werden alle Dokumente zurückgegeben).

CrossEncoder.rank
from sentence_transformers import CrossEncoder

reranker = CrossEncoder("BAAI/bge-reranker-v2-m3", max_length=512)

def retrieve_and_rerank(question, k_retrieve=20, k_final=5):
    # 1. Récupération par embedding (ChromaDB, Qdrant, etc.)
    candidats = embedding_search(question, top_k=k_retrieve)  # liste de textes

    # 2. Scoring par le cross-encoder, tri et coupe en une seule étape
    resultats = reranker.rank(question, candidats, top_k=k_final, batch_size=16)
    # resultats = [{'corpus_id': 3, 'score': 0.91}, ...]
    return [candidats[r['corpus_id']] for r in resultats]

#Mit FlagEmbedding, der Bibliothek der Modellautoren

Die Modellbeschreibung verwendet die Bibliothek FlagEmbedding. Sie erläutert, dass sich der Rohwert mit einer Sigmoidfunktion und normalize=True auf einen Wert zwischen 0 und 1 abbilden lässt und dass use_fp16=True die Berechnung auf Kosten einer leichten Qualitätseinbuße beschleunigt. Beachten Sie, dass der Rohwert keine absolute Skala hat und bei themenfremden Passagen oft negativ ist; nur die Reihenfolge zählt, sofern Sie keinen Schwellenwert festlegen.

FlagReranker
from FlagEmbedding import FlagReranker

reranker = FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True)
score = reranker.compute_score(['ma question', 'un passage'], normalize=True)  # entre 0 et 1

#Mit llama.cpp, ohne Python

Der llama.cpp-Server bietet einen Reranking-Endpunkt, der standardmäßig deaktiviert ist. Laut Dokumentation erfordert dieser ein Reranking-Modell; als Beispiel wird bge-reranker-v2-m3 genannt. Der Server wird dafür mit den Optionen --embedding und --pooling rank gestartet. Eine GGUF-Version des Modells ist erforderlich. Diese Option empfiehlt sich, wenn Ihr Software-Stack bereits auf llama.cpp basiert und Sie die Installation von PyTorch vermeiden möchten. Prüfen Sie die genaue Option in der installierten Version: Die Dokumentation weist darauf hin, dass sich dieser Endpunkt noch ändern könnte.

llama-server (an Ihre Version anzupassen)
llama-server -m bge-reranker-v2-m3-Q8_0.gguf --embedding --pooling rank --reranking --port 8081

#Mit LlamaIndex

SentenceTransformerRerank
from llama_index.core.postprocessor import SentenceTransformerRerank

reranker = SentenceTransformerRerank(model="BAAI/bge-reranker-v2-m3", top_n=5)

query_engine = index.as_query_engine(
    similarity_top_k=20,
    node_postprocessors=[reranker],
)

#Kosten: Latenz, Speicher, Länge der Abschnitte

Konkrete Latenzwerte sind nicht garantiert: Die Latenz hängt von der Grafikkarte, der numerischen Präzision (FP16 oder FP32), der Anzahl der Kandidaten und der Länge der Textpassagen ab. Merken Sie sich die Größenverhältnisse. Die Reranking-Zeit steigt linear mit der Anzahl der Paare: Von 20 auf 100 Kandidaten zu wechseln, verfünffacht den Arbeitsaufwand. Sie steigt auch mit der Länge der Textpassage, da jedes Paar vollständig kodiert wird. Messen Sie auf Ihrem Rechner mit Ihren Textpassagen, statt sich auf einen Wert aus einem Blog zu verlassen: Messen Sie die Dauer von hundert echten Anfragen und betrachten Sie die mediane Dauer sowie den ungünstigsten Fall.

Anzahl der Kandidaten
Erster Ansatzpunkt. Beginnen Sie mit 20, messen Sie den Recall und erhöhen Sie nur dann auf 50, wenn gute Antworten weiterhin nicht in der Kandidatenmenge enthalten sind.
Präzision
use_fp16=True (FlagEmbedding) oder das Laden mit halber Präzision reduziert den Speicherbedarf und beschleunigt die Berechnung, laut Modellbeschreibung mit einer leichten Leistungseinbuße.
Batchgröße
Die Methode rank von sentence-transformers verarbeitet standardmäßig 32 Paare pro Batch. Reduzieren Sie die Batchgröße auf 8 oder 16, wenn der Speicher knapp ist, und erhöhen Sie sie, wenn die GPU nicht ausgelastet ist.
Maximale Länge
512 Tokens pro Paar (Wert von max_length in den offiziellen Beispielen). Ein längerer Abschnitt wird abgeschnitten: Wenn Ihre Chunks diese Länge überschreiten, wird das Ende des Abschnitts nicht gelesen. Verkürzen Sie die Chunks, bevor Sie die Grenze erhöhen.
CPU oder GPU
Auf der CPU funktioniert der Reranker, aber jede Anfrage mit 20 bis 50 Kandidaten dauert Sekunden; für einen internen Dokumentenassistenten ist das akzeptabel, für einen interaktiven Chat weniger.
→
Den Reranker überspringen, wenn er nicht nötig ist
Auf einem kleinen, sauberen Korpus (einigen Dutzend gut strukturierter Seiten) enthält der top-5 Vector oft bereits die Antwort. Messen Sie zuerst, und behalten Sie den Reranker nur dann bei, wenn der Recall zunimmt.

#Reranker und Aufteilung in Textabschnitte: Die beiden Einstellungen beeinflussen sich gegenseitig

Ein Cross-Encoder bewertet eine ganze Passage. Wenn die Passage drei Themen vermischt, fällt ihr Score für alle drei entsprechenden Fragen mittelmäßig aus; ist sie zu kurz, geht der Kontext verloren, anhand dessen sie als Antwort erkannt werden könnte. Die Aufteilung in mittelgroße Passagen mit leichter Überlappung gibt dem Reranker genügend Material, ohne seine maximale Eingabelänge zu überschreiten. Wenn Sie die Chunk-Größe ändern, wiederholen Sie den Recall-Test: Der optimale Wert für k_retrieve und der Nutzen des Rerankers ändern sich damit ebenfalls. Der Leitfaden zu Chunking-Strategien erläutert diese Entscheidungen im Detail.

Ein weiteres Zusammenspiel betrifft die hybride Suche. Wenn die Stichwortsuche (BM25) und die Vektorsuche zusammengeführt werden, ist die Kandidatenauswahl vielfältiger. Dadurch hat der Reranker bessere Chancen, eine gute Antwort zu finden, die jede der beiden Methoden allein verfehlt hätte. Der Reranker bildet die letzte Stufe, die hybride Suche die zweite: Sie ergänzen einander, statt einander zu ersetzen.

#Die Verbesserung anhand Ihrer Dokumente messen

Die in Blogs angegebenen Verbesserungen variieren je nach Korpus vom Einfachen bis zum Fünffachen, und kein allgemeiner Wert lässt sich auf Ihren Korpus übertragen. Bei einem stark strukturierten Korpus (sauber aufbereitete technische Dokumentation) ist die reine Vektorsuche bereits gut; bei einem verrauschten Korpus (E-Mails, Notizen, schlecht extrahierte PDFs) ist der Unterschied deutlicher. Das lässt sich nur durch eine Evaluierung feststellen.

  1. 01
    30 bis 50 Fragen zusammenstellen
    Verwenden Sie echte Fragen von Nutzern und ordnen Sie jeder Frage die Passage zu, die die Antwort enthält (eine Kennung genügt).
  2. 02
    Recall@5 ohne Reranker messen
    Prüfen Sie für jede Frage, ob die richtige Passage unter den ersten 5 Ergebnissen der Vektordatenbank enthalten ist.
  3. 03
    Den Recall bei 5 mit einem Reranker messen
    Rufen Sie 20 Kandidaten ab, ordnen Sie sie neu nach Relevanz und zählen Sie erneut die relevanten Textpassagen unter den ersten 5.
  4. 04
    Auch die Latenz vergleichen
    Notieren Sie den Median der Ende-zu-Ende-Laufzeit. Ein Gewinn von einigen Punkten beim Recall rechtfertigt nicht unbedingt eine zusätzliche Sekunde Wartezeit.
  5. 05
    Fehler analysieren
    Prüfen Sie bei jeder falsch beantworteten Frage, ob die richtige Antwort unter den 20 Kandidaten war. Falls nicht, liegt das Problem in einem vorgelagerten Schritt: bei der Aufteilung, den Embeddings oder der Textextraktion.
Recall bewerten
def rappel_a_k(pipeline, questions, cibles, k=5):
    ok = 0
    for q, cible in zip(questions, cibles):
        ok += cible in [p.id for p in pipeline(q)[:k]]
    return ok / len(questions)

sans = rappel_a_k(pipeline_sans_reranker, questions, cibles)
avec = rappel_a_k(pipeline_avec_reranker, questions, cibles)
print(f"Sans : {sans:.0%}   Avec : {avec:.0%}")
!
Beschränkungen des Rerankers
Ein Reranker korrigiert weder fehlerhaft aus einem PDF extrahierten Text noch eine Aufteilung, die die Antwort in zwei Teile zerschneidet, noch eine mehrdeutige Frage. Er kann auch kurze Passagen benachteiligen, deren Score niedrig ist, obwohl sie die richtige Zahl enthalten: Prüfen Sie die Fehlschläge, statt sich auf den Durchschnitt zu verlassen.

#Ist ein Reranker erforderlich? Entscheidungskriterien

Wann einen Reranker hinzufügen
SituationEntscheidung
Korpus aus einigen Dutzend sauber aufbereiteter Dokumente, die Top-5-Ergebnisse der Vektorsuche sind bereits gutNein, messen Sie zuerst
Gute Antwort häufig zwischen dem 6. und 30. PlatzJa: Dies ist ein typisches Anwendungsszenario
Vage Fragen, verrauschtes oder sehr heterogenes KorpusJa, mit 30 bis 50 Kandidaten
Interaktiver Chat auf einer Maschine ohne GPUVorsicht: Messen Sie die CPU-Latenz und reduzieren Sie auf 10 bis 20 Kandidaten
Die richtige Antwort fehlt selbst unter den ersten 50 KandidatenNein: Korrigieren Sie zuerst die Aufteilung in Chunks, die Embeddings oder die Extraktion

#Häufige Fragen zum Reranking

FAQ
Ersetzt ein Reranker die Vektorsuche?+
Nein. Er durchsucht nicht das Korpus: Er ordnet die wenigen Dutzend Kandidaten neu, die ihm die Vektorsuche liefert. Ohne eine schnelle erste Stufe müsste man ihn auf jede Passage der Datenbank anwenden, was viel zu langsam wäre. Die beiden Stufen ergänzen sich: Die Vektorsuche gewährleistet den Recall, der Reranker sorgt für Präzision an der Spitze der Rangliste.
Welchen Reranker für Dokumente auf Französisch wählen?+
BAAI/bge-reranker-v2-m3 ist ein sinnvoller Ausgangspunkt: mehrsprachig, unter der Apache-2.0-Lizenz, mit etwa 600 Millionen Parametern und daher auch auf einer einfachen Grafikkarte nutzbar. Vermeiden Sie mxbai-rerank-large-v1, dessen Modellbeschreibung Englisch als Sprache angibt. Das größere Modell bge-reranker-v2-gemma lohnt sich nur, wenn das erste Modell für Ihren Fragenkatalog nicht ausreicht.
Wie viele Kandidaten sollte man neu bewerten und ordnen?+
Beginnen Sie mit 20 Kandidaten und behalten Sie 5 Passagen. Wenn sich bei der Auswertung zeigt, dass gute Antworten nicht unter diesen 20 sind, erhöhen Sie die Zahl auf 50. Jeder zusätzliche Kandidat erfordert eine weitere Berechnung, sodass die Latenz annähernd linear zunimmt. Bei mehr als 100 Kandidaten sind weitere Verbesserungen selten: Das ist oft ein Hinweis auf ein Problem bei der Aufteilung in Textabschnitte oder bei den Embeddings.
Ist eine GPU für einen Reranker erforderlich?+
Nein, aber eine GPU hilft. Das Modell m3 läuft auf der CPU, wobei die Verzögerung für einen Stapel von Kandidaten je nach Rechner bei etwa einer Sekunde oder mehr liegt: Das müssen Sie auf Ihrem Rechner messen. Für die interne Arbeit mit Dokumenten bleibt das akzeptabel. Für einen flüssigen Chat verändert eine GPU, selbst eine bescheidene, oder ein leichteres Modell das Nutzungserlebnis.
Kann ein Reranker mit Ollama verwendet werden?+
Ollama stellt das Generierungsmodell und die Embeddings bereit, aber das Reranking erfolgt separat: mit sentence-transformers oder FlagEmbedding in Python oder mit dem llama.cpp-Server, der einen Reranking-Endpunkt bereitstellt. Der Reranker ist ein eigenständiges Modell, das in einem eigenen Prozess geladen wird und parallel zum Generierungsmodell läuft, sofern der Speicher ausreicht.
Wie kann man überprüfen, ob der Reranker meine Ergebnisse wirklich verbessert?+
Stellen Sie 30 bis 50 echte Fragen mit der jeweils erwarteten Textpassage zusammen und vergleichen Sie dann den Recall in den ersten 5 Ergebnissen mit und ohne Reranker sowie die mediane Latenz. Bei einem sauberen Korpus kann der Unterschied gering sein; bei einem verrauschten Korpus ist er deutlicher. Analysieren Sie anschließend die Fehlschläge, um festzustellen, ob ihre Ursachen in vorgelagerten Stufen liegen.
Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.