Выбрать фильм для двоих с разными вкусами — задача, которую жанровые фильтры и списки «лучшего за неделю» решают плохо. Разработчик проекта NextFilm описал, как он строит рекомендательную систему, способную работать даже тогда, когда о пользователе почти ничего не известно.
Центральная проблема любой рекомендательной системы — cold start: пользователь хочет получить совет, а система ещё не накопила о нём данных. Наивное решение — опираться на жанры и рейтинги — даёт слишком грубый результат. Два человека, одинаково любящие фантастику, могут ожидать принципиально разного кино: один — медленного и философского, другой — зрелищного и сюжетно плотного. Жанровая метка этого различия не улавливает.
Первый этап пайплайна — сбор стартовых оценок. Пользователь отмечает уже просмотренные фильмы и выставляет им оценки. Это критично по двум причинам: нужно отделить «не нравится» от «не смотрел», а также учесть, что у разных людей принципиально разная база просмотра — от мейнстрима последних лет до классики и авторского кино. Без этого разграничения модель начинает делать ложные выводы.
Для коллективного сигнала используется открытый датасет MovieLens 25M — 25 млн оценок по 62 тысячам фильмов от GroupLens.
На втором этапе оценки превращаются во внутренний вектор вкуса. Автор раскладывает предпочтения на несколько параметров: темп, эмоциональный тон, глубина, зрелищность, привычность формы, сюжетная плотность. Такой подход объясняет, почему два фильма одного жанра могут оказаться очень далеко друг от друга с точки зрения конкретного зрителя.
Третий этап добавляет коллективный сигнал. Для этого используется MovieLens 25M от GroupLens — открытый датасет с 25 млн оценок по более чем 62 тысячам фильмов. Логика прикладная: если пользователю понравился определённый набор фильмов, можно найти, какие ещё фильмы систематически нравятся людям с похожими паттернами. Это классический collaborative filtering, но применённый не вместо личного профиля, а поверх него — как дополнительный слой сигнала.
Четвёртый этап — дообучение на новых данных. Профиль не фиксируется после онбординга: каждая новая оценка пересматривает веса и уточняет, какие факторы сильнее всего влияют на релевантность для конкретного пользователя. Такой подход называют online updates. В кино это особенно важно: вкусы меняются, и человек может уставать от одних типов фильмов, начиная лучше реагировать на другие.
Пятый этап — GPT как финальный слой. Технически релевантный список кандидатов всё равно может выглядеть «машинным»: плохо упорядоченным и трудным для восприятия. LLM здесь не заменяет рекомендательную модель, а выполняет re-ranking и объяснение выдачи — помогает осмысленно сгруппировать результат и сделать его понятным для пользователя. Базовая релевантность при этом рождается раньше, на уровне данных и ранжирования.
Автор честно называет ограничения схемы. Cold start остаётся самым чувствительным этапом: чтобы получить приличное качество, система должна попросить пользователя оценить достаточное число фильмов — и если тот не готов тратить на это время, сигнала не хватает. Второй риск — переобучение на популярных фильмах: чем сильнее в данных выражены массовые паттерны, тем выше вероятность, что модель будет возвращаться к очевидным вариантам.
Подобная гибридная архитектура — сочетание контентной фильтрации, collaborative filtering и LLM на финальном шаге — становится стандартным подходом в индустриальных рекомендательных системах. Крупные стриминговые платформы давно используют многослойные модели, однако открытые описания конкретных инженерных решений для нишевых задач — редкость. Проект NextFilm интересен именно как задокументированный опыт построения такой системы с нуля.



