Сегодня мы объявляем о важных изменениях в поиске Яндекса. Теперь результаты поиска и поисковые подсказки будут персонализированными и могут отличаться для каждого пользователя, который задаёт запрос и получает на него ответ от Яндекса.
Специально для Хабрахабра мы взяли интервью у людей, которые занимались этим проектом, и спросили у них о том, для чего он нужен, как устроен, какие факторы мы учитываем, а также о том, как измеряем пользу от него.
Когда-то давно для того чтобы показать человеку результаты поиска, поисковым системам было достаточно пользовательского запроса и собственного индекса. Две эти сущности легко себе представить. Но со временем стало понятно, что есть ещё одна очень важная штука — контекст запроса. Кто, откуда и когда его задаёт.
Три года назад при формировании результатов поиска мы начали учитывать регион пользователя.
Самый простой пример запроса, где это важно — доставка пиццы. Люди из Москвы и из Волгограда должны видеть ссылки на те компании по её доставке, которые работают именно у них в городе. А в некоторых городах, где сервис ещё не развит, по запросу «пицца» нужно и вовсе показывать её рецепт. С тех пор, как поиск Яндекса начал учитывать местонахождение человека, запросы, в которых уточняется регион, стали вводить на 30% реже.
Летом прошлого года мы запустили поисковую платформу «Рейкьявик». Она понимала языковые предпочтения пользователей и учитывала часто ли человек открывает результаты поиска на английском языке. Людям, которые чаще ищут англоязычные ресурсы, поиск стал отвечать большим количеством ссылок на них, и наоборот.
Сейчас мы рассказывает о нашей следующей поисковой платформе «Калининград», которая предоставляет пользователям персональные поисковые подсказки и персональные результаты поиска.
Расскажем подробнее про каждую из частей.
Поиск как инструмент навигации по интернету должен помогать человеку придерживаться курса и находить самые короткие маршруты к цели. Эти задачи несколько лет решают поисковые подсказки. Они помогают правильно, а главное, быстро сформулировать запрос. Мы рассказывали о том, что они тоже научились учитывать большое количество факторов, которые также ориентируются на контекст. Одним из самых важных запусков, который помог в персонализации саджеста, стал учёт предыдущего запроса пользователя. То есть если человек искал [титаник], то при наборе в поисковой строке буквы «к», в числе первых он увидит подсказки [кейт уинслет] и [как снимали титаник], а не [контакт] и [карта метро].
![Пользователь — это его поисковая сессия](https://habrastorage.org/r/w1560/getpro/habr/post_images/bbb/f0d/15c/bbbf0d15c1f9f1e4c36592484c50497b.png)
Половина всех текущих запросов, которые люди задают Яндексу, связана с тем, каким был предыдущий. Мы научились извлекать из поведения пользователей данные, которые можно использовать для предсказания их поведения в будущем. Сейчас поисковые подсказки учитывают историю ваших взаимоотношений с Яндексом: какие запросы вы задавали и по каким ссылкам переходили, как эти действия были распределены по времени.
При этом надо помнить, что пользователь для поиска Яндекса выглядит приблизительно вот так:
![Пользователь для поисковой системы Яндекса](https://habrastorage.org/r/w1560/getpro/habr/post_images/3cb/c92/a8c/3cbc92a8cee32192694d82c36cc56728.png)
То есть в явном виде перечисленные данные мы не храним. После того как они обрабатываются, для каждого человека генерируется относительно небольшой набор чисел. В нём каждое характеризует какую-то определённую тематику, которой заинтересован наш пользователь. Причём учитывается и то, насколько сильно она сейчас важна ему.
Сделать поисковые подсказки более персонализированными получилось не сразу. Казалось, что мы можем выделить какие-то кластеры пользователей, например, методом k-средних. Но выяснилось, что подобные механические методы не очень хорошо работают. И мы решили пойти другим путём, выделив смысловые тематики. Оказалось, что минимум их должно быть 400 000. Широта человеческих интересов удивила и нас самих.
В процессе работы мы поняли и то, как быстро такие интересы могут устаревать. На самом деле, даже если человек интересуется программированием на функциональных языках, прямо сейчас его может волновать ремонт у него в квартире. И нам было важно понять, что своими интересами он может считать одно, а на деле сейчас это нечто другое. Для разработки это значило, что надо организовать доставку и обработку данных так, чтобы они не успели устареть для данного конкретного пользователя.
Для того чтобы понять, добились ли мы своей цели и смогли ли сделать подсказки такими, что их можно называть персональными, мы использовали два способа. Сначала проверили, что всё это работает на исторических данных. У нас есть какой-то набор действий, которые пользователи совершали раньше. Используя их, мы пытались как бы предугадывать следующие. Мы смотрели на то, с какого знака система узнаёт запрос без персонализации и с ней. Такой её вариант мы включили сначала на пять, а потом на 10% пользователей. Дальше мы сравнивали то, как взаимодействуют с подсказками они и контрольная выборка такого же размера, но со старой версией саджеста. Как вы понимаете, 5-10% пользователей Яндекса — это миллионы человек. Эксперимент показал, что мы можем включать новую систему уже на всех — пользователям она понравилась.
Вторая часть изменений, о которых мы объявляем сегодня — персональные результаты поиска. Если раньше, как мы уже говорили, поисковые результаты могли отличаться в зависимости от того, в каком городе или месте находится человек, то теперь каждый человек имеет шанс получить результаты, подстроенные лично под него.
Фактически теперь существует столько их вариантов, сколько пользователей поиска Яндекса. С учётом наших знаний о человеке, его интересов, того, какие сайты он предпочитает и многого другого.
На практике это означает, что, например, ответ на запрос [Северное сияние] для разных людей будет отличаться. Путешественнику мы покажем ответ о природном явлении, москвичке, интересующейся покупками, — торговый центр, любителю кино — ссылки на информацию о фильме.
Персонализация позволяет улучшить ответы для 75-80% запросов каждого пользователя. Мы подробно измеряли эффект от улучшений на поиске благодаря персонализации. Например, на персонализированный первый результат люди кликают на 37% чаще, чем на неперсонализированный. Чтобы этого добиться, мы провели эксперименты с более чем 10 разными формулами ранжирования и механизмами подстройки, а экспериментальные результаты за это время видели более 50 миллионов пользователей.
Конечно, при желании персонализацию можно отключить в настройках поиска:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/cc5/cbb/980/cc5cbb98070fc4282232d12f0f7f9e2b.png)
По нашим оценкам, персонализация в целом позволяет каждому человеку, пользующемуся Яндексом, сэкономить 14% времени, быстрее получив ответ, за которым он пришёл.
Специально для Хабрахабра мы взяли интервью у людей, которые занимались этим проектом, и спросили у них о том, для чего он нужен, как устроен, какие факторы мы учитываем, а также о том, как измеряем пользу от него.
Когда-то давно для того чтобы показать человеку результаты поиска, поисковым системам было достаточно пользовательского запроса и собственного индекса. Две эти сущности легко себе представить. Но со временем стало понятно, что есть ещё одна очень важная штука — контекст запроса. Кто, откуда и когда его задаёт.
Три года назад при формировании результатов поиска мы начали учитывать регион пользователя.
Самый простой пример запроса, где это важно — доставка пиццы. Люди из Москвы и из Волгограда должны видеть ссылки на те компании по её доставке, которые работают именно у них в городе. А в некоторых городах, где сервис ещё не развит, по запросу «пицца» нужно и вовсе показывать её рецепт. С тех пор, как поиск Яндекса начал учитывать местонахождение человека, запросы, в которых уточняется регион, стали вводить на 30% реже.
Летом прошлого года мы запустили поисковую платформу «Рейкьявик». Она понимала языковые предпочтения пользователей и учитывала часто ли человек открывает результаты поиска на английском языке. Людям, которые чаще ищут англоязычные ресурсы, поиск стал отвечать большим количеством ссылок на них, и наоборот.
Сейчас мы рассказывает о нашей следующей поисковой платформе «Калининград», которая предоставляет пользователям персональные поисковые подсказки и персональные результаты поиска.
Расскажем подробнее про каждую из частей.
Персонализированные поисковые подсказки
Поиск как инструмент навигации по интернету должен помогать человеку придерживаться курса и находить самые короткие маршруты к цели. Эти задачи несколько лет решают поисковые подсказки. Они помогают правильно, а главное, быстро сформулировать запрос. Мы рассказывали о том, что они тоже научились учитывать большое количество факторов, которые также ориентируются на контекст. Одним из самых важных запусков, который помог в персонализации саджеста, стал учёт предыдущего запроса пользователя. То есть если человек искал [титаник], то при наборе в поисковой строке буквы «к», в числе первых он увидит подсказки [кейт уинслет] и [как снимали титаник], а не [контакт] и [карта метро].
![Пользователь — это его поисковая сессия](https://habrastorage.org/getpro/habr/post_images/bbb/f0d/15c/bbbf0d15c1f9f1e4c36592484c50497b.png)
Половина всех текущих запросов, которые люди задают Яндексу, связана с тем, каким был предыдущий. Мы научились извлекать из поведения пользователей данные, которые можно использовать для предсказания их поведения в будущем. Сейчас поисковые подсказки учитывают историю ваших взаимоотношений с Яндексом: какие запросы вы задавали и по каким ссылкам переходили, как эти действия были распределены по времени.
При этом надо помнить, что пользователь для поиска Яндекса выглядит приблизительно вот так:
![Пользователь для поисковой системы Яндекса](https://habrastorage.org/getpro/habr/post_images/3cb/c92/a8c/3cbc92a8cee32192694d82c36cc56728.png)
То есть в явном виде перечисленные данные мы не храним. После того как они обрабатываются, для каждого человека генерируется относительно небольшой набор чисел. В нём каждое характеризует какую-то определённую тематику, которой заинтересован наш пользователь. Причём учитывается и то, насколько сильно она сейчас важна ему.
Сделать поисковые подсказки более персонализированными получилось не сразу. Казалось, что мы можем выделить какие-то кластеры пользователей, например, методом k-средних. Но выяснилось, что подобные механические методы не очень хорошо работают. И мы решили пойти другим путём, выделив смысловые тематики. Оказалось, что минимум их должно быть 400 000. Широта человеческих интересов удивила и нас самих.
В процессе работы мы поняли и то, как быстро такие интересы могут устаревать. На самом деле, даже если человек интересуется программированием на функциональных языках, прямо сейчас его может волновать ремонт у него в квартире. И нам было важно понять, что своими интересами он может считать одно, а на деле сейчас это нечто другое. Для разработки это значило, что надо организовать доставку и обработку данных так, чтобы они не успели устареть для данного конкретного пользователя.
Для того чтобы понять, добились ли мы своей цели и смогли ли сделать подсказки такими, что их можно называть персональными, мы использовали два способа. Сначала проверили, что всё это работает на исторических данных. У нас есть какой-то набор действий, которые пользователи совершали раньше. Используя их, мы пытались как бы предугадывать следующие. Мы смотрели на то, с какого знака система узнаёт запрос без персонализации и с ней. Такой её вариант мы включили сначала на пять, а потом на 10% пользователей. Дальше мы сравнивали то, как взаимодействуют с подсказками они и контрольная выборка такого же размера, но со старой версией саджеста. Как вы понимаете, 5-10% пользователей Яндекса — это миллионы человек. Эксперимент показал, что мы можем включать новую систему уже на всех — пользователям она понравилась.
Персонализированные результаты поиска
Вторая часть изменений, о которых мы объявляем сегодня — персональные результаты поиска. Если раньше, как мы уже говорили, поисковые результаты могли отличаться в зависимости от того, в каком городе или месте находится человек, то теперь каждый человек имеет шанс получить результаты, подстроенные лично под него.
Фактически теперь существует столько их вариантов, сколько пользователей поиска Яндекса. С учётом наших знаний о человеке, его интересов, того, какие сайты он предпочитает и многого другого.
На практике это означает, что, например, ответ на запрос [Северное сияние] для разных людей будет отличаться. Путешественнику мы покажем ответ о природном явлении, москвичке, интересующейся покупками, — торговый центр, любителю кино — ссылки на информацию о фильме.
Персонализация позволяет улучшить ответы для 75-80% запросов каждого пользователя. Мы подробно измеряли эффект от улучшений на поиске благодаря персонализации. Например, на персонализированный первый результат люди кликают на 37% чаще, чем на неперсонализированный. Чтобы этого добиться, мы провели эксперименты с более чем 10 разными формулами ранжирования и механизмами подстройки, а экспериментальные результаты за это время видели более 50 миллионов пользователей.
Особенности
Конечно, при желании персонализацию можно отключить в настройках поиска:
![](https://habrastorage.org/getpro/habr/post_images/cc5/cbb/980/cc5cbb98070fc4282232d12f0f7f9e2b.png)
По нашим оценкам, персонализация в целом позволяет каждому человеку, пользующемуся Яндексом, сэкономить 14% времени, быстрее получив ответ, за которым он пришёл.