VIPSHOP создает в 10 раз более быструю персонализированную рекомендательную систему с использованием Milvus

В 10 раз более высокая скорость запросов
чем предыдущее решение Elasticsearch
Время отклика <30 мс
для поиска по миллионам векторов
Оптимизированный пользовательский опыт
с более точными рекомендациями на основе покупательского поведения пользователей
Milvus-powered vector search has been running steadily in our recommendation systems, providing high performance and allowing us more flexibility in selecting models and algorithms.
VIPSHOP Search Service Team
О VIPSHOP
VIPSHOP — известный онлайн-ритейлер, зарегистрированный на NYSE, со штаб-квартирой в Китае, специализирующийся на предоставлении потребителям популярных брендовых товаров со значительными скидками. Его разнообразный ассортимент продукции включает моду, одежду, аксессуары, косметические товары, товары для дома и электронику. Обладая впечатляющей клиентской базой более 52 миллионов человек и обрабатывая почти 270 миллионов заказов ежегодно, VIPSHOP занял 115-е место в престижном списке Fortune China 500.
Проблемы: высокая задержка и растущие затраты на обслуживание при использовании Elasticsearch
В условиях быстрого роста бизнеса VIPSHOP столкнулся с распространенной дилеммой: по мере расширения ассортимента продукции возрастала и сложность помощи пользователям в поиске того, что им нужно. Чтобы решить эту проблему, VIPSHOP создал персонализированную рекомендательную систему на основе ключевых слов пользовательских запросов и покупательского поведения пользователей.
Ранее команда VIPSHOP использовала возможности Cosine Similarity(7.x) в Elasticsearch для работы рекомендательной системы. Однако этот подход был неэффективен по двум причинам:
Высокая задержка при векторном поиске: в среднем около 300 мс для получения результатов Top-K из миллионов векторов, что приводило к секундам общего времени отклика системы.
Высокие затраты на обслуживание индексов Elasticsearch: векторы, полученные из продуктов, покупательского поведения потребителей и всех прочих данных, использовали один и тот же набор индексов, что значительно усложняло построение, эксплуатацию и обслуживание индексов.
VIPSHOP попытался повысить производительность Elasticsearch, разработав плагин локально-чувствительного хеширования. Однако он лишь повысил пропускную способность и не смог сократить время векторного поиска до менее чем 100 мс. Поэтому команда по-прежнему срочно нуждалась в новом стеке векторного поиска для повышения производительности своей системы.
Решение Milvus
После обширного исследования команда VIPSHOP выбрала Milvus, векторную базу данных с открытым исходным кодом, способную обрабатывать миллиарды векторных эмбеддингов и обеспечивать молниеносные ответы. Milvus также предлагает богатые возможности, такие как распределенное развертывание, SDK для нескольких языков и разделение чтения/записи, что делает его более предпочтительным выбором по сравнению с Elasticsearch и многими другими решениями для векторного поиска, такими как FAISS.
Архитектура рекомендательной системы VIPSHOP с использованием Milvus
Диаграмма выше демонстрирует архитектуру рекомендательной системы VIPSHOP с Milvus. Она состоит из двух основных частей:
Процесс записи: команда VIPSHOP использовала модель глубокого обучения для преобразования характеристик каждого продукта в векторные эмбеддинги, а затем импортировала их в Milvus через MySQL и инструмент ETL.
Процесс чтения: команда использовала модель глубокого обучения для преобразования запросов потребителей и покупательского поведения в векторы, а затем извлекала похожие результаты в Milvus. Milvus выполнял поиск по сходству и возвращал потребителям Top-K наиболее релевантных результатов.
Подробности реализации Milvus: обновление данных и recall
Обновление данных и recall — наиболее важные процессы для рекомендательной системы на базе Milvus.
Процедура обновления данных обеспечивает синхронизацию данных, включая такие задачи, как запись векторных данных, определение объемов векторных данных, построение индексов, предварительная загрузка индексов и управление алиасами. Она начинается с проверок товарных данных, обеспечивая соответствие количества в MySQL существующим данным. Затем следует весь процесс построения данных, включая инициализацию алиасов в Redis, создание новых коллекций, пакетную запись векторов и предварительную загрузку индекса в Milvus. После проверки данных новой коллекции система бесшовно переключает алиасы между несколькими коллекциями данных.
Процесс отзыва, критически важный для рекомендации товаров, включает получение векторов, связанных с запросами и покупательским поведением потребителей, вычисление расстояния между ними и объединение результатов. Используя Milvus, система параллельно и асинхронно извлекает данные из разных разделов Milvus, вычисляет сходство векторов и ранжирует лучшие результаты на основе расстояния сходства. Затем, после нескольких обращений к данным разделов Milvus, она представляет пользователям окончательные результаты рекомендаций. Общий рабочий процесс выглядит следующим образом:
В следующей таблице показана производительность трех основных сервисов Milvus. Как показано в таблице, средняя задержка при отзыве результатов Top-K составляет около 10 мс.
| Сервис | Роль | Входные параметры | Выходные параметры | Задержка ответа |
|---|---|---|---|---|
| Получение векторов пользователей | Получить вектор пользователя | информация о пользователе + запрос | вектор пользователя | 10 мс |
| Milvus Search | Вычислить сходство векторов и вернуть результаты Top-K | вектор пользователя | вектор товара | 10 мс |
| Логика планирования | Параллельный отзыв и объединение результатов | Векторы товаров, отозванные по нескольким каналам, и оценка сходства | товары Top-K | 10 мс |
Результаты: более высокая производительность системы и оптимальный пользовательский опыт
Внедрение Milvus в рекомендательную систему VIPSHOP значительно повысило общую производительность системы, включая:
Ускорение запросов в 10 раз
С использованием Milvus время запросов и ответов системы было сокращено до менее чем 30 мс, что в 10 раз быстрее предыдущего решения на Elasticsearch.
Улучшенная масштабируемость системы
Распределенное развертывание Milvus и поддержка горизонтального масштабирования позволяют рекомендательной системе без усилий обрабатывать быстро растущие объемы данных и пользовательские запросы без ущерба для производительности.
Улучшенный пользовательский опыт
Milvus оптимизирует процесс рекомендаций, предоставляя персонализированные предложения товаров на основе предпочтений пользователей и поискового намерения, повышая удовлетворенность и вовлеченность пользователей.
Сниженные затраты на обслуживание
Milvus эффективно обрабатывает векторные данные и оптимизирует механизмы запросов, снижая общие затраты на обслуживание рекомендательной системы.
Извлеченные уроки и рекомендуемые практики
В ходе работы с Milvus команда VIPSHOP извлекла некоторые уроки и получила несколько важных выводов для оптимальной производительности системы и пользовательского опыта:
В ситуациях, когда операции чтения имеют приоритет, внедрение стратегии развертывания с разделением чтения и записи может повысить общую производительность системы.
В Java-клиенте Milvus отсутствует встроенный механизм переподключения из-за его размещения в памяти в сервисе отзыва. Команда VIPSHOP создала собственный пул соединений, чтобы обеспечить стабильное соединение между Java-клиентом и сервером с помощью проверки heartbeat.
В Milvus иногда возникают медленные запросы из-за недостаточного прогрева новых коллекций. Чтобы решить эту проблему, команда VIPSHOP имитировала запросы к новой коллекции.
Чтобы достичь правильного баланса между производительностью и точностью извлечения, команда VIPSHOP рекомендует проводить строгие эксперименты по нагрузочному тестированию, адаптированные к вашему конкретному бизнес-сценарию, и задавать разумное пороговое значение для оптимизации этих параметров.
В сценариях со статическими данными эффективнее сначала импортировать все данные в коллекцию, а затем строить индексы.
- О VIPSHOP
- Проблемы: высокая задержка и растущие затраты на обслуживание при использовании Elasticsearch
- Решение Milvus
- Результаты: более высокая производительность системы и оптимальный пользовательский опыт
- Извлеченные уроки и рекомендуемые практики
Контент
Пример использования
Отрасль
Электронная коммерция


