Словарь SEO · Алгоритмы и формулы

BM25 — современный алгоритм оценки текстовой релевантности

BM25 (Best Match 25, иногда Okapi BM25) — алгоритм оценки текстовой релевантности документа поисковому запросу. Это эволюция TF-IDF, которая решает две её главные проблемы: учитывает длину документа и вводит насыщение по частоте слова. Используется в Яндексе, Google, Elasticsearch и большинстве полнотекстовых поисковиков с 1994 года. Базовый текстовый сигнал в современном SEO — без прохождения BM25-фильтра страница не попадает даже в пул кандидатов на ранжирование.

BM25 за 30 секунд

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

Именно эту логику алгоритм применяет к веб-страницам: проверяет, насколько тематика страницы реально совпадает с запросом, а не как хорошо она «нашпигована» ключами.

Формула BM25

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

                              f(qᵢ, D) × (k₁ + 1)
Score(D, Q) = Σ IDF(qᵢ) × ───────────────────────────────────────
              qᵢ∈Q          f(qᵢ, D) + k₁ × (1 − b + b × |D|/avgdl)

Что означает каждый компонент:

Обозначение Смысл Пример значения
Score(D, Q) Итоговая оценка релевантности документа D запросу Q 12.4
qᵢ Каждое отдельное слово запроса для запроса «купить станок» это «купить», «станок»
IDF(qᵢ) Редкость слова в коллекции (логарифм обратной частоты) «и» → ~0; «биметаллический» → ~8
f(qᵢ, D) Частота слова в документе 5 (слово встречается 5 раз)
\|D\| Длина документа в словах 1500
avgdl Средняя длина документа в коллекции 800
k₁ Параметр насыщения 1.2 (Elasticsearch default)
b Параметр нормализации длины 0.75 (Elasticsearch default)

Звучит как формула из учебника по информатике — потому что она и есть из учебника. Дальше посмотрим её в действии.

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

Допустим, у нас есть запрос «купить станок» и две страницы-кандидата.

Страница A (1500 слов): «купить» встречается 8 раз, «станок» — 12 раз. Страница B (300 слов): «купить» встречается 4 раза, «станок» — 6 раз.

Параметры коллекции: средняя длина документа avgdl = 800 слов, IDF(купить) = 1.5, IDF(станок) = 3.0. Используем стандартные k₁ = 1.2, b = 0.75.

Расчёт для страницы A:

Считаем нормирующий знаменатель для каждого слова:

norm_A = 1 - 0.75 + 0.75 × (1500/800) = 0.25 + 1.406 = 1.656

Для слова «купить» (f=8):

score_купить = 1.5 × (8 × 2.2) / (8 + 1.2 × 1.656)
             = 1.5 × 17.6 / 9.987
             = 1.5 × 1.762 = 2.643

Для слова «станок» (f=12):

score_станок = 3.0 × (12 × 2.2) / (12 + 1.2 × 1.656)
             = 3.0 × 26.4 / 13.987
             = 3.0 × 1.887 = 5.662

Score(A) = 2.643 + 5.662 = 8.305

Расчёт для страницы B:

norm_B = 1 - 0.75 + 0.75 × (300/800) = 0.25 + 0.281 = 0.531

Для «купить» (f=4):

score_купить = 1.5 × (4 × 2.2) / (4 + 1.2 × 0.531)
             = 1.5 × 8.8 / 4.638
             = 1.5 × 1.898 = 2.847

Для «станок» (f=6):

score_станок = 3.0 × (6 × 2.2) / (6 + 1.2 × 0.531)
             = 3.0 × 13.2 / 6.638
             = 3.0 × 1.989 = 5.966

Score(B) = 2.847 + 5.966 = 8.813

Что мы видим: Страница B (короткая, 300 слов с 6 вхождениями) обогнала страницу A (длинная, 1500 слов с 12 вхождениями), несмотря на меньшее абсолютное число упоминаний. BM25 «понимает», что для короткого документа концентрация ключа выше. Это и есть нормализация длины.

В TF-IDF страница A победила бы просто за счёт большего числа вхождений — это и было главной уязвимостью старой формулы.

Параметры k₁ и b — как они меняют поведение

k₁ (насыщение по частоте)

Значение Поведение Когда использовать
k₁ = 0 Бинарная модель: важно только наличие слова, не количество Очень короткие документы (заголовки, теги)
k₁ = 1.2 Стандарт Elasticsearch Универсально для большинства задач
k₁ = 2.0 Стандарт Lucene Когда частота сильнее коррелирует с релевантностью
k₁ → ∞ Нет насыщения, ведёт себя как TF-IDF Не используется на практике

b (нормализация длины)

Значение Поведение Эффект
b = 0 Длина документа не учитывается Длинные тексты получают преимущество
b = 0.75 Сбалансированный стандарт Используется в Lucene/ES по умолчанию
b = 1.0 Полная нормализация Сильное наказание для длинных документов

Для SEO-практика ключевой вывод: в публичных поисковиках значения этих параметров неизвестны. Яндекс и Google не публикуют свои коэффициенты — это коммерческая тайна. Любые сервисы вроде «BM25-оптимизатора», обещающие точно подобрать плотность под BM25, — маркетинг.

История создания

Год Событие
1972 Карен Спарк-Джонс публикует TF-IDF — фундамент текстовой релевантности
1976 Стивен Робертсон формулирует Probabilistic Retrieval Framework
1994 Появляется BM25 — Best Match 25-й версии в проекте Okapi (Городской университет Лондона)
1995-99 BM25 побеждает в TREC (Text Retrieval Conference), становится индустриальным стандартом
2010 Apache Lucene включает BM25 как опциональный алгоритм
2016 Elasticsearch делает BM25 алгоритмом по умолчанию вместо классического TF-IDF
2018-2026 BM25 + нейросети (BERT, YATI) — гибридная схема большинства поисковиков

Стивен Робертсон, главный автор BM25, в 2008 году получил премию Salton Award от ACM за вклад в информационный поиск — высшую профессиональную награду в области.

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

Критерий TF-IDF BM25
Год 1972 1994
Учёт длины документа Нет Да (параметр b)
Насыщение по частоте Нет Да (параметр k₁)
Поведение при многократных вхождениях Линейный рост вклада Логарифмическое затухание
Чувствительность к спаму Высокая (легко накрутить) Низкая (накрутка обнуляется)
Используется сегодня Редко (архивы, простые системы) Везде (поиск, ES, RAG)
Сложность вычисления Низкая Средняя

Принципиально: TF-IDF — арифметика 1-го порядка, BM25 — арифметика с обратной связью. Если бы поисковики застряли на TF-IDF, любая страница с 50 вхождениями ключа автоматически била страницу с 5 вхождениями. BM25 это сломал — и заставил SEO писать не для счётчика плотности, а для пользователя.

Где BM25 используется в 2026 году

Поисковые системы

  • Яндекс — BM25-подобная оценка как первичный текстовый сигнал, поверх работает YATI (нейросеть-трансформер). Без BM25-релевантности страница не попадает в пул из ~1000 кандидатов, который потом ранжируется нейросетью.
  • Google — BM25 + BERT + MUM. На стадии «pre-ranking» отбираются кандидаты по BM25-подобной формуле, затем нейросети переранжируют ТОП-N. С 2023 г. также векторный поиск через эмбеддинги для определённых типов запросов.
  • Bing/DuckDuckGo — BM25 + собственные нейросетевые надстройки.

Open-source поисковые движки

  • Apache Lucene — основа для всех нижеперечисленных. BM25 default с версии 6.0 (2016).
  • Elasticsearch / OpenSearch — самые распространённые поисковики для веб-сервисов. BM25 default.
  • Apache Solr — корпоративный поиск. BM25 default.
  • Meilisearch / Typesense — лёгкие поисковые сервисы. BM25 + кастомная логика.

Внутренние поиски крупных сайтов

  • Маркетплейсы (Wildberries, Ozon, Amazon) — BM25 как fallback к ML-ранжированию.
  • B2B-платформы — поиск по каталогу товаров и документации.
  • Wiki-системы (Confluence, Notion) — поиск по знаниям.

RAG-системы и AI

  • В retrieval-augmented generation (когда LLM получает релевантные документы как контекст) BM25 часто используют как «грубый фильтр», отбирающий кандидатов перед более дорогим векторным поиском через эмбеддинги. Гибридный поиск «BM25 + векторы» даёт лучшее качество, чем каждый отдельно.

Применение в SEO 2026

Хотя BM25 нельзя «оптимизировать напрямую», понимание его механики меняет подход к работе с текстом:

1. Точное вхождение запроса в Title, H1 и первый абзац даёт самый высокий IDF-вес — в этих зонах текста алгоритм считает каждое слово. Поэтому ключ в заголовке — это не «оптимизация», а необходимость.

2. Плотность ключа 1-3 вхождения на 1000 знаков — оптимум, после которого срабатывает насыщение и каждое следующее вхождение даёт всё меньше. Накручивать выше — бессмысленно (BM25 проигнорирует) и опасно (антиспам сработает).

3. Длина текста ≈ медиане ТОП-10 ±20%. Если ваш документ на запрос значительно длиннее средней страницы в выдаче, BM25 через параметр b начнёт «штрафовать» его за избыток объёма без концентрации. Если значительно короче — недотянет по покрытию семантики.

4. Естественное распределение ключа по тексту, а не «куст» в одном месте. BM25 считает по всему документу, и кластеризованные вхождения ничем не лучше распределённых, но рядом стоящие повторы выглядят неестественно для антиспам-классификатора.

5. Покрытие словоформ и синонимов. Современные поисковики работают не с точной формой слова, а со стеммированной версией (купить = куплю = покупаю). Плюс используют синонимические словари. Поэтому фраза «приобрести оборудование» для алгоритма частично пересекается с запросом «купить станок» — это нужно учитывать при работе с LSI и интентом.

6. Корректная длина URL/заголовков для коротких документов — BM25 «премирует» компактные релевантные ответы. Карточка товара с краткой ёмкой информацией может обогнать длинный обзор за счёт высокой плотности ключа.

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

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

Миф 1. «BM25 — устаревший алгоритм, его заменили нейросети»

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

Миф 2. «Можно настроить контент под конкретные значения k₁ и b Яндекса»

Нельзя. Точные значения параметров публичные поисковики не раскрывают и регулярно меняют. Сервисы, которые «оптимизируют под BM25», на деле просто измеряют плотность и сравнивают с ТОП-10.

Миф 3. «Чем больше точных вхождений — тем выше BM25»

Нет. Из-за параметра насыщения k₁ после 5-10 вхождений рост практически останавливается. После 15-20 вхождений вы рискуете попасть под антиспам — и потерять не пункты в BM25, а всю позицию вообще.

Миф 4. «BM25 не учитывает синонимы и смысл»

Сам BM25 — нет, это чисто статистическая модель. Но в современных поисковиках перед расчётом BM25 запрос и документ проходят через стеммер, лемматизатор и синонимический словарь. А после BM25 поверх работает нейросеть, которая корректирует оценку по смыслу. Поэтому жалоба «BM25 тупой» — это жалоба на одну ступень из десяти.

Ошибка 1. Подгонять плотность под десятые доли процента. Точная плотность ключа в современном SEO значит мало. Важнее — наличие ключа в правильных зонах, естественное распределение и общая полнота темы.

Ошибка 2. Игнорировать длину документа. Один из главных факторов BM25. Если ТОП-10 в среднем имеет 2500 слов, а ваша страница — 600, никакая «идеальная плотность» это не компенсирует.

Ошибка 3. Писать «под BM25» без интента. Можно идеально набрать BM25-баллы и не попасть в ТОП, потому что интент запроса не совпадает с типом вашей страницы. Текст-определение никогда не побьёт карточку товара по запросу «купить».

Связь с другими понятиями

  • TF-IDF — прямой предшественник BM25. Историческая база, на которой выросла формула.
  • Релевантность — общая концепция совпадения страницы с запросом. BM25 — один из 12 факторов, формирующих итоговую оценку релевантности.
  • Эмбеддинги и нейросетевой поиск — современная альтернатива/дополнение BM25. Гибридный поиск «BM25 + векторы» — текущий best-practice.
  • LSI — иногда путают с BM25. На деле это совсем другой класс алгоритмов (семантический, а не статистический), который вообще не используется в продакшене.
  • Интент запроса — внешний по отношению к BM25 фактор. Алгоритм может дать высокую оценку тексту, который не отвечает на интент.

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

  1. Главный запрос есть в Title в точной или близкой словоформе.
  2. Главный запрос есть в H1, желательно в начале.
  3. Главный запрос встречается в первых 100 словах текста.
  4. Плотность ключа в теле текста — 1-3 вхождения на 1000 знаков, не больше.
  5. Объём текста сопоставим с медианой ТОП-10 по запросу (±20%).
  6. Подзапросы и словоформы распределены по тексту через H2/H3.
  7. Естественное расстояние между вхождениями ключа — нет «кустов».
  8. Минимум 300 слов уникального содержательного текста на странице.
  9. LSI-окружение — 15-30 тематически связанных слов.
  10. Нет переспама — текст читаемый, ключи не нагромождены.

Главное за 30 секунд

BM25 — это «умный счётчик слов», работающий с 1994 года. От старого TF-IDF он отличается двумя вещами: учитывает длину документа и насыщается после 5-10 вхождений ключа. Используется во всех современных поисковиках как базовый текстовый сигнал — без BM25-релевантности страница не попадает в пул кандидатов на ранжирование. Прямо «оптимизировать BM25» нельзя, но понимание его механики объясняет, почему «накручивать ключи» не работает с 1995 года, а «писать под пользователя» работает.

Это лишь один из 12 факторов общей релевантности. Чтобы попасть в ТОП-10, нужно пройти по всем — а BM25 даёт только пропуск к стартовой линии.

BM25 текстовая релевантность алгоритмы Okapi ранжирование

Другие термины словаря

AI-поиск
AEO — Answer Engine Optimization
AEO (Answer Engine Optimization) — оптимизация контента, чтобы он попадал в прямые ответы поисковых систем и ИИ-ассистентов: AI Overviews Google, Нейро Яндекса, Алисы, Siri, голосового поиска. В отличие от классического SEO, цель AEO — стать самим ответом, а не просто ссылкой в выдаче. Главные принципы: чёткие ответы в первых 300-500 символах, FAQ-разметка, структурированные данные, экспертность автора.
Читать определение
AI-поиск
AI Overviews — ИИ-обзоры Google
AI Overviews — генеративные ответы Google в верхней части выдачи, заменяющие или дополняющие классический список ссылок. Запущены публично в мае 2024 года, к 2026 году покрывают ~50% информационных запросов в США. Используют модель Gemini для синтеза ответа из 5-10 источников. Главные последствия для бизнеса: сокращение CTR классических позиций на 30-60%, рост zero-click сценариев, появление новой задачи — оптимизация под цитирование (AEO/GEO).
Читать определение
AI-поиск
Featured snippet — нулевая позиция в выдаче
Featured snippet (нулевая позиция, в Яндексе — Блок ответов) — расширенный сниппет в самой верхней части выдачи поисковика, выше первой позиции. Поисковик берёт короткий фрагмент с одного сайта-победителя и показывает как готовый ответ. Запущен Google в 2014 году, в Яндексе аналог появился в 2018. Дает рост CTR на 20-40% на десктопе, но снижает — на мобайле (часть пользователей удовлетворяется текстом сниппета и не кликает).
Читать определение
AI-поиск
GEO — Generative Engine Optimization
GEO (Generative Engine Optimization) — узкая дисциплина внутри AEO, заточенная под цитирование в генеративных ИИ-чатах: ChatGPT, Perplexity, Claude, Gemini. Если AEO покрывает все «движки ответов» (включая поисковики и голосовых ассистентов), GEO работает только с LLM-чатами. Главные сигналы: уникальный экспертный контент, упоминания на авторитетных площадках, упоминания бренда вне сайта (entity-сигналы), цифры и кейсы.
Читать определение
AI-поиск
LLM-цитируемость — упоминания в ChatGPT, Perplexity, Claude
LLM-цитируемость — практический навык внутри AEO/GEO: как сделать контент удобным для цитирования большими языковыми моделями (ChatGPT, Perplexity, Claude, Gemini, YandexGPT). Главные сигналы: чёткие ответы в первых 200-500 символах, структура «вопрос-ответ», конкретные цифры с источниками, экспертные цитаты, уникальные данные. Метрика: Share of AI Voice — доля упоминаний бренда в ответах ИИ на нишевые запросы.
Читать определение
Алгоритмы и формулы
LSI — латентно-семантическое индексирование в SEO
LSI — метод выявления скрытых семантических связей между словами в коллекции документов через сингулярное разложение матриц. В SEO термин часто используется неточно — для обозначения тематически связанных слов и синонимов.
Читать определение

Все термины словаря →

Нужен разбор вашей ситуации, а не определение?

Если в этой теме застряли на конкретном проекте — напишите в Telegram или закажите SEO-аудит. Отвечу лично, без менеджеров и форм.

Написать в Telegram Заказать SEO-аудит