Фаст-ранк и первичное ранжирование

В очередной раз нырнём в исторические залежи. В данном случае речь идёт о первичном ранжировании, основанном на алгоритме фаст-ранк. Освежим понятие.

Фаст-ранк и первичное ранжирование

Немного о термине

Технически фаст-ранк – это алгоритм, используемый в линейной алгебре для быстрого вычисления ранга матрицы. Если вы имеете дело с большой и разреженной матрицей (с которыми обычно и имеет дело поисковая система), то этот метод быстрее классических и требует меньше вычислительных ресурсов благодаря возможностям распараллеливания.

Однако есть у него и слабое место: меньшая точность, поскольку это вероятностный метод, и результаты нужно перепроверять более точными алгоритмами. Как, собственно, и поступают поисковые системы.

Первичное ранжирование можно определить как присвоение некоторого начального рейтинга опубликованному документу для какого-то поискового запроса. Этот начальный скоринг определяет дальнейшую динамику ранжирования документа в поиске, и высчитывается он самыми простыми и грубыми средствами.

Изначально «фаст-ранк» использовался как синоним первичного ранжирования, хотя это и некорректно. Поскольку длинные слова людей только расстраивают, а ролик, где Алексей Чекушин упоминает сингулярное разложение стал в сеошной среде мемом, понятно, почему термин за 15 лет полностью ушёл из профессионального лексикона.

Зачем это нужно знать

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

Фаст-ранк позволяет поисковым системам ускорить латентно-семантический анализ (LSA), оценку ссылочной структуры веб-графа, грубо кластеризовать коллекции документов, но самое важное – ускорить процесс индексирования и поиска по индексу. Когда вы отдаёте в индекс новый сайт или публикуете новую страницу, при индексировании будет задействован именно этот алгоритм.

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

Пока ничего не изменилось в этой сфере, разберем, как устроено первичное ранжирование.

Базовый поиск

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

Далее все эти термы поисковик пытался найти в индексе – словаре, где все слова упорядочены по алфавиту, приведены к некоторой базовой форме и сопровождаются информацией, где встречается, в каком месте, в какой словоформе.

Понятно, что подобный поиск годится только для небольших коллекций документов и не может быть релевантным. Кроме того, результаты ещё нужно как-то отранжировать по степени соответствия запросу. Для этого использовались простейшие алгоритмы уровня TF-IDF и более поздней вариации – BM25. Оба основаны на частотности заданных ключевых слов и не умеют работать со смыслом и контекстом. (Собственно, в большинстве тематик этого вполне достаточно: вот у нас запрос «самовар купить», а вот листинг, где «самовары» упоминаются 10 раз, «самовар» – 25, «купить» – 25, листинг консолидирован из 10 страниц пагинации. Чего ж вам ещё? Хороший ассортимент, хороший продавец, ещё и рейтинг на Маркете – 4,8).

Релевантность определялась запросным кворумом: каждому слову назначался определенный вес. Чтобы ранжироваться по запросу, документ-кандидат должен был набрать определенную сумму весов ключевых слов. Не набрал – не прошёл.

Всё это требовало достаточно простых вычислений, однако с учётом роста количества сайтов и пользователей интернета появилось две серьёзные проблемы:

  • Используемые алгоритмы не обеспечивали ожидаемого качества поиска (вспомните "Апорт", Rambler или ранний Yahoo. Поиск mail.ru и до сих пор так работает)
  • Нагрузка на сервера, обрабатывающие запросы, существенно росла

Качество поиска и разметка

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

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

Таких метрик – сотни, а формула, присваивающая веса каждой отдельной метрике и суммирующая результат, своя для каждой тематики. Разумеется, асессоры проверяли самые простые метрики. Есть тут телефон на "8-800"? Rel. "Корзина"? – Rel. Бесплатная доставка на видном месте упоминается? – Вообще Rel+.

Единственный способ хоть как-то понять, какой должна быть страница, чтобы попасть в топ выдачи – это сравнение своей страницы с топом поисковой выдачи. Эти сайты уже прошли заданный порог, признаны поисковой системой соответствующими запросу, а медианные данные по ним могут служить эталоном, с которым можно сопоставлять свой сайт.

Первичное ранжирование выглядит примерно так
Первичное ранжирование выглядит примерно так

Казалось бы, всё просто. Хочешь в топ – делай с нами, делай как мы, делай лучше нас. Но есть нюансы.

Почему повторить может быть мало

Соответствие разметке, используемой нейросетью на стадии первичного ранжирования – обязательно. Но на этом процессы не заканчиваются.

Вы можете воспроизвести показатели сотен малозначащих метрик, но топ выдачи будут определять какие-то отдельные и супермощные факторы, где никакое машинное обучение уже ничего не даст.

  • Хост. Да, некоторые сайты занимают топы вовсе не потому, что реально соответствуют конкретным запросам. Бывает, что там даже нет соответствующих посадочных страниц, или эти страницы плохо соответствуют запросам. Но исторические данные (люди ходили сюда за чем-то похожим пару десятков лет), партнерские отношения с владельцем ПС и раскрученный бренд делают своё дело. Как и десяток подклеенных доменов, в том числе и к отдельным страницам.

  • Вторичное ранжирование. Просто набрать пороговое значение каких-то метрик недостаточно. Вы просто натыкали необходимые ключи в заданные текстовые зоны нужное количество раз. Но те, кто занимают топ выдачи, могут иметь большее количество цитирований, лучшую кликабельность на выдаче и лучшие показатели пользовательских сигналов (например, тот же last-click). Вы не узнаете об этом, просто рассматривая сайт и доступную статистику по нему.

  • Неудачный момент индексирования. Даже гипер-релевантная страница, невовремя пошедшая в индекс, может оказаться неэффективной. Причина – поисковая система на время отключила учёт каких-то метрик, или вы не набрали ожидаемые показатели за заданный период («многорукий бандит» подбросил вас в топ, вы мелькали в выдаче целый день, но кликов не было – и Яндекс со спокойной душой выкинул вас за топ-100). Ещё хуже – вы опубликовали недостаточно оптимизированную страницу, нахватали отрицательных оценок и документ попал под фильтры. В этом случае бывает проще опубликовать этот же документ, исправив ошибки, на новом URL, поскольку вытаскивать его из-под фильтра и вспомогательных индексов будет намного дольше и труднее.


«Не тот момент» может быть обусловлен ещё и тем, что определяя эталонный корпус, вы публикуете документ, когда этот корпус меняется. Да, Яндекс периодически устраивает ротацию в топах, заменяя все сайты в зоне видимости на другие – точно такие же. Топ – один, а претендентов на него много, и все практически одинаковые. Каждому – свой час славы. Но динамика может быть обусловлена сменой интента, сменой формулы ранжирования, появления каких-то новых фильтров и т.п. Был запрос коммерческим и ранжировались категории – а теперь там статьи, и все ваши BM25 применительно к ссылочным анкорам можете считать с пользой проведенным досугом, но уже без практического эффекта.

Каждый новый веб-документ уже имеет некоторый начальный рейтинг. Он зависит от хоста, тематики, запроса, контекста, исторических данных по всему сайту. На сайте без истории и лояльной аудитории даже очень релевантный контент не получит высоких позиций в поиске, тогда как относительно слабый, но опубликованный на авторитетном домене, может практически сразу занять место в топ-3. Хотя, вероятно, и ненадолго.

Почему важно набрать максимально высокий начальный рейтинг

Фаст-ранк при первичном индексировании – это всего лишь прохождение первичного порога соответствия запросу. У вас примерно та структура, что и надо, порядок с ключевыми словами, нет технических проблем. Примерно как у выпускника вуза с дипломом: формально он получил необходимые знания и сдал экзамен. Но можно ли его назвать состоявшимся специалистом? Может, он диплом купил.

Закрепить результаты можно только повторным (вторичным) ранжированием – оценкой взаимодействия с пользователями и более глубокими оценками контента поисковыми алгоритмами.

Если при первичном скоринге вы набрали высокий начальный балл – повторное ранжирование произойдёт быстрее, а эффект от него будет сильнее. Вы сможете быстрее набрать необходимые метрики, которые обеспечат сайту уверенный рост в выдаче.

Хост имеет значение
Хост имеет значение

Простой пример: владелец сайта, болтающегося где-то вне зоны кликабельности, и ссылки на страницу закупает в промышленных масштабах, и поведенческие факторы накручивает, и сайт разгоняет по Google Speed Insight – а динамики никакой. На сниппеты в SERP даже смотреть больно: просто сияют. Жаль только, что на кликабельность это никак не влияет, поскольку до 5 страницы в поиске никакая птица уже не долетит. При этом всё то же самое в пределах топ-10 даёт куда как более интересный эффект.

Любой документ, отправляемый в индекс, сразу получает какой-то оценочный балл. Примерно так же устроен рейтинг в Яндекс-Отзывах: вы начинаете не с нуля. Но в поисковых системах всё несколько сложнее: один и тот же контент будет иметь разные начальные баллы на разных хостах. Если вы публикуете один и тот же материал на разных сайтах, Google может выбрать в качестве канонического тот URL, что получил максимальный балл при индексировании. Если вы используете синдикацию контента – это надо иметь в виду.

Начальный скоринг страницы может быть изменен после повторного ранжирования. Однако первоначальный рейтинг может повлиять не только на динамику, но и на обнаруживаемость документа. Исторические данные по странице могут самым негативным образом повлиять не только на результаты повторного ранжирования и даже на саму возможность повторной оценки страницы поисковиками.

Общие выводы

  • Первичное ранжирование основано на самых простых и незатратных для оценки поисковыми системами метриках: хостовых (возраст, история, запросный индекс, авторитетность домена) и текстовых метриках уровня BM25. И именно они и имеют максимальное значение.

  • Вы должны придерживаться медианных данных, сформированных по актуальному топу поисковой выдачи, с учётом того, что не все сайты в топе попадают туда из-за реальной текстовой релевантности.

  • Для первичного ранжирования приоритетны средства синтаксического текстового анализа: количество заданных ключевых слов (вернее – n-грамм) на странице. Для Яндекса имеет значение текстовая зона, в которой размещены эти ключевые слова.

  • Нет смысла колдовать с метриками, важными для фаст-ранк, после повторного ранжирования, если вы уже зашли в зону кликабельности (условно - в топ-20). Несколькими вхождениями в плюс или минус вы уже не повлияете на ранжирование в стандартной ситуации.

  • Нельзя отдавать в индекс неоптимизированную страницу: это сильно осложнит её продвижение и увеличит затраты ресурсов на «раскачку». Не рассчитывайте на «потом оптимизирую»: вытаскивать страницу из-под фильтров дольше и сложнее, чем довести до ума сразу.

  • Сложные и ресурсоёмкие алгоритмы анализа поисковые системы используют только для сайтов, которые считают важными и ценными. Ваш контент в любом случае будет сопоставляться с тем, что ранжируется сейчас, и по самым примитивным характеристикам. При серьёзных отклонениях от разметки в топ он не попадёт (если, конечно, речь не идёт о каком-то трастовом ресурсе с миллионной аудиторией).

  • Для оценки эталонного корпуса можно использовать специализированные сервисы. На сегодняшний день наиболее соответствующим можно назвать SEOlemma. В отличие от анализаторов Мегаиндекса и Just-Magic, вы можете отобрать сайты для сравнения вручную и отфильтровать ненужные ("Дзен", "Авито", "Википедию", маркетплейсы и т.п.). То же самое можно реализовать и с помощью того же Python, но придётся повозиться.

1212
9 комментариев

Ага. Я хотел прикрепить - но тут движок форматы видео не понимает, Ютуб не у всех доступен, а рутуб не встраивается.
Но это легенда

2

Хорошая статья, спасибо.

1