Рекомендации Лавки учатся учитывать текущую корзину
Векторы, рассчитанные раз в сутки, не видят, что человек только что положил в корзину. Следующая порция рекомендаций уже должна учитывать это действие. Команда перенесла обработку истории в реальное время и подключила оценки трансформера к финальному бустингу.
Видео · на русском
Рантайм-трансформер в персональных рекомендациях Яндекс Лавки / Марк НарусовМарк Нарусов · Опубликовано: 30 мая 2025 г.
Исходный доклад · Открыть оригинал
Корзина меняется между порциями выдачи
Бесконечная лента формируется запросами по 20 товаров. Между запросами человек может добавить продукт, и новый запрос уже приходит с обновлённой корзиной. Для такой поверхности суточная задержка представления пользователя особенно заметна.
Спикер также отмечает отдельное изменение архитектуры корзины: переход от отбора кандидатов к ранжированию всего доступного на конкретном складе ассортимента. Не следует автоматически приписывать эту схему всем поверхностям Лавки.

Масштаб и ограничения рекомендаций в Лавке.
Источник: Кадр из докладаЧто именно вычисляет трансформер
Товар кодируют по названию, категории и стране. История содержит представления товаров, типы действий и позиции событий. Несколько специальных токенов собирают разные представления пользователя. Их близость к товарам становится признаками бустинга.
Обучение двухэтапное: сначала предсказание покупки в следующей сессии, затем настройка под финальное ранжирование. Первоначально векторы обновляли офлайн; новое внедрение должно было устранить отставание от текущей сессии.

Как представить товар числовыми признаками.
Источник: Кадр из докладаСвежая история должна успевать до ранжирования
Получение представления запускается асинхронно вместе с другой работой рекомендательного сервиса. Отдельные компоненты готовят историю и выполняют нейросетевые вычисления.
Простой лимит на число строк истории оказался ошибкой: среди последних записей могло не набраться нужного количества событий определённого типа. Решением стали отдельные параллельные запросы с необходимыми квотами действий. Это пример того, как способ чтения данных меняет фактический вход модели.
19:00 — фрагмент докладаПервый запуск улучшил новое, но не продажи
Бустинг учится на товарах, которые пользователь видел, а применяется ко всему ассортименту. Новые трансформерные признаки подняли непривычные товары, с которыми у ранжировщика ещё не было достаточного опыта. В первом запуске вырос Discovery, но значимого роста выручки не получили.
После обучения на новых показах модель лучше разобралась, когда таким товарам стоит давать высокую позицию. Поэтому результат второй итерации нельзя объяснить одним добавленным нейросетевым слоем.

Обучающие примеры для градиентного бустинга.
Источник: Кадр из докладаРезультат относится к конкретным поверхностям
Во второй итерации спикер сообщает о росте выручки с корзины на 6–8%. Отдельно — о росте Discovery всей Лавки на 1,5%: этот показатель связан с покупками из новых для человека категорий. Это не рост всей выручки Лавки на 6–8%.
Дополнительно обсуждаются товары из длинного хвоста и новые позиции на складе, но для всех этих эффектов в речи нет отдельных численных оценок.
25:00 — фрагмент доклада