Hybridní vyhledávání v Manticore Search: Kombinace BM25 a KNN
Hybridní vyhledávání v Manticore Search spojuje fulltextové vyhledávání BM25 a vektorové vyhledávání KNN v jediném dotazu. To umožňuje současně zohledňovat přesná klíčová slova a sémantickou podobnost. Pro dotaz "levné běžecké boty" BM25 zajistí shody podle tokenů, zatímco KNN podle významu frází jako "pohodlná obuv pro jogging".
Metoda využívá Reciprocal Rank Fusion (RRF) pro sloučení seřazených seznamů. Dokumenty s vysokými pozicemi v kterémkoli z vyhledávání získávají prioritu ve výsledném řazení.
Výhody hybridního přístupu
Fulltextové vyhledávání je efektivní pro vzácné termíny, SKU a kódy chyb. Vektorové vyhledávání zachycuje synonyma a přirozený jazyk, protože embeddingy blízkých pojmů jsou umístěny vedle sebe v prostoru.
Slabé stránky metod:
- BM25 si špatně poradí se synonymy.
- KNN ignoruje přesné identifikátory bez sémantické zátěže.
Hybridní extrakce zvyšuje recall pro smíšené dotazy a minimalizuje potřebu složité logiky.
Scénáře použití
Hybridní vyhledávání je aktuální v následujících případech:
- Dotazy se záměrem a detaily, například
python error 403 forbidden– kód chyby v BM25, popis v KNN. - RAG-pipeline pro LLM – poskytnutí nejrelevantnějších fragmentů.
- Katalogy se strukturovanými (modely produktů) a nestrukturovanými daty (popisy).
- Nepředvídatelné uživatelské vzorce – přesné fráze nebo popisný jazyk.
V e-commerce hybrid zpracovává názvy, popisy a vizuální embeddingy paralelně.
Mechanismus RRF
RRF agreguje pořadí bez normalizace skóre. Vzorec: 1 / (rank_constant + rank). Ve výchozím nastavení rank_constant=60.
Příklad sloučení top-3:
| Dokument | BM25 pořadí | KNN pořadí | RRF skóre |
|----------|-----------|----------|----------|
| Doc A | 1 | 2 | 0.0325 |
| Doc C | 3 | 1 | 0.0323 |
| Doc B | 2 | - | 0.0161 |
| Doc D | - | 3 | 0.0159 |
Doc A vede díky vysokým pozicím v obou seznamech. RRF je preferováno před sloučením podle skóre, protože nevyžaduje kalibraci škál.
Poddotazy (MATCH a KNN) se provádějí paralelně, filtry se aplikují na všechny.
Praktický příklad se znalostními databázemi
V support-databázích dotaz "Nemohu se připojit k serveru" + kód E-5020.
KNN-výsledky:
| # | Nadpis | Vzdálenost |
|---|-----------|------------|
|1| E-5030: DNS | 0.572 |
|2| E-2091: Timeout | 0.583 |
|3| E-5020: SSL | 0.605 |
Hybrid s MATCH('E-5020') a KNN:
SELECT title, hybrid_score()
FROM support_articles
WHERE knn(embedding, 'can not connect to the server')
AND MATCH('E-5020')
LIMIT 5
OPTION fusion_method='rrf';
| # | Title | Hybridní skóre |
|---|-------|--------------|
|1| Error E-5020: SSL Certificate Mismatch | 0.032 |
|2| E-5030 | 0.016 |
|3| E-2091 | 0.016 |
E-5020 se posouvá na první místo: BM25 zachycuje přesný kód, KNN kontext.
Spuštění hybridního vyhledávání
Automatický režim s hybrid_match():
SELECT id, hybrid_score()
FROM products
WHERE hybrid_match('running shoes');
JSON API:
POST /search
{
"table": "products",
"hybrid": { "query": "running shoes" }
}
Manticore generuje embeddingy, provádí vyhledávání a slučuje výsledky.
Explicitní kontrola:
SELECT id, hybrid_score()
FROM products
WHERE match('running shoes')
AND knn(embedding, (0.12, 0.45, 0.78, ...))
OPTION fusion_method='rrf';
Dostupné metriky: hybrid_score(), weight() (BM25), knn_dist().
Nastavení sloučení
rank_constant: dominance top-pozic (nízké hodnoty zesilují).fusion_weights: váhy poddotazů, např. (text=0.5, knn=0.3).window_size: objem mezivýsledků.
Více KNN:
SELECT id, hybrid_score()
FROM products
WHERE match('running shoes') 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);
Co je důležité
- Hybridní vyhledávání rozděluje signály: identifikátory v BM25, význam v KNN.
- RRF zajišťuje stabilní sloučení bez kalibrace.
- Podpora více vektorových prostorů pro multimodální data.
- Paralelní provádění minimalizuje latenci.
- Automatická generace embeddingů zjednodušuje integraci.
— Editorial Team
Zatím žádné komentáře.