Спроектируйте рекомендательную систему для интернет-магазина: архитектура, модели, метрики.
Короткий ответ
- Уточнить место размещения, цель и ограничения латентности
- Двухэтапная схема: генерация кандидатов и ранжирование
- Кандидаты: коллаборативные эмбеддинги, популярное, похожие товары
- Ранкер — бустинг или нейросеть на богатых признаках
- Холодный старт: контентные признаки и популярность
- Офлайн 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-тест и петлю логов