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,0323Gleiche 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.