Утечка исходного кода Яндекса — это самое неоднозначное событие в мире IT, которое произошло за последнее время. И дело в том, что нет единого мнения об этой ситуации. Одни восхищаются подходом Яндекса к работе, а другие ужасаются произошедшему и кричат, что скоро не останется ни одного ресурса, который бы не взломали.
Но наша статья не о моральной стороне этого вопроса и даже не о том, какие в Яндексе крутые специалисты. А про то, как зарубежные SEOшники оценивают информацию, которую они смогли получить в исходном коде.
На одном из сайтов по SEO аналитик разобрал код и рассказал, что узнал в процессе работы с исходными данными Яндекса.
В начале февраля в сеть просочились «фрагменты» кодовой базы Яндекса. Как и Google, Яндекс — это платформа со многими инструментами, такими как электронная почта, карты, служба такси и так далее. В коде есть фрагменты каждого инструмента. Согласно документации, которая была в архиве, кодовая база Яндекса была объединена в один большой репозиторий под названием Arcadia в 2013 году.
Яндекс — это не Google, тем не менее эти две современные поисковые системы продолжают оставаться в лидерах.
Инженеры-программисты обеих компаний посещают одни и те же конференции (SIGIR, ECIR и так далее), делятся находками и инновациями в области поиска информации, обработки/понимания естественного языка и машинного обучения. Филиал Яндекс есть в Пало-Альто, а представительство Google ранее было в Москве. Даже быстрый поиск через LinkedIn позволяет найти несколько сотен инженеров, которые работали в обеих компаниях.
Без контекста или возможности скомпилировать и запустить исходный код его очень сложно понять. В Яндексе новые инженеры получают документацию, пошаговые инструкции и занимаются парным программированием, чтобы адаптироваться к существующей кодовой базе. Кроме того, в архиве документов есть некоторая документация по адаптации, связанная с настройкой процесса сборки. А еще код Яндекса везде ссылается на внутренние вики, к которым получить доступ невозможно.
К счастью, Яндекс дает некоторое представление о своей архитектуре в общедоступной документации. Есть также пара патентов, опубликованных в США, которые помогают лучше понять принцип работы:
Автор статьи отмечает, что у Яндекса есть передовые практики и некоторые сходства с Google.
В документах Яндекса есть обсуждение двухраспределенной системы краулеров. Один для сканирования в реальном времени, он называется «Оранжевый краулер», а второй для обычного сканирования. У Google был индекс, разделенный на три сегмента: один для сканирования в реальном времени, один для регулярного сканирования и один для редкого сканирования. Этот подход считается лучшей практикой в IR. Яндекс и Google различаются в этом отношении. Но общая идея сегментированного сканирования, основанная на понимании частоты обновлений, сохраняется.
У Яндекса нет отдельной системы рендеринга для JavaScript. Об этом написано в документации, но у них есть система визуального регрессионного тестирования на основе Webdriver под названием Gemini. При всем этом Яндекс ограничивается текстовым сканированием.
В документации также обсуждается сегментированная структура базы данных, которая разбивает страницы на инвертированный индекс и сервер документов. Как и в большинстве других поисковых систем, процесс индексации создает словарь, кэширует страницы. Затем помещает данные в инвертированный индекс таким образом, чтобы были представлены биграммы, тригамы и их размещение в документе. Это отличается от Google тем, что они давно перешли на индексацию на основе фраз, то есть n-граммы, которые могут быть намного длиннее триграмм.
Система Яндекса использует BERT в своем пайплайне, поэтому в какой-то момент документы и запросы конвертируются во вложения.
Процесс ранжирования в Яндекс выглядит интереснее. Например, в Яндексе есть слой под названием «Метапоиск», в котором кешированные результаты популярных поисковых запросов обслуживаются после обработки запроса. Если результаты там не найдены, поисковый запрос отправляется на несколько тысяч разных машин на уровне базового поиска одновременно. Каждый создает список соответствующих документов для публикации. Затем возвращает этот список в MatrixNet, приложение нейронной сети Яндекса для повторного ранжирования, чтобы построить поисковую выдачу.
Судя по видеороликам, в которых инженеры Google рассказывают об инфраструктуре поиска, процесс ранжирования Яндекса очень похож на поиск Google.
Сразу после утечки Мартин Макдональд поделился файлом из кодовой базы под названием web_factors_info/factors_gen.in. Файл был взят из архива «Kernel» и содержит 1 922 фактора ранжирования.
SEO-сообщество использовало этот файл, чтобы распространять новость о сливе и выводы медийных коллег. Многие перевели описания и создали инструменты или Google Sheets и ChatGPT, чтобы разобраться в данных. Но 1 922 — это далеко не все факторы, а лишь один из многих «фрагментов» факторов ранжирования в кодовой базе Яндекса.
Более глубокое погружение в код показывает, что существует множество факторов ранжирования для различных подсистем. Всего 17 854 фактора ранжирования.
Существуют и дополнительные 2 000 факторов, помимо тех, что указаны в основном коде. Предположительно, это факторы для тестов, которые инженеры используют перед добавлением новых принципов ранжирования. Вы можете просмотреть все факторы с метаданными по этой ссылке.
В документации Яндекса указывается, что у них есть три класса факторов ранжирования: статические, динамические и те, которые связаны конкретно с поиском пользователя и тем, как он был выполнен:
В кодовой базе они указаны в файлах ранговых факторов с тегами TG_STATIC и TG_DYNAMIC. Факторы, связанные с поиском, обозначены тегами TG_QUERY_ONLY, TG_QUERY, TG_USER_SEARCH и TG_USER_SEARCH_ONLY.
Хотя было выявлено более 18 000 потенциальных факторов ранжирования, документация указывает, что оценка строится на основе десятков тысяч факторов:
Это подтверждает мысль, что среда ранжирования у Яндекса очень динамична, как и среда Google. Также нужно помнить, что в коде есть много других файлов, на которые нет ссылок в архиве:
Например, есть подозрение, что в каталоге /semantic-search/ есть еще что-то связанное с DSSM.
Ниже приводится список самых высоких отрицательно взвешенных исходных факторов ранжирования с указанием их коэффициентов и кратким пояснением, основанным на их описаниях, переведенных с русского языка.
Таким образом, эти факторы указывают на то, что для наилучшего результата вы должны:
Все остальное в этом списке находится вне вашего контроля.
Есть и список положительных факторов ранжирования с наибольшим весом.
Конечно, это не все факторы, и их намного больше. Но мы отобрали пятерку самых интересных.
Ниже факторы, которые кажутся самыми неожиданными:
Кодовая база также показывает, что у Яндекса есть много парсеров для других веб-сайтов и их соответствующих сервисов.
Что сразу бросается в глаза, так это то, что синтаксические анализаторы полностью укомплектованы. Извлекается каждый значимый компонент поисковой выдачи Google.
Есть и другой код, указывающий на то, что Яндекс использует некоторые данные Google, как часть расчетов DSSM. Но сами по себе 83 Google-фактора показывают, что Яндекс довольно сильно опирается на результаты Google.
315 факторов ранжирования имеют пороговые значения, при превышении которых система видит, что страница чрезмерно оптимизирована.
Скорее всего все современные поисковые системы устанавливают пороговые значения для определенных факторов, которыми оптимизаторы исторически злоупотребляли. Среди них анкорный текст, CTR или наполнение ключевыми словами. Например, говорят, что Bing использует злоупотребление метаключевыми словами, как негативный фактор.
Кодовая база позволяет понять, как документы хранятся на сервере Яндекса. Это полезно для понимания того, что поисковая система не просто делает копию страницы и сохраняет ее в своем кэше, она фиксирует различные функции в качестве метаданных, чтобы затем использовать их в последующем процессе ранжирования.
На снимке экрана выделено подмножество тех функций, которые особенно интересны:
Что самое интересное в подмножестве здесь, так это количество используемых симхэшей. Симхэши — это числовые представления контента. Поисковые системы используют их для молниеносного сравнения и определения дублирующегося контента. В архиве роботов есть различные экземпляры, указывающие на то, что дублированный контент будет понижен в выдаче:
Кодовая база также раскрывает много информации о факторах для ссылок и о том, как ссылки расставляются по приоритетам. Калькулятор ссылочного спама Яндекса учитывает 89 факторов. Все, что помечено как SF_RESERVED, устарело.
Примечательно, что у Яндекса есть рейтинг хоста и некоторые оценки, которые, по-видимому, сохраняются в течение длительного времени после того, как сайт или страница заработали репутацию спама.
Еще одна вещь, которую делает Яндекс, — это просмотр копии в домене и определение наличия дублированного контента с этими ссылками. Это могут быть размещения ссылок по всему сайту, ссылки на дубликаты страниц или просто ссылки с одинаковым анкорным текстом с одного и того же сайта.
Это показывает, что важно ориентироваться на более уникальные ссылки из разнообразных источников.
Мы собрали несколько комментариев специалистов из SEO, чтобы вы получили общее представление о ценности этого слива.
«Да, Яндекс — это не Google. И да, тот список факторов, который мы видим, не полон и не пригоден к действию. Но люди, которые громче всех говорят, что мы не можем извлечь из этого уроки, скорее всего просто не могут понять исходный код. В нем очень много интересного.
Если вам нужны хаки или короткие пути, то их здесь нет. Но если вы хотите понять больше о том, как работает поисковая система, это золотой репозиторий», — Райан Джонс.
Райан Джонс считает, что эта утечка имеет большое значение для комьюнити.
Он уже загрузил некоторые модели машинного обучения Яндекса для тестирования. Райан убежден, что есть, чему поучиться, но для этого потребуется гораздо больше, чем просто изучение списка факторов ранжирования.
«Мы видели лишь 275 факторов персонализации, 220 факторов «свежести страницы», 3 186 факторов поиска изображений, 2 314 факторов поиска видео. Еще многое предстоит изучить. Наверное, самым удивительным для многих является то, что у Яндекса сотни коэффициентов для ссылок», — Кристоф Цемпер
Файлы Яндекса дают представление о том, как работают поисковые системы. Данные не показывают, как работает Google. Но они дают возможность просмотреть часть того, как поисковая система ранжирует результаты.
То, что содержится в данных, не следует путать с тем, что может использовать Google.Тем не менее между двумя поисковыми системами есть интересные сходства.
Некоторые из просочившихся факторов ранжирования совпадают с методами, которые используются в SEO. Например, изменение анкорного текста. Также Алекс Буракс обнаружил фактор, определяющий приоритетность важных главных страниц:
В SEO уже было правило, что нужно держать важный контент в нескольких кликах от главной страницы, а изучение кода Яндекса подтвердило это правило.
Утечка кода Яндекса в сеть — это не только очередное напоминание о том, что вся информация может оказаться в публичном доступе. Это отличная возможность проверить свои теории по оптимизации сайтов и построить новые.
Подписывайтесь на наш Telegram-канал, чтобы первыми узнавать новости и инсайды из мира SEO, нейросетей и IT!