Алгоритм BM25 жив: как логика SEO-ранжирования из 90-х пережила нейросети и осталась первым фильтром ИИ-поиска
Есть предсказание, которое звучит уже лет десять точно: «нейросети заменят алгоритм BM25». Мол, раз поисковая программа научилась понимать смысл текста, зачем тогда ей архаичный счётчик слов из 1994 года? Ирония в том, что ровно наоборот. BM25 не только не исчез – он до сих пор стоит в самом основании выдачи Google и Яндекса.
Нейросети не вытеснили алгоритм BM25, а встали на него сверху. И чем умнее становится ИИ, тем отчётливее видно, что этот «древний» алгоритм никто выбрасывать как инструмент ранжирования не собирается. Вопрос ближайших лет – не в том «умрёт ли BM25», а в том «как именно он продолжит работать первым рубежом, через который проходит каждое слово запроса».
Что такое алгоритм BM25 без формул: умный счётчик слов
Алгоритм BM25 – это одна из функций ранжирования, которая оценивает, насколько документ релевантен запросу. Если точнее: BM25 – это умный счётчик слов. Не прямолинейный из прежних лет, пересчитывающий «сколько раз ключ встретился», а современный, который взвешивает каждое совпадение с учётом трёх нюансов.
Придумал его Стивен Робертсон, и за этот алгоритм в 2008 году получил премию Джерарда Солтона, высшую награду отрасли за вклад в информационный поиск. Согласитесь, не каждую «формулу из 90-х» отмечают двадцать лет спустя.
В этих трёх нюансах – вся природа логики BM25.
- Нюанс 1 – редкость слова. Если в запросе есть термин, который почти нигде не встречается, то его наличие в документе значит непропорционально много. Слово «BM25» специфичнее, чем «алгоритм», а термин «алгоритм» – специфичнее, чем «текст». Умный счётчик это понимает и даёт редким словам больше веса. Вырос этот приём из TF-IDF – точнее, BM25 стал его эволюцией, решив главные болезни предшественника. Но в это сейчас можно не углубляться, важна сама логика: редкость термина – сигнал к вниманию.
- Нюанс 2 – насыщение. Один раз, допустим, слово – «поиск» в тексте очень информативно. Второй – уже меньше. Двадцатый – почти ничего не добавляет. Простой счётчик этого не видит и накручивает вес до бесконечности. BM25 видит: он начисляет очки с затуханием, так что десятое вхождение весит не в десять раз больше первого, а лишь чуть-чуть. Повтор перестаёт быть прямолинейным складыванием веса.
- Нюанс 3 – длина документа. Короткий текст, где термин встретился трижды, на самом деле «плотнее» по этому термину, чем простыня на десять тысяч знаков, где он мелькнул те же три раза. BM25 это нормализует и ставит короткий и длинный документ в равные условия – примерно, с поправкой, чтобы коротышка не выигрывал только за счёт краткости.
И ещё одно важное допущение, о котором не пишут в рекламных разборах. Алгоритм BM25 смотрит на текст как на «мешок слов». Ему всё равно, в каком порядке стоят термины, и что фраза означает по смыслу целиком. Важно только, какие слова из запроса в документе есть и как часто. Порядок, контекст, смысл – этого для BM25 не существует.
Кроме того, существуют модификации алгоритма BM25, которые решают специальные задачи в ранжировании:
- BM25F – модификация, которая разбивает документ на поля (заголовок, основной текст, метаданные) и даёт каждому полю свой вес. Идея честная: слово в заголовке значит больше, чем слово в подвале. Именно на этом разном весе полей и держится привычка придавать ключевую роль SEO-заголовку – поисковик придаёт заголовкам больший вес.
- BM25+ – вводит нижнюю границу lower bound, добавляя небольшую константу, чтобы оценка не проваливалась в минус и не «наказывала» документ за неполное покрытие. Это одна из попыток «починить» классическую формулу под реальные запросы, где термин не обязан встречаться везде.
- BM25L – специально адаптирован для работы с длинными текстами. Классический BM25 несправедливо «размазывает» вес термина по большому объёму, а суть атрибута L – сглаживание этого перекоса.
- BM25S – сверхбыстрая реализация ускоряет расчёт в сотни раз, она важна именно в контексте тезиса: BM25 выживает за счёт дешевизны/скорости. Именно поэтому он и выживает в эпоху нейроинтеллекта – скорость и низкая цена, а не «ум».
BM25 не понимает смысл – и именно поэтому его не выкинут
Казалось бы, вот слабое место. Алгоритм не понимает, что «заяц» – это и животное, и безбилетник, и известный мем. Для него это просто строка символов. Зачем держать в системе программный блок, который слеп к смыслу, когда рядом есть нейросети, прекрасно понимающие смысл текстов?
Потому что задумка BM25 – иная: слепота к смыслу – это сверхточность к форме. Есть целый класс запросов, где важен не смысл, а точное совпадение: номер ошибки, артикул детали, штрих-код, спецтермин, фамилия в документе, точная фраза из договора, узкосмысловая фраза. В этих случаях семантический поиск, который «понимает обобщённо», может и промахнуться – подставит близкое по смыслу, но не то. А BM25 не галлюцинирует близостью: слово либо есть, либо его нет. Для точных совпадений лексический поиск надёжнее плотного и смыслового.
Вот где разворачивается главное. «Не понимает смысл» – это не баг BM25, а его роль. Кто-то в системе обязан помнить точную форму, пока семантический этаж витает в значениях. И этот «кто-то» – как раз старый счётчик.
Где BM25 всё-таки проигрывает – и почему это не отменяет его роли
Слепота к смыслу – это не только роль, это ещё и цена. Стоит честно назвать, где умный счётчик пасует, иначе разговор получится однобоким.
Первое – синонимы и перефразировка. Для BM25 «автомобиль» и «машина» – два разных токена, без единого пересечения. Текст написан по делу, но другими словами, для лексического счётчика его словно не существует. Именно эту дыру и закрывает плотный семантический поиск: он видит смысл, а не совпадение букв.
Второе – омонимы. Тот самый «заяц»: зверь, безбилетник или солнечный блик. BM25 не отличает их друг от друга – ему всё равно, что означает слово, он считает, сколько раз оно встретилось. На таком запросе без понимания контекста не обойтись.
Третье – порядок и связность. «Кошка съела мышь» и «мышь съела кошку» для BM25 – почти одно и то же: те же слова, та же частота. Смысл перевёрнут, а счётчику невдомёк.
И вот тут важно не сделать поспешный вывод. Все эти провалы – не аргумент выбросить BM25 на свалку истории. Это аргумент «не рассчитывать на него там, где решает смысл». Слабые места лексики ровно и объясняют, почему над ней встал семантический слой: не вместо, а поверх. BM25 остаётся первым рубежом, а дыры затыкает второй.
Почему нейросети не заменили BM25: экономика вычислений
Теперь главный вопрос – почему ИИ не просто не свернул BM25, а в каком-то смысле на него опёрся. Ответ прозаичнее любого хайпа: это деньги на вычисления – экономика и ресурсы.
Представьте объём. В индексе поисковой системы миллиарды и миллиарды документов. На каждый пользовательский запрос прогнать всю эту массу через тяжёлую нейросеть – это безумная стоимость. Эмбеддинги, векторный поиск, модели уровня BERT или MUM, YATI в Яндексе – всё это дороже лексического счёта на порядки. Поэтому работает разделение труда, и оно не про «слабость» ИИ, а про трезвый расчёт.
Первым на амбразуру идёт BM25. Он за копейки и за миллисекунды пробегает по индексу и отсекает почти всё, оставляя узкий пул кандидатов на поисковую выдачу – тех, где термины запроса реально встречаются и лежат в нужных зонах документа. И только этот пул, а не весь интернет, попадает на «второй этаж» – к нейросети, которая переранжирует верхушку уже по смыслу. Плюс поведенческие и многие сотни прочих сигналов туда же.
Заметьте, как это переворачивает привычный нарратив: «Нейросети заменили BM25» – неверно, верно: «нейросети встали над BM25». Старый счётчик теперь не финишёр выдачи, а привратник, но привратник, через которого проходит каждое слово. Не пройдёшь начальный рубеж подмастерья – второй этаж тебя просто не увидит.
Как алгоритм BM25 эволюционирует, не превращаясь в ИИ, а срастается с ним
Дальше – про то, куда направление запрос/поиск движется. И тут легко наступить на грабли и выдумать красивый ярлык вроде «ИИ-BM25». Такого термина в SEO-индустрии нет. Не потому, что не додумались, а потому, что он ложно описывает процесс. BM25 не превращается в отдельную нейросеть. Он эволюционирует как «аналоговый» лексический поиск и параллельно учится работать в паре с нейро-семантическим «цифровым». Две разные вещи.
По линии самого BM25 идут модификации, которые я обозначил выше: BM25F, BM25+, BM25L и BM25S. Но самое интересное – не модификации по отдельности, а гибридный поиск.
Это слияние миров: «механический» лексический поиск (тот самый BM25 по терминам) и плотный векторный (по эмбеддингам, то есть, по смыслу) объединяются. А результаты склеивают, например, через Reciprocal Rank Fusion – метод, который честно смешивает позиции из обоих списков, не отдавая предпочтение ни одному. Вот она, та самая «корректировка с учётом умнеющего ИИ», которую так хочется поименовать в что-то, начинающееся с ИИ или нейро. Правильное слово – не «ИИ-BM25», а «гибрид»: два независимых механизма складываются в один ответ.
Есть факт, который пробивает самый живучий стереотип. В исследованиях zero-shot (без дообучения), где ретривер (компонент системы, который отвечает за поиск) не дообучают под конкретный корпус, а простой BM25 на задачах с точными совпадениями обходит дорогие нейросетевые ретриверы. Не «почти догоняет», а именно обходит.
Классический эталон BEIR прямо показал: на незнакомом домене BM25 остаётся устойчивым базовым методом и в сумме превосходит первые dense-модели, оценивавшиеся в zero-shot. Даже авторы DPR – первого нейросетевого ретривера, который «победил» BM25, – зафиксировали, что на запросах, где доминирует именованная сущность, точный термин «Berlin Wall» перевешивает смысловой поиск. Потому что там, где решает точная форма, а не оттенок смысла, лексический умный счётчик BM25 – до сих пор король. Нейросети уступают ему эту нишу сами – и это не поражение ИИ, а зрелое разделение ролей.
Что проверить, чтобы текст прошёл первый рубеж BM25
Если сжать практику до рабочего списка, вот что стоит держать перед глазами, когда пишете под поиск:
- Точный запрос положить в Title. Это самая весомая зона документа. Запрос там должен быть в естественной форме, а не вбит через силу.
- H1 развивает Title, а не дублирует его дословно. Двух одинаковых «шапок» не надо – второй рубеж это считает переоптимизацией.
- Ключ в первых 100 словах. Начальный абзац для BM25 «весомее» подвала – там термин должен прозвучать по делу, а не потому что «надо».
- Мера, а не переспам. Ориентир – 1-3 естественных вхождения на 1000 знаков. Чаще – уже не релевантность, а сигнал манипуляции.
- Объём под медиану топа. Сильно короче или заметно длиннее конкурентов по запросу – повод проверить, не недодали ли вы сути или не размазали её по пространству текста.
- Длина и насыщение работают вместе. BM25 «насыщается»: десятое упоминание ключа не равно первому. Одно точное вхождение в нужной зоне сильнее пяти случайных.
- Смысл – на второй рубеж. Первый вы закрыли лексикой и зонами. Теперь проверьте, что текст отвечает на вопрос пользователя, а не просто «содержит слова».
Начальный рубеж вы проходите лексикой, другой – смыслом. Текст, хороший только для одного, до пользователя не доберётся.
Что алгоритм BM25 значит для того, кто пишет тексты
Перейдём от архитектуры поиска к практике, потому что ради неё всё и затевалось. Если умный счётчик BM25 – 1-ый фильтр ранжирования, а нейросеть – 2-ой, то у текста два рубежа, и оба надо пройти. Ответы на них разные.
BM25-рубеж любит точность. Чёткие вхождения тех слов, которыми реально ищут тему. Понятное разбиение на зоны – заголовок, подзаголовки, где термин конкретно расположен и в какой позиции по силе. Ясная структура, по которой счётчику легко «прочитать» документ. Вспомните про BM25F: термин в Title и H1 весит сильнее, чем в подвале. Поэтому первый рубеж проходится лексикой и правильной расстановкой по полям – ключ в заголовке, в подзаголовке, в начале текста.
Но это не значит – «набить ключи до тошноты» – мы разбирали в «Правильный SEO текст», «Как понять смысл текста», и «Хорошее SEO сегодня», что при таком насыщении поисковики давно минусуют контент с лишними повторами. Это означает: термины запроса в текстах должны быть, они должны стоять на своих местах и с нужным по смыслу количеством.
Второй рубеж любит глубину. Смысл, который логика BM25 в принципе не видит. Полноту раскрытия темы, соответствие интенту, смежную семантику – LSI-соседей, по которым машина понимает, что автор разбирается в вопросе, а не вставил слово для галочки. Здесь текст оценивают уже не по терминам, а по смыслу – как раз тем способом, которым мыслят нейросети – понял ли читатель, про что текст, ушёл ли он с ответом.
Отсюда простой, но неочевидный вывод: плох текст, который хорош только для одного рубежа. Если он напичкан точными вхождениями, но пуст по смыслу – пройдёт BM25 и свалится на этаже ИИ-ранжирования. Если он глубок и красив, но термины запроса в нём не проступают явно для BM25 – ИИ, возможно, оценил бы его по достоинству, вот только до нейроинтеллекта он не доедет, его отсечёт первый фильтр.
Хороший текст проходит оба рубежа. И тонкость в том, что если с критериями BM25 вебмастерам всё более-менее понятно, то проверить потенциал «прохождения» второго нейро-рубежа глазом почти невозможно. Смысловую полноту, глубину раскрытия, соответствие интента не видит ни счётчик слов, ни автор публикации. Для этого нужен новый SEO-инструмент аналитики смыслов, который «считает» смысл так же, как читает его семантический этаж ИИ-поиска. Рубеж первый проверяется вхождением терминов, рубеж второй – семантическим SEO-анализом текстов, который измеряет глубину раскрытия темы и закрытость семантического поля запроса, – то, на что BM25 слеп по своей природе. Индекс релевантной привлекательности IRAT как раз и есть попытка замерить ту «второрубежную» глубину, которую видит ИИ, но не видит счётчик.
Алгоритм BM25 не умрёт. Он будет меняться, но останется первым рубежом оценки контента
Соберу сказанное в три лаконичные мысли.
Первая: BM25 жив не по инерции, а по расчёту. Он дёшев, быстр и честен к форме – а точные совпадения никуда не исчезнут, пока люди ищут по артикулам, ошибкам и редким терминам.
Вторая: нейросети не убили BM25, они его пользуют. Разделение труда «BM25 – фильтрует на входе, ИИ – понимает суть» – не временный компромисс, а закреплённая архитектура, которая только крепнет с удешевлением лексического поиска и удорожанием векторного.
Третья, и для вас – главная: кто уловил это разделение, тот и пишет тексты, которые проходят оба рубежа, попадая в ТОП. Точные термины для счётчика, ясная структура для него же – и глубокая, полная смысла тема для нейросети, построенная на фразах из ключей. Одно без другого даёт текст-инвалид, который хорош ровно на одном этаже.
Алгоритму BM25 – тридцать лет. Он не превратится в нейросеть и не растворится в ней. Он останется тем, чем был всегда: первым рубежом, через который проходит каждое слово запроса. А вот пройдёте ли вы второй рубеж – это уже вопрос смысла, а не частоты и количества.
