Skip to main content

Гибридный поиск (Dense + Sparse Search)

Архитектура ретривала в современных RAG-системах, сочетающая семантический векторный поиск (Dense Embeddings) с классическим полнотекстовым индексированием по ключевым словам (Sparse / BM25) через алгоритмы слияния рангов (RRF).

1. Обзор концепции и системная проблема

На старте создания RAG-систем инженеры часто полагаются исключительно на векторные базы данных: текст разбивается на чанки, пропускается через модель эмбеддингов и записывается в индекс HNSW.

В продакшене такой подход неизбежно сталкивается с «векторной слепотой»:

  1. Провал на точных идентификаторах: Когда инженер ищет статус кода ERR_CONNECTION_REFUSED, векторный поиск возвращает общие статьи о сети, но пропускает точную строку в логах.
  2. Провал на редких собственных названиях: Новые названия фреймворков, уникальные фамилии или специфические константы проекта не имеют плотного представления в весах модели эмбеддингов.
  3. Ограниченность классического полнотекстового поиска (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. Технический пайплайн и внутренняя механика

Жизненный цикл гибридного запроса в поисковом движке:

  1. Dual Query Dispatch (Параллельная рассылка): Входной запрос пользователя одновременно транслируется в вектор (через embedding API) и в текстовый запрос для полнотекстового парсера (FTS query).
  2. Concurrent Index Lookup (Параллельный поиск):
    • Ветка А: векторный движок сканирует HNSW-граф и возвращает топ-50 кандидатов по косинусной схожести.
    • Ветка Б: инвертированный индекс находит топ-50 кандидатов по формуле BM25.
  3. Score Normalization & RRF Aggregation (Слияние): Списки кандидатов дедуплицируются по ID документа. Каждому кандидату начисляется интегральный балл RRF за его позицию в обеих выдачах.
  4. 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$ превращает гибридный поиск в обычный векторный, сводя на нет затраты на поддержку инвертированного индекса.
/ Частые вопросыSchema.org FAQPage

FAQ: Гибридный поиск (Dense + Sparse Search)

Векторные модели проецируют содержание в непрерывное пространство и прекрасно понимают синонимы («машина» ≈ «автомобиль»). Однако они практически «слепы» к точным буквенно-цифровым последовательностям: артикулов деталей, номеров ошибок (например, `0x80070005`), названий функций кода (`getUserBySessionId`) или хешам коммитов Git, где требуется 100% точное символьное совпадение.
/ Внутренняя перелинковка
Все термины
Промпты и RAG

Переранжирование (Cross-Encoder Reranking)

Двухэтапная методология поиска в RAG-системах: быстрый первичный отбор кандидатов (Bi-Encoder / BM25) с последующим точным ранжированием через полносвязную кросс-энкодерную модель (Cross-Encoder / Cohere Rerank / BGE-Reranker).

Читать термин
Промпты и RAG

Векторные базы данных (Vector DBs & ANN Search)

Специализированные СУБД и расширения (Qdrant, pgvector, Milvus, Chroma, Turso), оптимизированные для хранения миллионов многомерных векторов и сверхбыстрого приближенного поиска ближайших соседей (Approximate Nearest Neighbors).

Читать термин
Промпты и RAG

RAG (Retrieval-Augmented Generation)

Архитектурный паттерн корпоративного AI, который динамически обогащает контекстное окно модели релевантными верифицированными знаниями из внешних хранилищ (векторных баз, графов, полнотекстовых индексов) перед генерацией финального ответа.

Читать термин
Промпты и RAG

Чанкинг документов (Chunking Strategies)

Методология декомпозиции массивных документов и кодовых баз на информационно самодостаточные фрагменты (чанки) для генерации векторных эмбеддингов и точного поиска в RAG-системах.

Читать термин