Гібридний пошук (Dense + Sparse Search)(Гібридний семантичний та ключовий пошук (BM25 + Dense))
Архітектура ретривелу в сучасних RAG-системах, що поєднує семантичний векторний пошук (Dense Embeddings) із класичним повнотекстовим індексуванням за ключовими словами (Sparse / BM25) через алгоритми злиття рангів (RRF).
1. Огляд концепції та системна проблема
На старті створення RAG-систем інженери часто покладаються виключно на векторні бази даних: текст розбивається на чанки, пропускається через модель ембеддінгів і записується в індекс HNSW.
У продакшені такий підхід неминуче зіштовхується з «векторною сліпотою»:
- Провал на точних ідентифікаторах: Коли інженер шукає статус коду
ERR_CONNECTION_REFUSED, векторний пошук повертає загальні статті про мережу, але пропускає точний рядок у логах. - Провал на рідкісних власних назвах: Нові назви фреймворків, унікальні прізвища чи специфічні константи проєкту не мають щільного представлення у вагах моделі ембеддінгів.
- Обмеженість класичного повнотекстового пошуку (BM25): Класичний пошук, навпаки, не здатний зрозуміти абстрактні концепції, синоніми та перефразування.
Гібридний пошук (Hybrid Search) синтезує найкраще з обох світів: він паралельно шукає документи за точними ключовими словами (Sparse/BM25) та за семантичним змістом (Dense/Vectors), після чого об'єднує результати в єдину збалансовану видачу.
2. Архітектурна таксономія та ментальна модель
Гібридна пошукова система складається з трьох ключових архітектурних блоків:
- 1. Шар розрідженого пошуку (Sparse / Lexical Retrieval): Алгоритм BM25 або TF-IDF над інвертованим індексом. Рахує точну частоту входження термінів з урахуванням довжини документа. Гарантує знаходження точних збігів слів, артикулів, змінних і номерів помилок.
- 2. Шар щільного пошуку (Dense / Semantic Retrieval): Векторний пошук за евклідовою або косинусною відстанню (HNSW/IVF). Відповідає за вилучення документів зі схожим змістом, навіть якщо в запиті та тексті немає жодного спільного слова.
- 3. Шар злиття рангів (Fusion Layer):
- Reciprocal Rank Fusion (RRF): не залежить від шкал балів, оперує суто позиціями (рангами) у кожному списку. Найбільш стабільний стандарт.
- Linear Weighted Fusion (Альфа-злиття): нормалізація балів і зважене додавання: $\text{Score} = \alpha \cdot S_{\text{dense}} + (1 - \alpha) \cdot S_{\text{sparse}}$.
- 4. Навчені розріджені моделі (Learned Sparse / SPLADE): Сучасний напрямок, що поєднує нейромережевий аналіз зі структурою інвертованого індексу, самостійно розширюючи запит важливими ключовими словами.
3. Технічний пайплайн та внутрішня механіка
Життєвий цикл гібридного запиту в пошуковому рушії:
- Dual Query Dispatch (Паралельне розсилка): Вхідний запит користувача одночасно транслюється у вектор (через embedding API) і в текстовий запит для повнотекстового парсера (FTS query).
- Concurrent Index Lookup (Паралельний пошук):
- Гілка А: векторний рушій сканує HNSW-граф і повертає топ-50 кандидатів за косинусною подібністю.
- Гілка Б: інвертований індекс знаходить топ-50 кандидатів за формулою BM25.
- Score Normalization & RRF Aggregation (Злиття): Списки кандидатів дедуплікуються за ID документа. Кожному кандидату нараховується інтегральний бал RRF за його позицію в обох видачах.
- Final Cutoff & Re-ranking (Фінальна вибірка): Топ-$K$ найвищих за рейтингом документів передаються на фінальний етап крос-енкодерного реранкінгу (Re-ranker) або одразу в контекст LLM.
4. Практичні інженерні сценарії в продакшені
01. Інтелектуальний пошук у кодових репозиторіях
Розробник пише: «де реалізовано кешування сесій redis».
- BM25 миттєво знаходить файли, де згадується константа
'REDIS_SESSION_KEY'. - Dense пошук підтягує модуль авторизації, де описано стратегію інвалідації сесій без прямого слова «кешування».
- RRF піднімає на перше місце файл
auth/session-cache.ts, який присутній в обох видачах.
02. E-Commerce пошук із сумішшю характеристик і назв
Користувач шукає: «тихий бездротовий пилосос v15». BM25 знаходить точну модель Dyson V15, а Dense-пошук фільтрує модифікації за семантикою низького шуму, забезпечуючи ідеальну точність конверсії.
03. Медичні та фармацевтичні довідники
Пошук за симптомами («тяжкість у правому підребер'ї») у поєднанні з точним латинським найменуванням діючої речовини препарату або медичним кодом діагнозу за МКХ-10.
5. Підводні камені, типові помилки та безпека
- Несумісність шкал сирих балів (Score Incommensurability): Найгрубша помилка — пряме додавання косинусної близькості (від 0 до 1) до балу BM25 (який може сягати 25 і більше). Це повністю нівелює векторну складову. Завжди використовуйте RRF або Min-Max нормалізацію.
- Подвійне навантаження на інфраструктуру (Latency Overhead): Послідовне виконання спочатку BM25, а потім векторного пошуку подвоює затримку. Обидва запити повинні виконуватися суворо асинхронно через
Promise.all()або паралельні потоки БД. - Перекіс ваги $\alpha$ у крайні значення: Фіксація ваги $\alpha = 0.9$ перетворює гібридний пошук на звичайний векторний, зводячи нанівець витрати на підтримку інвертованого індексу.
FAQ: Гібридний пошук (Dense + Sparse Search)
Пов'язані терміни
Переранжування (Cross-Encoder Reranking)
Двоетапна методологія пошуку в RAG-системах: швидкий первинний відбір кандидатів (Bi-Encoder / BM25) із подальшим точним ранжуванням через повнозв'язну крос-енкодерну модель (Cross-Encoder / Cohere Rerank / BGE-Reranker).
Векторні бази даних (Vector DBs & ANN Search)
Спеціалізовані СУБД та розширення (Qdrant, pgvector, Milvus, Chroma, Turso), оптимізовані для зберігання мільйонів багатовимірних векторів та надшвидкого наближеного пошуку найближчих сусідів (Approximate Nearest Neighbors).
RAG (Retrieval-Augmented Generation)
Архітектурний патерн корпоративного AI, що динамічно збагачує контекстне вікно моделі релевантними верифікованими знаннями із зовнішніх сховищ (векторних баз, графів, повнотекстових індексів) перед генерацією фінальної відповіді.
Чанкінг документів (Chunking Strategies)
Методологія декомпозиції масивних документів і кодових баз на інформаційно самодостатні фрагменти (чанки) для генерації векторних ембеддінгів та точного пошуку в RAG-системах.