ML-рекомендации во VK Mini Apps: архитектура, российские инструменты, реальный кейс
Мы — команда, занимающаяся разработкой мини-приложений под ВКонтакте, и регулярно решаем задачи по персонализации и машинному обучению внутри экосистемы VK. Наш опыт показывает: даже простейшая модель может увеличить вовлечённость на 20–40% уже в первую неделю после запуска.
Зачем вообще встраивать рекомендации?
В эпоху переизбытка контента и товаров пользователь теряет фокус, если вы не подсказываете ему, что стоит выбрать. Персональные рекомендации позволяют:
- Повысить вовлечённость и глубину взаимодействия;
- Сократить путь до целевого действия;
- Повысить среднее время сессии;
- Улучшить Retention — возвращаемость пользователей;
- Повысить эффективность монетизации и рекламной отдачи.
Примеры:
- Приложение с услугами показывает не все категории, а те, что похожи на прошлые заказы;
- Образовательный мини-курс предлагает новые модули, которые совпадают с интересами пользователя;
- Контентное приложение показывает подборки «Похожие на просмотренное» и «Часто смотрят вместе».
Архитектура решения
В VK Mini Apps нельзя запускать ML-код прямо в браузере. Вся логика рекомендаций должна находиться на сервере. Мы используем следующий стек:
- Frontend: React + VKUI, VK Bridge для получения vk_user_id и параметров запуска.
- Backend: FastAPI (иногда Flask) + PostgreSQL или ClickHouse.
- ML-слой: отдельный инференс-сервер с моделью (CatBoost, Matrix Factorization, AutoML).
- API-интерфейс: REST или GraphQL для получения рекомендаций.
Пример API-запроса
GET /api/recommendations?vk_user_id=12345&type=products
Ответ:
{
«items»: [
{«id»: «101», «title»: «Курс Python», «score»: 0.89},
{«id»: «102», «title»: «ML для новичков», «score»: 0.85}
]
}
Для минимизации нагрузки добавляем слой кэширования (Redis), особенно для популярных пользователей или неподписанных гостей.
Логирование: топливо для ML
Никакая модель не работает без данных. Поэтому мы настраиваем событийную систему с первого дня. Что логируем:
- screen_view — экраны, которые смотрел пользователь;
- item_click — клики по товарам, курсам, видео;
- scroll — прокрутка и глубина вовлечения;
- purchase — факт покупки или завершённого действия;
- time_on_page — сколько времени провёл на экране.
Все логи пишем в ClickHouse (для анализа) и PostgreSQL (для профилей). В будущем они используются как признаки в модели.
Российские ML-инструменты
Стараемся использовать только российские решения:
- Yandex DataSphere — обучение и деплой моделей;
- SberCloud ML Space — управление экспериментами, трекинг версий;
- CatBoost — для табличных данных и рекомендательных систем;
- LightAutoML — автообучение с хорошими метриками;
- FastAPI — быстрая REST-обёртка для инференса.
Кейс: рекомендации в образовательном VK Mini App
Один из наших клиентов — платформа онлайн-курсов — столкнулся с проблемой: пользователи запускали приложение, но не доходили до обучения. Мы внедрили персональные рекомендации:
- Сегментировали пользователей по интересам;
- Обучили CatBoost-модель на логах просмотров;
- Добавили блок «Вам может понравиться».
Результаты через 2 недели:
- +41% к вовлечённости;
- +22% к возвратам;
- +35% к кликам в рекомендованных блоках;
- -18% к отказам на первом экране.
Вывод
ML-рекомендации — это не обязательно сложно. Мы рекомендуем:
- начинать с простых алгоритмов (popular + recent);
- собирать события с первого дня;
- использовать VK ID как базовый ключ;
- хранить данные на российских серверах.
Мы, как команда разработчиков VK Mini Apps, помогаем внедрять персонализацию, ML и аналитику в мини-приложения любого уровня.