Ответ вслух Senior Рекомендательные системы спрашивают часто обновлено

ML system design: рекомендации товаров на главной

Вопрос

Спроектируйте систему рекомендаций товаров на главной странице маркетплейса с 50 млн пользователей и 10 млн товаров.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала требования: цель это рост выручки и удержания, при этом нужны разнообразие и справедливость к продавцам; ответ за 100-200 мс. Офлайн буду мерить recall@k на этапе кандидатов и NDCG на ранжировании, онлайн выручку на пользователя и конверсию в A/B.

Что должно прозвучать в ответе

  • Цель и метрики: онлайн (выручка, конверсия, удержание), офлайн (recall@k, NDCG), ограничения по латентности

  • Данные: просмотры, корзины, покупки, признаки товаров, контекст; неявный фидбек и негативы

  • Кандидаты: two-tower и ANN, item-to-item, популярное, недавно просмотренное

  • Ранкер: бустинг или нейросеть по богатым признакам, затем бизнес-правила и разнообразие

  • Холодный старт, петля обратной связи и exploration

  • Инфраструктура и запуск: feature store, офлайн и онлайн-признаки, A/B, мониторинг

Что могут спросить следом

  • Как обеспечить ответ за 100 мс?
  • Как не рекомендовать то, что пользователь уже купил?
  • Как оценивать влияние на продавцов?

Разбор

Сначала требования: цель это рост выручки и удержания, при этом нужны разнообразие и справедливость к продавцам; ответ за 100-200 мс. Офлайн буду мерить recall@k на этапе кандидатов и NDCG на ранжировании, онлайн выручку на пользователя и конверсию в A/B. Данные: логи просмотров, корзин, покупок, поиска с таймстемпами, каталог (категории, цены, тексты, картинки), контекст (устройство, время). Архитектура двухэтапная. Генерация кандидатов из нескольких источников: two-tower модель с ANN-индексом по эмбеддингам товаров, item-to-item по совместным покупкам от недавно просмотренного, популярное в сегменте, новинки для исследования. Получаю около тысячи кандидатов. Ранкер, например градиентный бустинг или нейросеть, учится на кликах и покупках с признаками пользователя, товара, их пересечений и контекста, цель взвешена по выручке. Затем пост-обработка: убрать купленное и недоступное, разнообразие категорий, бизнес-правила. Холодный старт решаю контентными эмбеддингами и долей показов на exploration, петлю обратной связи учитываю логированием вероятностей показа. Инфраструктура: feature store с одинаковыми признаками офлайн и онлайн, батчевый пересчёт эмбеддингов товаров, стриминговые признаки сессии, мониторинг качества и задержек, запуск через A/B.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.