Алгоритм BM25
Поисковики

Алгоритм BM25

17 октября 2026

Как устроена формула BM25, что меняют параметры k1 и b, чем она отличается от TF-IDF и как сравнить по ней свою страницу с ТОП-10 Яндекса.

Алгоритм BM25 — вероятностная функция ранжирования, которая оценивает, насколько документ соответствует поисковому запросу. Она лежит в основе полнотекстового поиска в Elasticsearch, Lucene и OpenSearch, а её логику полезно понимать каждому, кто работает с текстами и SEO. Ниже — как устроена формула, что значат параметры k₁ и b, как посчитать балл вручную и где здесь подводные камни.

Что такое BM25 и зачем он нужен

BM25 (Best Match 25, она же Okapi BM25) — функция оценки релевантности документа запросу. Она основана на вероятностной модели информационного поиска: чем чаще слова запроса встречаются в документе и чем реже они встречаются в коллекции в целом, тем выше балл. Место BM25 в поиске простое — это слой ранжирования, который упорядочивает найденные документы по степени соответствия запросу.

От базовых моделей BM25 отличают две вещи. Первая — насыщение частоты термина: сотое вхождение слова добавляет к оценке почти ничего по сравнению с десятым. Вторая — нормализация длины документа: длинный текст не получает преимущества только за счёт объёма, его частоты делятся на относительную длину. Эти два механизма делают оценку устойчивой к переспаму и «раздутым» текстам.

Формула BM25 и её составляющие

Классический вид формулы для одного слова запроса:

score = IDF × (tf × (k₁ + 1)) / (tf + k₁ × (1 − b + b × dl / avgdl))

  • tf — сколько раз термин встречается в конкретном документе.
  • IDF — обратная документная частота: растёт, когда слово редкое в коллекции, и падает, когда оно есть почти везде.
  • dl — длина документа, avgdl — средняя длина документа по коллекции.
  • k₁ — параметр, управляющий скоростью насыщения частоты.
  • b — параметр силы нормализации по длине.

Смысл множителей. IDF задаёт вес слова: редкий термин различает документы сильнее, чем частый. TF-компонент отвечает за вклад повторений, но не линейно — дробь с k₁ в знаменателе приближается к потолку (k₁ + 1) и дальше не растёт. Длина документа стоит в знаменателе: чем документ длиннее средней длины по коллекции, тем сильнее наказаны его частоты. Для запроса из нескольких слов баллы по каждому термину складываются.

Параметры k₁ и b: настройка поведения алгоритма

k₁ управляет скоростью насыщения частоты термина. Меньшие значения — быстрое насыщение: уже третье-четвёртое вхождение почти не повышает балл. Большие значения растягивают рост, и частота учитывается дольше. Типичный диапазон — примерно от 1,2 до 2,0.

b регулирует силу нормализации по длине. При b = 0 длина документа не учитывается совсем, при b = 1 — полная нормализация относительно средней длины коллекции. Типичное значение — около 0,75: длина важна, но не абсолютна.

ПараметрЧто регулируетНизкое значениеВысокое значение
k₁Скорость насыщения частотыБыстрое насыщение, повторы почти не помогаютЧастота учитывается дольше
bСила нормализации по длине0 — длина игнорируется1 — полная нормализация по средней длине

Значения подбирают под конкретную коллекцию: если тексты в ней сильно различаются по длине, полезно поднять b; если важны точные повторы терминов — увеличить k₁. Универсально «правильных» чисел нет, есть диапазоны, которые чаще работают.

Пример расчёта BM25 вручную

Возьмём запрос из одного слова. Коллекция из трёх документов, средняя длина avgdl = 100 слов, IDF слова примем равным 2. Параметры k₁ = 1,5 и b = 0,75.

Документ A: слово встречается 2 раза, длина 50 слов.
Знаменатель: 2 + 1,5 × (1 − 0,75 + 0,75 × 50/100) = 2 + 1,5 × 0,625 = 2,9375.
Числитель: 2 × 2,5 = 5. Дробь: 5 / 2,9375 ≈ 1,702. Балл: 2 × 1,702 ≈ 3,40.

Документ B: слово встречается 4 раза, длина 200 слов.
Знаменатель: 4 + 1,5 × (0,25 + 0,75 × 2) = 4 + 1,5 × 1,75 = 6,625.
Числитель: 4 × 2,5 = 10. Дробь: 10 / 6,625 ≈ 1,509. Балл: 2 × 1,509 ≈ 3,02.

Документ A выигрывает: вдвое больше вхождений в B не компенсируют вчетверо большую длину. Частота насыщается, а нормализация по длине штрафует «раздутый» текст. Если бы IDF был выше (слово реже в коллекции), оба балла выросли бы пропорционально, но соотношение сохранилось бы.

Чем BM25 отличается от TF-IDF

В базовом TF-IDF вклад частоты линейный: каждое новое вхождение слова повышает вес на одну и ту же величину, насыщения нет. Длину учитывают грубо — делят число вхождений на число слов — или не учитывают совсем. Отсюда практическое следствие: модель чувствительна к переспаму и к текстам, которые набиты ключами для объёма.

BM25 меняет оба механизма: частота растёт нелинейно и упирается в потолок, а длина документа прямо штрафуется в знаменателе. В итоге выигрывает не текст, где ключ повторён больше раз, а текст, где слов запроса достаточно для его длины: механическое нагнетание частоты почти ничего не добавляет. Обе модели опираются на одни и те же данные: частоты терминов и статистику по коллекции.

Где BM25 применяется

Практическое применение — полнотекстовый поиск: Elasticsearch, OpenSearch, Lucene, ранжирование в поисковых системах и базах данных. Задача одна: подобрать релевантные документы по текстовому запросу и упорядочить их по баллу.

Ограничения известны: BM25 не учитывает семантику (синонимы, перефразировки) и порядок слов, поэтому в современных системах его используют в гибридных схемах вместе с векторным поиском. Отдельная тема — BM25F, вариант для полей: страница делится на зоны (title, заголовки, текст), частота слова в каждой зоне считается с поправкой на её длину, а затем зоны складываются с весами. Как именно текстовую релевантность учитывают Яндекс и Google, они не раскрывают: BM25 — модель, которая хорошо объясняет текстовую часть ранжирования, а не копия их алгоритмов.

BM25 и SEO: что важно учитывать

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

Практические выводы простые (подробнее — в статье «Текстовая оптимизация страницы»): естественные вхождения, точное соответствие поисковому намерению, внятная структура страницы и заголовки, которые содержат ключевые термины. Если по тексту страница уже на уровне конкурентов, дальше наращивать ключи бессмысленно — выигрыш дают другие факторы. Проверить, где вы находитесь относительно выдачи, можно инструментом «BM25 против ТОП-10»: он считает балл вашей страницы и сайтов из ТОП-10 Яндекса по одной фразе и показывает разрыв.

Как сравнить свою страницу с ТОП-10 в nextin.ru

  1. Введите одну ключевую фразу, под которую продвигается страница, и выберите регион.
  2. Укажите адрес своей страницы и нажмите «Сравнить с ТОП-10».
  3. Дождитесь расчёта — он занимает до минуты, потому что загружаются все страницы выдачи.
  4. Посмотрите сводку: ваш BM25 из 100, процент к середине ТОП-10 и к лидеру по тексту, место страницы среди конкурентов. Минус к медиане означает, что по тексту вы уступаете типичному сайту из выдачи.
  5. Откройте блок «Что сделать»: добавьте слова в title и H1, если они есть у большинства конкурентов, доберите упоминания в тексте до медианы.
  6. Проверьте строку «Связь BM25 с позицией»: если связь слабая, тексты в этой выдаче уже примерно равны — работайте с коммерческими факторами и удобством страницы.

Коллекцией для расчёта служит сама выдача: веса слов и средняя длина текста берутся из страниц ТОП-10, и ваша страница оценивается по тем же правилам. Баллы показываются и по зонам — title, H1, description и текст, — поэтому видно, что именно отстаёт. Варианты, которые сильнее по BM25, предложит нейросеть: title по BM25 и абзацы для текста — каждый пересчитывается на той же выдаче. Одна бесплатная проверка доступна без регистрации, дальше — с баланса; цена видна в форме до запуска. Инструмент полезен как быстрый срез: сравнение BM25 с ТОП-10 показывает, мешает ли продвижению сам текст.

Мифы и типичные ошибки

  • Миф о линейной зависимости. Больше вхождений — выше ранг. На деле частота насыщается, и десятое повторение добавляет копейки.
  • Игнорирование нормализации длины. Длинные тексты не всегда выигрывают: за объём без пользы страница платит штрафом в знаменателе.
  • Вера, что BM25 полностью определяет выдачу. На практике это один из сигналов текстовой релевантности; рядом работают коммерческие, поведенческие факторы и доверие к сайту.

Чек-лист: «BM25-здоровая» страница

  • Ключевые термины присутствуют естественно и соответствуют поисковому намерению.
  • Текст не переоптимизирован: нет искусственного нагнетания частоты.
  • Длина и структура адекватны теме, без «воды» ради объёма.
  • Слова запроса есть в title и H1, если так делают конкуренты из выдачи.

Вопросы и ответы

Как работает алгоритм BM25 простыми словами?

Он складывает баллы по словам запроса. Каждое слово даёт тем больше, чем чаще оно в документе и чем реже во всей коллекции, но вклад повторений быстро упирается в потолок, а длинный документ получает штраф относительно средней длины. Документы сортируются по сумме баллов.

Чем BM25 лучше TF-IDF и когда его использовать?

BM25 устойчивее к переспаму и к текстам, раздутым для объёма, за счёт насыщения частоты и нормализации длины. Его используют в полнотекстовом поиске по умолчанию — в Elasticsearch, Lucene, OpenSearch. TF-IDF остаётся полезен как простая базовая модель и в задачах, где важна линейность веса.

Что означают параметры k1 и b в формуле BM25?

k₁ задаёт скорость насыщения частоты: меньше значение — быстрее потолок. b задаёт силу нормализации по длине: 0 — длина не учитывается, 1 — полная нормализация относительно средней длины коллекции. Типичные значения — k₁ около 1,2–2,0, b около 0,75.

Учитывает ли BM25 длину текста и как это влияет на SEO?

Учитывает, через отношение длины документа к средней длине коллекции. Чем длиннее текст, тем сильнее делятся его частоты. Для SEO это значит: наращивать объём ради объёма бессмысленно, а плотность ключей выше определённого уровня не даёт прироста.

Используется ли BM25 в современных поисковых системах?

В поисковых движках для сайтов и баз данных — Elasticsearch, OpenSearch, Lucene — это ранжирование по умолчанию, часто вместе с векторным поиском. Яндекс и Google свои формулы не публикуют, но текстовая релевантность — совпадение слов запроса с title, заголовками и текстом — остаётся у них одним из многих сигналов, рядом с нейросетевыми моделями смысла, поведением пользователей и доверием к сайту.

Попробуйте бесплатно
BM25 против ТОП-10 Насколько ваш текст релевантнее конкурентов Открыть → SEO-анализ страницы Title, H1, мета-теги и микроразметка Открыть → Проверка ответа сервера Коды ответа и цепочки редиректов Открыть →
Похожие статьи

Текстовая оптимизация страницы

SSL-сертификат для сайта

Возраст домена

Ключевые запросы: что это такое и как их использовать

Семантическое ядро: что это такое, и какие виды существуют

Key collector кластеризации запросов

LSI-фразы и слова
  • Слова и фразы конкурентов из ТОП-10
  • Расширение темы нейросетью
  • Запросы Wordstat без мусора
  • Первая проверка — бесплатно
Кластеризация запросов
  • Группировка ядра по ТОПу Яндекса
  • Подбор посадочных страниц
  • Выгрузка результатов в Excel
  • Первая проверка — бесплатно

Тип запроса по выдаче Яндекса: коммерческий, информационный или смешанный