Zpět na domů

Hybridní vyhledávání Manticore: BM25 + KNN

Hybridní vyhledávání v Manticore Search spojuje BM25 a KNN pomocí RRF pro optimální relevanci. Vhodné pro RAG, support a e-commerce. Uvedeny příklady kódu a nastavení.

Hybridní vyhledávání v Manticore: RRF a příklady
Advertisement 728x90

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.

Google AdInline article slot

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:

Google AdInline article slot
  • 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:

Google AdInline article slot

| 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

Advertisement 728x90

Číst dál