Персонализированные рекомендации товаров на основе пользовательского поведения и эмбеддингов#
Контекст#
Современные онлайн-магазины сталкиваются с необходимостью предложения клиентам персонализированных рекомендаций, основанных не только на истории покупок, но и на смысловом (семантическом) сходстве между товарами и запросами пользователей.
Platform V Vector DB (далее - Vector DB) позволяет решать эту задачу через хранение и поиск по эмбеддингам — числовым представлениям товаров, категорий, текстовых запросов и поведения пользователей. Такой подход позволяет находить товары, максимально соответствующие интересам клиента, даже если они ранее не взаимодействовали с ними.
Система состоит из:
ML-модели, которая генерирует эмбеддинги для товаров и текстовых запросов;
базы данных, которая хранит векторы товаров и позволяет эффективно искать похожие;
сервиса рекомендаций, который использует API для получения наиболее релевантных товаров.
Общая схема работы системы:
[Пользователь] → [Фронтенд] → [Сервис рекомендаций] → [Vector DB] → [Рекомендации]
Проблема#
Данный паттерн предназначен для решения следующих проблем:
Отсутствие способа быстро и точно находить товары, близкие по смыслу к интересам пользователя.
Недостаточная точность рекомендаций, основанных только на истории покупок или категориях.
Сложности масштабирования системы рекомендаций при увеличении объема данных (например, до миллионов товаров).
Невозможность фильтрации рекомендаций по дополнительным атрибутам (цена, бренд, категория).
Решение#
Для реализации персонализированных рекомендаций необходимо выполнить следующие шаги:
Подготовка данных:
Используйте ML-модель (например, Sentence-BERT, ResNet, CLIP) для генерации эмбеддингов:
товаров (описание, категории, изображения);
запросов пользователей (поиск, текстовые комментарии).
Добавьте векторы и метаданные (цена, категория, бренд).
Настройка:
Создайте коллекцию с нужной размерностью векторов и метрикой (например, Cosine).
Установите индексирование и параметры поиска для оптимизации производительности.
Интеграция с сервисом рекомендаций:
При получении запроса пользователя:
Получите эмбеддинг запроса (например, «кроссовки для бега»).
Выполните поиск на основе этого эмбеддинга.
Отфильтруйте результаты по категориям, цене и другим атрибутам.
Верните список рекомендованных товаров.
Отображение рекомендаций:
Выведите рекомендации на фронтенде: карусель, блок «Вы также можете быть заинтересованы» и т.д.