Это выпуск подкаста «Запуск завтра», который выходит при поддержке «Яндекс Практикума». Так как мы тоже выходим при поддержке «Практикума», грех не поделиться. Слушайте подкаст или читайте наш конспект — постарались пересказать главное.
Герой выпуска — Максим Загребин, руководитель Яндекс.Поиска.
Как у Яндекса появился поиск
Это было давно, ещё до меня. На Западе поисковые системы уже были довольно конкурентным рынком, но они работали с англоязычными текстами. Создатели Яндекса Илья Сегалович и Аркадий Волож решили: «Давайте сделаем классный продукт с фокусом на Россию, который гораздо лучше будет понимать русский язык». В этом была дополнительная сложность и инновационная особенность нашего поиска.
«Яндекс» — это аббревиатура от yet another indexer, то есть «ещё один индекс». Индекс — это таблица, по которой можно быстро искать информацию.
Сколько страниц в интернете
Количество страниц постоянно растёт, причём по степенному закону. Нас спасает только то, что не все страницы одинаково полезны. Мы точно говорим о сотнях миллиардов и даже, наверное, триллионах.
Как работает простейший поиск
Простейшая программа для поиска — «кроулер», или программа-паук. Она ходит по страницам, находит на них ссылки, переходит, скачивает страницы по ссылкам и расползается всё шире и шире. Кандидатам, которые приходят в «Яндекс», в качестве тестового мы даём задание — написать такую программу в простейшем виде. Причём такое тестовое даём даже не разработчикам, а многим техническим менеджерам.
С чего начинается Поиск
Прежде чем искать среди информации нужную, логично сначала скачать всю, положить в одну базу данных и через программу выбирать из кучи страниц необходимое. Это очень сложная задача.
Конечно, в итоге мы хотим иметь все страницы. Но у нас ограничены ресурсы и мы, обходя интернет, создаём нагрузку на сайт. Поэтому в первую очередь мы скачиваем самые важные страницы. Для этого есть машинное обучение. Мы называем его Selection Rank. То есть некоторый механизм ранжирования, который выбирает, что обходить в первую очередь, и пытается предсказать, какая страница с большей вероятностью понадобится пользователям в результате поиска, а какая — с меньшей. Соответственно, первую он скачивает раньше, а вторую — чуть попозже. Получается, программа предсказывает полезные страницы до того, как посмотрела их содержание.
Узнать, что какая-то страница есть в интернете, — даже это само по себе непростая задача. Мы не будем подставлять перебором все возможные сочетания слов после каждого слеша и пытаться проверять, есть там такая ссылка или нет. Нам помогает регистратор — компания, которой ты платишь за то, чтобы адрес твоего сайта появился в интернете. Идёшь к регистратору и получаешь полный список сайтов.
Робот начинает обход с главной страницы сайта. Другой способ — робот скачивает данные через технический документ Site map, где содержится список всех страниц, которые нужны Яндексу. Сайты получают трафик из поисковых систем, поэтому они заинтересованы в Site map и в том, чтобы поисковые системы знали об их контенте.
Как Яндекс ищет по словам и картинкам
Все страницы собраны в базу данных, в которой Поиск ищет нужную информацию. Долгое время база данных была устроена как гигантская таблица, где были перечислены все слова со всех страниц в интернете. По каждому слову выкатывался список страниц, на которых это слово встречается и где, на каком месте.
Со временем база данных эволюционирует. Ключом становится не одно слово, а например, словосочетание. Появляются векторы — любой текст можно представить в виде последовательности чисел ограниченной длины, например 256 символов. Разные тексты можно переводить в этот формат и сравнивать похожесть текстов по тому, насколько близки эти числовые последовательности.
Если векторы — запросы и тексты — достаточно близки, то с большой вероятностью документ отвечает на вопрос, который интересен пользователю. То есть поиск теперь ищет не только по соответствию слов и синонимов, а по смыслу — этот алгоритм «Палех» мы анонсировали в 2016 году.
Самое интересное начинается, когда ты понимаешь, что можешь в такой вектор сжать не только текст, но и картинку, и видео, и даже интересы пользователя. Дальше этот вектор можно сравнить с вектором, который получен на основе вообще другого вида информации, например видео. И смотреть, насколько они близки, потому что благодаря векторам у них одинаковая размерность.
Какую роль в поисковых алгоритмах играют люди и машины
Алгоритмы ранжирования построены на основе машинного интеллекта. Мы их обучаем с помощью инструкций, которые пишут наши сотрудники — асессоры. Задание для асессора может выглядеть так: запрос, десять документов и пояснение. Например,
«В запросе „как лечиться от коронавируса“, пользователь хочет узнать информацию о том, существуют ли медикаменты, насколько помогают прививки, куда обращаться, если у вас возникли симптомы».
Дальше асессор просматривает страницы, которые ему прислали. Например, это могут быть первые десять ссылок по новым алгоритмам ранжирования. Сотрудник анализирует информацию, определяет, какие страницы полезны, какие ни о чём, где источник авторитетный, где написано понятным языком, — и ставит страницам оценки. Мы берём эти оценки и обучаем наши алгоритмы.
Получается, что поисковая система — это на самом деле автоматизация решений асессоров. То есть машина посмотрела, как люди выбирают страницы, а дальше пытается подражать этим людям.
Как работает Поиск, когда не нужно решать задачу пользователя
Алгоритмы поиска должны понимать, когда помогать человеку решать его задачу, а когда помочь ему более глобально. Если человек ищет информацию о суициде, «Яндекс» даст телефон психолога. Если где-то случается чрезвычайное происшествие, не дай бог, упал самолёт, то появляется телефон горячей линии, по которой можно узнать, кто из людей остался жив и вообще куда обращаться — это мы называем «блок чрезвычайных ситуаций».
Сделать такой ответ не настолько сложно. Там нет триллионов документов, из которых надо выбирать. В этом случае мы показываем контакты организаций, в которых уверены, что они действительно помогают людям. Это редакторская работа.
Что алгоритмы Яндекса знают о пользователе
По IP-адресу мы можем понять, из какого региона пользователь. У нас есть настройка, которую человек может выставить, если мы ошиблись. Например, что он находится в Красногорске, а не в Москве. Мы знаем текущую операционную систему и платформу пользователя. Важно различие между Android и iOS. Если человек ищет какое-нибудь приложение-фонарик, бессмысленно ему в Safari показывать ссылки на Google Play.
Мы знаем, какие запросы пользователь раньше задавал по сложности и по языку, на какие сайты он переходил из поисковой системы. В алгоритмах персонализации это учитывается. По запросам «Яндекс» может предсказать, что пользователь, например, айтишник. Соответственно, когда «Яндекс» публикует информацию о релизе, IT-специалисту он сначала покажет ссылку на «Хабр» с техническими деталями, а ссылку на vc.ru с маркетинговой информацией — ниже.
Как в наши дни построить хорошую поисковую систему с нуля
Двадцать лет назад в это пытались играть многие. С тех пор осталось небольшое количество глобальных и локальных игроков. Сейчас с нуля повторить всё, что сделано этими игроками, настолько дорого, что просто экономически невыгодно. Пока кто-то будет пытаться делать свою поисковую систему, за это время «Яндекс» сделает более совершенный продукт.
Мы далеко убежали вперёд, накопили огромное количество данных. И оценок асессоров, и статистики пользовательского поведения, и истории обхода интернета, знания всех ссылок. Если и делать поисковую систему, то это должен быть уже какой-то другой поиск.
Возможно, появится бодрый смелый стартап и придумает прорывную технологию, которая будет решать ту же потребность пользователя, но совершенно по-другому. За счёт этого начнёт отъедать рынок, ведь задача получения информация — вечная. Она существовала в Древнем Вавилоне и будет существовать после нас. Вопрос — как именно мы её решаем.
Что почитать по теме
В полной версии подкаста
3:00 Как скачать все страницы из интернета
7:28 В каком формате веб-страницы хранятся в базе данных
12:40 Что происходит, когда пользователь делает запрос
25:36 Как обработать запрос с белибердой
31:20 Что алгоритмы знают об авторе запроса
34:20 На какие ухищрения идут люди, чтобы их сайт оказался повыше в поисковой выдаче
41:00 У каких компаний в мире есть свой поисковый движок