Zurück zur Startseite

Manticore Hybrid-Suche: BM25 + KNN

Hybrid-Suche in Manticore Search kombiniert BM25 und KNN mit RRF für optimale Relevanz. Geeignet für RAG, Support und E-Commerce. Code-Beispiele und Einstellungen bereitgestellt.

Hybrid-Suche in Manticore: RRF und Beispiele
Advertisement 728x90

Hybride Suche in Manticore Search: Kombination von BM25 und KNN

Hybride Suche in Manticore Search kombiniert Volltext-BM25-Suche und vektorielle KNN-Suche in einer einzigen Abfrage. Dies ermöglicht die gleichzeitige Berücksichtigung exakter Schlüsselwörter und semantischer Ähnlichkeit. Bei einer Abfrage wie "günstige Laufschuhe" liefert BM25 Treffer basierend auf Tokens, während KNN die Bedeutung von Phrasen wie "bequemes Schuhwerk zum Joggen" erfasst.

Die Methode verwendet Reciprocal Rank Fusion (RRF), um Ranglisten zu fusionieren. Dokumente mit hohen Positionen in einer der Suchen erhalten Priorität im endgültigen Ranking.

Vorteile des hybriden Ansatzes

Volltextsuche ist effektiv für seltene Begriffe, SKUs und Fehlercodes. Vektorsuche erfasst Synonyme und natürliche Sprache, da Einbettungen verwandter Konzepte im Vektorraum nahe beieinander liegen.

Google AdInline article slot

Schwächen jeder Methode:

  • BM25 hat Schwierigkeiten mit Synonymen.
  • KNN ignoriert exakte Identifikatoren ohne semantische Bedeutung.

Hybride Abruf verbessert den Recall für gemischte Abfragen und minimiert den Bedarf an komplexer Logik.

Anwendungsfälle

Hybride Suche ist in folgenden Szenarien relevant:

Google AdInline article slot
  • Abfragen mit Absicht und Details, z.B. python error 403 forbidden — der Fehlercode über BM25, die Beschreibung über KNN.
  • RAG-Pipelines für LLMs — Zuführung der relevantesten Textabschnitte.
  • Kataloge mit strukturierten (Produktmodelle) und unstrukturierten Daten (Beschreibungen).
  • Unvorhersehbare Nutzermuster — exakte Phrasen oder beschreibende Sprache.

Im E-Commerce verarbeitet hybride Suche parallel Namen, Beschreibungen und visuelle Einbettungen.

RRF-Mechanismus

RRF aggregiert Ränge ohne Normalisierung der Scores. Formel: 1 / (rank_constant + rank). Standard rank_constant=60.

Beispiel für die Fusion der Top-3:

Google AdInline article slot

| Dokument | BM25 Rang | KNN Rang | RRF Score |

|----------|-----------|----------|-----------|

| Doc A | 1 | 2 | 0,0325 |

| Doc C | 3 | 1 | 0,0323 |

| Doc B | 2 | - | 0,0161 |

| Doc D | - | 3 | 0,0159 |

Doc A führt aufgrund hoher Positionen in beiden Listen. RRF ist der scorebasierten Fusion vorzuziehen, da keine Skalierungskalibrierung erforderlich ist.

Teilabfragen (MATCH und KNN) werden parallel ausgeführt; Filter gelten für alle.

Praktisches Beispiel mit Wissensdatenbanken

In Support-Datenbanken, Abfrage "Kann keine Verbindung zum Server herstellen" + Fehlercode E-5020.

KNN-Ergebnisse:

| # | Titel | Distanz |

|---|-------|----------|

|1| E-5030: DNS | 0,572 |

|2| E-2091: Timeout | 0,583 |

|3| E-5020: SSL | 0,605 |

Hybrid mit MATCH('E-5020') und KNN:

SELECT title, hybrid_score()
FROM support_articles
WHERE knn(embedding, 'kann keine verbindung zum server herstellen')
  AND MATCH('E-5020')
LIMIT 5
OPTION fusion_method='rrf';

| # | Titel | Hybrid Score |

|---|-------|--------------|

|1| Fehler E-5020: SSL-Zertifikat-Fehler | 0,032 |

|2| E-5030 | 0,016 |

|3| E-2091 | 0,016 |

E-5020 steigt auf den ersten Platz: BM25 erfasst den exakten Code, KNN erfasst den Kontext.

Hybride Suche ausführen

Automatischer Modus mit hybrid_match():

SELECT id, hybrid_score()
FROM products
WHERE hybrid_match('laufschuhe');

JSON-API:

POST /search
{
  "table": "products",
  "hybrid": { "query": "laufschuhe" }
}

Manticore generiert Einbettungen, führt Suchen durch und fusioniert Ergebnisse.

Explizite Kontrolle:

SELECT id, hybrid_score()
FROM products
WHERE match('laufschuhe')
  AND knn(embedding, (0.12, 0.45, 0.78, ...))
OPTION fusion_method='rrf';

Verfügbare Metriken: hybrid_score(), weight() (BM25), knn_dist().

Fusions-Einstellungen

  • rank_constant: Dominanz der Top-Positionen (niedrigere Werte erhöhen die Betonung).
  • fusion_weights: Gewichtungen der Teilabfragen, z.B. (text=0.5, knn=0.3).
  • window_size: Umfang der Zwischenergebnisse.

Mehrere KNN:

SELECT id, hybrid_score()
FROM products
WHERE match('laufschuhe') AS text
  AND knn(title_vec, (0.12, 0.45, ...)) AS title_sim
  AND knn(image_vec, (0.88, 0.21, ...)) AS image_sim
OPTION fusion_method='rrf',
       fusion_weights=(text=0.5, title_sim=0.3, image_sim=0.2);

Wichtige Erkenntnisse

  • Hybride Suche verteilt Signale: Identifikatoren über BM25, Bedeutung über KNN.
  • RRF gewährleistet stabile Fusion ohne Kalibrierung.
  • Unterstützung mehrerer Vektorräume für multimodale Daten.
  • Parallele Ausführung minimiert Latenz.
  • Automatische Einbettungsgenerierung vereinfacht die Integration.

— Editorial Team

Advertisement 728x90

Weiterlesen