BM25 против RAG: почему поиск по ключевым словам и по смыслу выдает разные ответы
BM25 по-прежнему остаётся опорой классического поиска, но он работает только с точными словами из запроса. RAG с векторными эмбеддингами решает другую задачу: н
BM25 остаётся базовым механизмом поисковой выдачи в Elasticsearch и Lucene, но у него есть жёсткое ограничение: он понимает слова, а не смысл. На этом фоне RAG с векторными эмбеддингами решает другую задачу — находит релевантные фрагменты даже тогда, когда в запросе и документе нет точного совпадения формулировок.
Как работает BM25 BM25 ранжирует документы по трём главным сигналам:
сколько раз термины из запроса встречаются в тексте, насколько эти термины редки во всей коллекции и не слишком ли документ длинный по сравнению со средним. Из этих факторов складывается итоговый score, по которому система сортирует результаты. Такой подход десятилетиями держится в основе классического поиска, потому что он быстрый, понятный и не требует отдельной модели для интерпретации смысла запроса.
Отдельно важен механизм насыщения term frequency. Если слово встретилось пять раз, это обычно заметно повышает релевантность; если пятьдесят — прирост уже почти не меняет картину. Параметр k1 регулирует, как быстро срабатывает это насыщение, а параметр b — насколько сильно наказывать длинные документы.
Слой IDF, то есть обратной частоты документа, усиливает редкие слова и ослабляет общие. Но фундаментальный минус у BM25 не исчезает ни при какой настройке: алгоритм видит текст как набор токенов и не различает контекст, порядок слов и смысл.
Где выигрывает RAG Векторный поиск, который обычно лежит внутри RAG-пайплайна, работает иначе.
Система превращает и документы, и сам запрос в плотные числовые векторы через embedding-модель, а затем сравнивает их по cosine similarity. В примере из статьи для этого используется модель OpenAI text-embedding-3-small с размерностью 1536. За счёт этого запрос про «поиск похожего контента без точного совпадения слов» может вывести релевантный текст, даже если нужные слова в документе вообще не повторяются.
«Ни один из подходов не лучше во всём: они ошибаются в противоположных направлениях».
Именно здесь появляется практический компромисс. BM25 можно поднять локально: токенизация, индекс, арифметика — и поиск готов. Векторный ретривер требует API-вызовов на этапе индексации и на этапе запроса, а ещё хранения самих эмбеддингов. Для маленького набора это мелочь, но на сотнях тысяч или миллионах чанков такая схема превращается в инфраструктурное и финансовое решение. Зато она лучше переживает синонимы, перефразирования и запросы, в которых пользователь формулирует смысл, а не точные ключевые слова.
Практика и компромиссы В статье сравнение построено на простом
Python-демо с 12 текстовыми чанками про BM25, TF-IDF, RAG, трансформеры, Django, PostgreSQL и другие темы. Для BM25 используется библиотека rank_bm25, а для эмбеддингов — OpenAI API и обычный расчёт cosine similarity. Дальше один и тот же запрос гоняют через оба ретривера и смотрят, какие фрагменты попадают в топ. Это наглядно показывает: системы отвечают на один вопрос, но приходят к результату через совершенно разные сигналы.
- BM25 ищет точные слова из запроса и легко объясняет, почему документ оказался выше.
- Векторный поиск ищет смысл и лучше подхватывает синонимы и перефразировки.
- BM25 не требует GPU, модели и внешних вызовов.
- Эмбеддинги требуют отдельного индекса, вызовов модели и места для хранения векторов.
- Гибридный поиск объединяет оба подхода и поэтому стал стандартом для продакшена. Вывод статьи довольно приземлённый: спорить, что «лучше», бессмысленно вне контекста задачи. Если нужен быстрый, дешёвый и прозрачный поиск по явным ключевым словам, BM25 по-прежнему очень силён. Если важнее семантическое совпадение и устойчивость к разным формулировкам, выигрывает dense retrieval. Поэтому в реальных RAG-системах всё чаще сначала комбинируют обе выдачи, а уже потом отдают кандидатов в LLM для ответа.
Что это значит
Для команд, которые строят поиск по базе знаний, FAQ, PDF-документам или внутренним вики, это хороший ориентир без лишней магии. BM25 не устарел, а RAG не отменяет классический поиск. Наоборот, самые надёжные системы сегодня собираются из обоих слоёв: один даёт точность по ключевым словам, второй — понимание смысла и перефразировок.