Персонализированные рекомендации товаров на основе пользовательского поведения и эмбеддингов#

Контекст#

Современные онлайн-магазины сталкиваются с необходимостью предложения клиентам персонализированных рекомендаций, основанных не только на истории покупок, но и на смысловом (семантическом) сходстве между товарами и запросами пользователей.

Platform V Vector DB (далее - Vector DB) позволяет решать эту задачу через хранение и поиск по эмбеддингам — числовым представлениям товаров, категорий, текстовых запросов и поведения пользователей. Такой подход позволяет находить товары, максимально соответствующие интересам клиента, даже если они ранее не взаимодействовали с ними.

Система состоит из:

  • ML-модели, которая генерирует эмбеддинги для товаров и текстовых запросов;

  • базы данных, которая хранит векторы товаров и позволяет эффективно искать похожие;

  • сервиса рекомендаций, который использует API для получения наиболее релевантных товаров.

Общая схема работы системы:

[Пользователь] → [Фронтенд] → [Сервис рекомендаций] → [Vector DB] → [Рекомендации]

Проблема#

Данный паттерн предназначен для решения следующих проблем:

  • Отсутствие способа быстро и точно находить товары, близкие по смыслу к интересам пользователя.

  • Недостаточная точность рекомендаций, основанных только на истории покупок или категориях.

  • Сложности масштабирования системы рекомендаций при увеличении объема данных (например, до миллионов товаров).

  • Невозможность фильтрации рекомендаций по дополнительным атрибутам (цена, бренд, категория).

Решение#

Для реализации персонализированных рекомендаций необходимо выполнить следующие шаги:

  1. Подготовка данных:

    • Используйте ML-модель (например, Sentence-BERT, ResNet, CLIP) для генерации эмбеддингов:

      • товаров (описание, категории, изображения);

      • запросов пользователей (поиск, текстовые комментарии).

    • Добавьте векторы и метаданные (цена, категория, бренд).

  2. Настройка:

    • Создайте коллекцию с нужной размерностью векторов и метрикой (например, Cosine).

    • Установите индексирование и параметры поиска для оптимизации производительности.

  3. Интеграция с сервисом рекомендаций:

    • При получении запроса пользователя:

      • Получите эмбеддинг запроса (например, «кроссовки для бега»).

      • Выполните поиск на основе этого эмбеддинга.

      • Отфильтруйте результаты по категориям, цене и другим атрибутам.

      • Верните список рекомендованных товаров.

  4. Отображение рекомендаций:

    • Выведите рекомендации на фронтенде: карусель, блок «Вы также можете быть заинтересованы» и т.д.