Пока индустрия меряется размерами языковых моделей, в основе большинства систем поиска по-прежнему лежит скромная формула родом из 1994 года. Об этом напоминает канал «Технологии Яндекса»: алгоритм BM25, чьё название расшифровывается как Best Matching, а цифра означает номер версии, к середине 2010-х стал мировым стандартом ранжирования.

Что вообще решает поиск

Любая система поиска по тексту делает две вещи: сначала вытаскивает из миллионов документов те, где вообще встречаются слова из запроса, а потом выстраивает их по релевантности. За вторую часть и отвечает BM25. Его использовали интернет-поисковики вроде Google — сегодня они работают на более сложных алгоритмах, но большинство локальных поисков, например по маркетплейсам, всё ещё держится на этой формуле.

Три веса одного слова

Алгоритм оценивает каждый документ по отдельным словам запроса. Если пользователь ищет «пирог с яблоками и корицей», в игру вступают три критерия.

Первый — редкость слова во всей базе. «Корица» встречается нечасто, значит, это сильный сигнал. «Яблоки» попадаются чаще, сигнал слабее. А союз «и» есть везде и на релевантность не влияет вовсе.

Второй — частота слова внутри документа, но с защитой от накрутки. Упоминание «корицы» трижды поднимет оценку, а вот тридцать раз — уже нет: BM25 не позволит искусственно раздуть релевантность повторами.

Третий — длина документа. Короткая карточка товара и большой лонгрид — разные весовые категории, и алгоритм выравнивает их, чтобы точный рецепт не проиграл статье «История яблочных пирогов в мировой кухне».

Каждый критерий превращается в число и подставляется в итоговую формулу, которая и выставляет документу оценку.

Почему нейросети его не съели

Казалось бы, языковые модели должны были отправить лексический поиск на пенсию. Но у BM25 есть козырь: он видит слова буквально. Артикулы, коды ошибок, имена функций — для нейросети это может быть числом без контекста, а для BM25 — конкретным словом, которое либо есть в документе, либо нет.

Поэтому сегодня их чаще не противопоставляют, а складывают: один ищет по словам, второй по смыслу, результаты объединяют. Так устроен гибридный поиск, на котором, по данным канала, построено большинство RAG-систем — тех, что отвечают на запросы по базам данных.

Что это значит

Для читателя — простая мысль: «умный» поиск не отменяет «точный». Если вы строите поиск по своему продукту, каталогу или внутренней базе знаний, начинать с BM25 всё ещё разумно — это дёшево, предсказуемо и хорошо ловит точные совпадения. А сверху уже можно добавить смысловой слой. Как сообщает «Технологии Яндекса», именно такая связка сегодня и стала рабочей нормой.

Источник: Telegram: Технологии Яндекса

Понравился материал?
Подписывайтесь — так вы не пропустите новые.
RSS-лента

Комментарии 6

Будьте вежливы — это делает обсуждение лучше
МС
Марина Соколова
Забавно, что формула из 90-х спокойно пережила несколько волн хайпа. Простое и предсказуемое решение, к которому всегда можно вернуться, когда нейросеть стоит слишком дорого.
A
alex88
а можно поподробнее про параметр k1 и b в формуле? в статье их не раскрыли, а на практике подбор этих коэффициентов и решает половину задачи
Р
РедакцияРедакция
Алексей, спасибо за вопрос. k1 управляет насыщением по частоте слова (обычно 1.2–2.0), b — силой нормализации по длине документа (около 0.75). Дефолтные значения работают неплохо, но под конкретную коллекцию их действительно стоит подбирать.
ИК
Ирина К.
У нас на маркетплейсе внутренний поиск до сих пор на BM25 и ничего, жалоб мало. Добавляли смысловой слой в тестовом режиме — на артикулах стало хуже, откатили.
О
Олег
Согласен с Ириной — на точных совпадениях BM25 вообще сложно обогнать. Коды ошибок и артикулы только он нормально и ловит.
DP
dmitry_p
Статья хорошая, но хотелось бы увидеть конкретные числа: насколько гибридный поиск лучше чистого BM25 в реальных метриках? У нас в проекте разница оказалась меньше, чем ожидали.