iToverDose/Software· 8 MAI 2026 · 04:06

Hybride Suche: Warum RAG-Systeme mit BM25 und Vektorsuche besser funktionieren

Reine Vektorsuche scheitert bei exakten Begriffen wie Modellnamen, während BM25 bei semantischen Fragen versagt. Die Lösung? Eine Kombination beider Methoden – doch wie verschmelzen die Ergebnisse fair? Ein praktischer Leitfaden mit Code-Beispielen und Experimentdaten.

DEV Community4 min0 Kommentare

Die Annahme, dass Vektorsuche bei exakten Suchanfragen wie "BAAI/bge-large-zh-v1.5 Dimension" zuverlässiger ist als klassische Methoden, trügt oft. Zwar erkennt die Vektorsuche semantische Nuancen, doch bei präzisen Begriffen – etwa Produktnamen, Parameter oder technische Spezifikationen – stößt sie an ihre Grenzen. Genau hier glänzt BM25, ein Ranking-Algorithmus, der auf exakter Wortübereinstimmung basiert.

Doch wie kombiniert man die Stärken beider Ansätze, ohne ihre individuellen Schwächen zu verstärken? Die Antwort liegt in der hybriden Suche, die Vektorsuche und BM25 intelligent fusioniert. Dieser Ansatz eliminiert blinde Flecken und verbessert die Treffergenauigkeit deutlich – besonders in RAG-Systemen (Retrieval-Augmented Generation).

Warum reine Vektorsuche bei exakten Anfragen versagt

Stellen Sie sich eine Wissensdatenbank vor, die folgenden Satz enthält:

"Für chinesische Anwendungen empfehlen wir BAAI/bge-large-zh-v1.5 mit einer Vektordimension von 1024."

Eine Nutzeranfrage wie "Wie hoch ist die Vektordimension von BAAI/bge-large-zh-v1.5?" scheint auf den ersten Blick trivial. Doch trotz identischer Begriffe scheitert die Vektorsuche hier häufig. Der Grund: Sie bewertet Dokumente basierend auf semantischer Ähnlichkeit, nicht auf exakter Wortübereinstimmung.

BM25 hingegen ist speziell für solche Szenarien optimiert. Als Grundlage vieler Suchmaschinen wie Elasticsearch oder Lucene analysiert er:

  • Termhäufigkeit (TF): Wie oft ein Begriff im Dokument vorkommt – aber mit abnehmender Gewichtung bei zu häufiger Verwendung.
  • Inverse Dokumenthäufigkeit (IDF): Seltene Begriffe wie Modellnamen erhalten ein höheres Gewicht als häufige Wörter wie "der" oder "und".
  • Dokumentlängen-Normalisierung: Lange Dokumente werden nicht automatisch bevorzugt, nur weil sie mehr Wörter enthalten.

Das Problem: Vektorsuche glänzt bei konzeptionellen Fragen (z. B. "Wie aktualisiere ich mein RAG-System für aktuelle Daten?"), während BM25 bei exakten Suchanfragen (z. B. "chunk_size 256 Parameter") überlegen ist.

Hybrid-Suche: Zwei Methoden, ein Ziel

Hybrid-Suche kombiniert beide Ansätze, indem sie die Ergebnisse von BM25 und Vektorsuche intelligent vereint. Die Herausforderung: Beide Systeme nutzen unterschiedliche Bewertungsskalen. Während BM25 auf exakten Begriffen basiert, bewertet die Vektorsuche semantische Nähe – ihre Scores sind daher nicht direkt vergleichbar.

Hier kommt das Reciprocal Rank Fusion (RRF)-Verfahren ins Spiel. Statt die Rohscores zu addieren, vergleicht RRF die Ränge der Dokumente in den einzelnen Ergebnislisten. Die Formel lautet:

RRF_Score(d) = Σ 1 / (k + rank(d))
  • rank(d): Die Position des Dokuments in der Ergebnisliste des jeweiligen Retrievers (1. Platz = 1, 2. Platz = 2, usw.).
  • k: Eine Konstante (meist 60), die verhindert, dass der Spitzenreiter übermäßig dominiert.

Beispiel: Angenommen, ein Dokument wird in BM25 auf Platz 1 und in der Vektorsuche auf Platz 3 gelistet. Sein RRF-Score berechnet sich wie folgt:

RRF_Score = 1/(60+1) + 1/(60+3) = 0,0164 + 0,0159 = 0,0323

Gleiche Ränge führen zu gleichen Scores – unabhängig davon, ob das Dokument aus der BM25- oder Vektorsuche stammt. Dieser Ansatz stellt eine faire Gewichtung sicher, ohne dass manuelle Normalisierung der Rohscores nötig ist.

Praktische Umsetzung: BM25, Vektorsuche & Hybrid-Retriever

Die Implementierung einer hybriden Suche erfordert drei Schritte:

1. BM25-Retriever für exakte Treffer

Für chinesische Texte ist eine Vorverarbeitung mit einem Segmentierungs-Tool wie jieba notwendig. Der folgende Code zeigt die Einrichtung eines BM25-Retrievers:

import jieba
from langchain_community.retrievers import BM25Retriever

def chinese_tokenizer(text: str) -> list[str]:
    return list(jieba.cut(text))

bm25_retriever = BM25Retriever.from_documents(
    docs,
    k=3,  # Anzahl der zurückgegebenen Dokumente
    preprocess_func=chinese_tokenizer,  # Chinesische Textsegmentierung
)

2. Vektor-Retriever für semantische Ähnlichkeit

Für die Vektorsuche wird ein Embedding-Modell wie BAAI/bge-large-zh-v1.5 verwendet. Die Dokumente werden in eine Vektordatenbank wie Chroma gespeichert:

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(
    model="BAAI/bge-large-zh-v1.5",
    api_key=os.getenv("EMBEDDING_API_KEY"),
    base_url="
)

vectorstore = Chroma.from_documents(docs, embedding=embeddings)
vector_retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

3. Hybrid-Retriever mit RRF-Fusion

Der finale Schritt kombiniert beide Retriever mithilfe der EnsembleRetriever-Klasse. Die Gewichtung [0.5, 0.5] bestimmt die relative Bedeutung der einzelnen Retriever im RRF-Prozess:

from langchain.retrievers import EnsembleRetriever

hybrid_retriever = EnsembleRetriever(
    retrievers=[bm25_retriever, vector_retriever],
    weights=[0.5, 0.5],  # RRF fusioniert intern basierend auf Rängen
)

Experimentelle Ergebnisse: Wo Hybrid-Suche glänzt

In einem Test mit sechs verschiedenen Anfragen zeigte die hybride Suche durchgehend bessere Ergebnisse als die Einzelmethoden. Die Metrik Mean Reciprocal Rank (MRR) bewertete die Trefferqualität:

  • MRR = 1.0: Das richtige Dokument wurde an erster Stelle gefunden.
  • MRR = 0.5: Das richtige Dokument stand an zweiter Stelle.
  • MRR = 0.0: Das Dokument wurde nicht gefunden.

Beispiele aus dem Test:

| Anfrage | Typ | Erwartetes Dokument | BM25 (MRR) | Vektorsuche (MRR) | Hybrid (MRR) | |---------|-----|---------------------|------------|-------------------|--------------| | "BAAI/bge-large-zh-v1.5 Dimension" | Keyword | doc-003 | 1.00 ✓ | 1.00 ✓ | 1.00 ✓ | | "RRF-Score-Formel Summe 1/(k+Rang)" | Keyword | doc-006 | 1.00 ✓ | 0.50 ✗ | 1.00 ✓ | | "Mein KI-Assistent gibt veraltete Antworten – wie aktualisiere ich das?" | Semantik | doc-001 | 0.00 ✗ | 1.00 ✓ | 1.00 ✓ |

Die Ergebnisse belegen: Während BM25 bei exakten Anfragen und die Vektorsuche bei semantischen Fragen überlegen sind, liefert die hybride Suche in allen Fällen die besten Ergebnisse.

Fazit: Hybrid-Suche als Standard für RAG-Systeme

Die Kombination aus BM25 und Vektorsuche mit RRF-Fusion ist kein Nischenkonzept, sondern ein Must-have für moderne RAG-Systeme. Sie eliminiert die Schwächen einzelner Retriever und nutzt deren Stärken optimal aus.

Besonders in Umgebungen mit gemischten Anfragen – von präzisen Modellnamen bis hin zu konzeptionellen Fragen – bietet die hybride Suche eine Robustheit, die reine Vektorsuchen oder BM25 allein nicht erreichen können. Für Entwickler bedeutet dies weniger manuelle Anpassungen und eine höhere Zuverlässigkeit der Suchergebnisse – ein entscheidender Vorteil in Produktionsumgebungen.

Die Zukunft der Dokumentenrecherche liegt nicht in der Wahl zwischen BM25 und Vektorsuche, sondern in deren intelligenter Kombination. Wer diese Technologie heute implementiert, spart sich morgen aufwändige Nachjustierungen und liefert Nutzern von Anfang an präzisere Antworten.

KI-Zusammenfassung

Discover why hybrid search combining BM25 and vector retrieval outperforms pure vector search for technical RAG queries. Learn implementation tips and experiment results.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #0M1GYQ

0 / 1200 ZEICHEN

Menschen-Check

5 + 7 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.