Как работает поиск Яндекса: «Нога Акинфеева обои» и ещё сто миллионов запросов в день
easy

Как работает поиск Яндекса: «Нога Акинфеева обои» и ещё сто миллионов запросов в день

Подкаст о главном ИТ-продукте рунета

Это выпуск подкаста «Запуск завтра», который выходит при поддержке «Яндекс Практикума». Так как мы тоже выходим при поддержке «Практикума», грех не поделиться. Слушайте подкаст или читайте наш конспект — постарались пересказать главное. 

Герой выпуска — Максим Загребин, руководитель Яндекс.Поиска.

Как у Яндекса появился поиск

Это было давно, ещё до меня. На Западе поисковые системы уже были довольно конкурентным рынком, но они работали с англоязычными текстами. Создатели Яндекса Илья Сегалович и Аркадий Волож решили: «Давайте сделаем классный продукт с фокусом на Россию, который гораздо лучше будет понимать русский язык». В этом была дополнительная сложность и инновационная особенность нашего поиска.

«Яндекс» — это аббревиатура от 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 У каких компаний в мире есть свой поисковый движок  

Редактор подкаста:

Юля Яковлева

Младший редактор подкаста:

Ирина Хант

Продюсер подкаста:

Павел Боровков

Звукорежиссёр:

Нина Мамотина

Дизайнер обложки подкаста:

Пётр Сутупов

Текст конспекта:

Максим Ильяхов, сервис «Чистовик»

Корректор:

Ира Михеева

Обложка конспекта:

Даня Берковский

Вёрстка конспекта:

Кирилл Климентьев

Соцсети «Кода»:

Алина Грызлова, Ася Пушкина

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy