← Назад к списку
Системный дизайнData Science и MLSenior

Спроектируйте рекомендательную систему для интернет-магазина: архитектура, модели, метрики.

Короткий ответ

  • Уточнить место размещения, цель и ограничения латентности
  • Двухэтапная схема: генерация кандидатов и ранжирование
  • Кандидаты: коллаборативные эмбеддинги, популярное, похожие товары
  • Ранкер — бустинг или нейросеть на богатых признаках
  • Холодный старт: контентные признаки и популярность
  • Офлайн recall@k и NDCG, онлайн — A/B по CTR и выручке
  • Логирование показов и кликов как топливо обучения

Классическая архитектура — быстрый отбор сотен кандидатов из миллионов товаров и точное ранжирование топа тяжёлой моделью, с A/B-тестом как финальным судьёй качества.

Как сказать вслух

пример ответа

Сначала уточню контекст: где показываем рекомендации, какую метрику растим и какая допустима задержка. Дальше стандартная двухэтапная схема: лёгкие модели быстро отбирают из всего каталога несколько сотен кандидатов — по эмбеддингам, похожим товарам, популярному, — а затем тяжёлый ранкер точно сортирует их с учётом признаков пользователя, товара и контекста. Для новых пользователей и товаров предусматриваю контентный фолбэк. Офлайн сравниваю модели по метрикам ранжирования, но финальное слово — за A/B-тестом.

Подробный ответ

Основной ответ

Сначала рамки: поверхность (главная, карточка товара, письмо), бизнес-цель (CTR, конверсия, выручка, разнообразие), масштаб и SLA (десятки миллисекунд на запрос). Архитектура двухэтапная. Candidate generation сужает миллионы товаров до сотен: коллаборативная фильтрация на эмбеддингах (ALS, two-tower нейросеть) с поиском ближайших соседей в ANN-индексе (FAISS/HNSW), плюс источники «похожие товары», «часто покупают вместе», популярное в категории и регионе. Ranking: градиентный бустинг или нейросеть, обученные на логах показов и кликов предсказывать клик/покупку по признакам пользователя, товара, контекста и истории; поверх — бизнес-правила (сток, маржа, разнообразие, исключение купленного). Холодный старт: контентные эмбеддинги товара, популярность для новых пользователей. Оценка: офлайн recall@k для кандидатов, NDCG/AUC для ранкера; решения о выкатке — только по A/B. Инфраструктура: логирование показов (включая позицию — position bias), фичестор, регулярное переобучение, мониторинг.

Ключевые моменты

  • Два этапа из-за масштаба. Тяжёлую модель нельзя применить к миллиону товаров за 50 мс; отбор кандидатов решает задачу масштаба, ранкер — точности.
  • Несколько источников кандидатов. Коллаборативный, контентный и популярность дополняют друг друга и страхуют холодный старт.
  • Обучение на логах. Таргет ранкера — клики и покупки из собственных логов; важно учитывать position bias и логировать показы без кликов.
  • Офлайн не равно онлайн. Рост NDCG офлайн не гарантирует рост выручки; финальный арбитр — A/B-тест с guardrail-метриками.

Практический контекст

Самый популярный кейс ML system design на senior-позиции. Интервьюер проверяет умение держать рамку: вопросы о целях и ограничениях до архитектуры, осознанный компромисс точность-латентность, холодный старт и петля обратной связи. Типичные углубления: как обновлять рекомендации в реальном времени по сессии, как бороться с пузырём однотипных рекомендаций, что делать с position bias в логах.

Частые ошибки

  • Предлагают одну модель на весь каталог, игнорируя ограничения латентности и масштаба
  • Забывают про холодный старт новых пользователей и товаров
  • Оценивают систему только офлайн-метриками, не упоминая A/B-тест и петлю логов

ИП Кочкин Алексей Сергеевич · ИНН 390509026279 · ОГРНИП 325390000030973 · jiniys2005@yandex.ru