22 / 28
Как совместить несколько способов поиска в RAG: поиск по ключевым словам (BM25), плотные и разреженные векторы (SPLADE) — и как объединять их выдачи через RRF или взвешенное слияние?
Гибридный поиск в проде — три поисковика параллельно: BM25 (по ключевым словам, k1=1.2, b=0.75) для точных совпадений — артикулов, аббревиатур, кодов; плотные эмбеддинги (косинусная близость) — для поиска по смыслу; SPLADE (разреженный нейросетевой поиск, Formal et al. 2021) — берёт лучшее от обоих. Выдачи объединяют через Reciprocal Rank Fusion (RRF) — «слияние по обратному рангу»: RRF(d) = Σ 1/(k + rank_i(d)), обычно k=60 (Cormack et al. 2009). Его плюс в том, что он смотрит только на места в выдаче и не требует приводить оценки разных поисковиков к общей шкале. Альтернатива — взвешенное слияние с нормализацией оценок и подбором веса на отложенной выборке. Qdrant поддерживает SPLADE и fusion: rrf прямо в Query API.