Спроектировать рекомендательную ленту видео с товарами
В e-commerce приложении запускается TikTok-like лента видео на главной. К каждому видео привязаны товары, видео около 1500 и живут 1-2 месяца. Истории по новой поверхности нет. Как спроектировать систему рекомендаций?
Короткий ответ
Начать с цели и ограничений, запустить offline MVP с простым ранжированием и exploration, залогировать события, затем обучать ranker и проверять через A/B.
Полный разбор
Хороший дизайн начинается не с модели, а с product objective: GMV/profit, discovery non-food ассортимента, guardrails по заказам и UX. Для 1500 видео можно на первом этапе скорить всех кандидатов offline и хранить top-N на пользователя или сегмент. MVP строится на popularity/GMV/маркетинговом приоритете, свежести и availability, но часть трафика нужно оставить под exploration.
После запуска нужно собрать impression logs, позицию, user context, video/product features и downstream-события: open, watchtime, переход к товарам, add-to-cart, purchase, attributed GMV. Следующая итерация - pointwise/pairwise ranker, diversity, frequency caps, freshness и fallback для новых пользователей.
Теория
При малом числе кандидатов отдельный candidate generator не обязателен. Главный риск новой поверхности - холодный старт и feedback loop, поэтому baseline должен одновременно давать качество и собирать обучающие данные.
Типичные ошибки
- Начинать со сложной нейросети без бизнес-метрики.
- Не логировать показы и позицию, а потом строить смещенный датасет.
- Оптимизировать только CTR или watchtime без связи с покупками и маржой.
Как отвечать на собеседовании
- Сначала проговори assumptions: candidate count, lifetime видео, objective, latency.
- Раздели MVP, сбор данных и следующую ML-итерацию.