VIPSHOP crée un système de recommandation personnalisé 10 fois plus rapide avec Milvus

Vitesse des requêtes 10x plus rapide
que la solution Elasticsearch précédente
Temps de réponse <30 ms
pour effectuer des recherches sur des millions de vecteurs
Expérience utilisateur optimisée
avec des recommandations plus précises basées sur les comportements d’achat des utilisateurs
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
À propos de VIPSHOP
VIPSHOP est un détaillant en ligne renommé coté au NYSE et basé en Chine, spécialisé dans la fourniture de produits de marques populaires aux consommateurs avec des remises importantes. Sa gamme de produits diversifiée comprend la mode, les vêtements, les accessoires, les produits de beauté, les articles pour la maison et l’électronique. Fort d’une base client impressionnante de plus de 52 millions de personnes et facilitant près de 270 millions de commandes par an, VIPSHOP a gagné sa place comme 115e entrée dans le prestigieux classement China 500 de Fortune.
Défis : latence élevée et coûts de maintenance en forte hausse avec Elasticsearch
Avec la croissance rapide de son activité, VIPSHOP a été confronté à un dilemme courant : à mesure que son portefeuille de produits s’élargissait, la complexité d’aider les utilisateurs à découvrir ce qu’ils recherchaient augmentait également. Pour résoudre ce problème, VIPSHOP a créé un système de recommandation personnalisé basé sur les mots-clés des requêtes des utilisateurs et les comportements d’achat des utilisateurs.
Auparavant, l’équipe VIPSHOP utilisait les capacités de similarité cosinus (7.x) d’Elasticsearch pour alimenter le système de recommandation. Cependant, cette approche était inefficace pour deux raisons :
Latence élevée dans la recherche vectorielle : environ 300 ms en moyenne pour récupérer les résultats Top-K parmi des millions de vecteurs, entraînant des temps de réponse globaux du système de plusieurs secondes.
Coûts élevés de maintenance des index Elasticsearch : les vecteurs dérivés des produits, des comportements d’achat des consommateurs et de toutes les autres données partageaient le même ensemble d’index, ce qui rendait la construction, l’exploitation et la maintenance des index beaucoup plus compliquées.
VIPSHOP a tenté d’améliorer les performances d’Elasticsearch en développant un plugin de hachage sensible à la localité. Cependant, celui-ci n’a amélioré que le débit et n’a pas réussi à réduire le temps de recherche vectorielle en dessous de 100 ms. Par conséquent, l’équipe avait toujours un besoin urgent d’une nouvelle pile de recherche vectorielle pour améliorer les performances de son système.
La solution Milvus
Après des recherches approfondies, l’équipe VIPSHOP a opté pour Milvus, une base de données vectorielle open source capable de gérer des milliards d’intégrations vectorielles et de fournir des réponses ultra-rapides. Milvus offre également des fonctionnalités riches telles que le déploiement distribué, des SDK multilingues et la séparation lecture/écriture, ce qui en fait un choix supérieur à Elasticsearch et à de nombreuses autres solutions de recherche vectorielle comme FAISS.
L’architecture du système de recommandation de VIPSHOP utilisant Milvus
Le schéma ci-dessus illustre l’architecture du système de recommandation de VIPSHOP avec Milvus. Il se compose de deux parties principales :
Processus d’écriture : l’équipe VIPSHOP a utilisé un modèle d’apprentissage profond pour transformer les caractéristiques de chaque produit en intégrations vectorielles, puis les a importées dans Milvus via MySQL et un outil ETL.
Processus de lecture : l’équipe a utilisé le modèle d’apprentissage profond pour transformer les requêtes des consommateurs et leurs comportements d’achat en vecteurs, puis a récupéré des résultats similaires dans Milvus. Milvus a effectué une recherche de similarité et renvoyé aux consommateurs les résultats Top-K les plus pertinents.
Détails de l’implémentation de Milvus : mise à jour et rappel des données
La mise à jour et le rappel des données sont les processus les plus essentiels du système de recommandation propulsé par Milvus.
La procédure de mise à jour des données garantit la synchronisation des données, englobant des tâches telles que l’écriture des données vectorielles, la détection des volumes de données vectorielles, la construction d’index, le préchargement des index et la gestion des alias. Elle commence par des vérifications des données des marchandises, garantissant que la quantité dans MySQL correspond aux données existantes. L’ensemble du processus de construction des données suit, y compris l’initialisation des alias dans Redis, la création de nouvelles collections, l’écriture des vecteurs par lots et le préchargement de l’index dans Milvus. Après vérification des données de la nouvelle collection, le système bascule de manière transparente les alias entre plusieurs collections de données.
Le processus de rappel, crucial pour recommander des produits, consiste à acquérir des vecteurs liés aux requêtes et aux comportements d’achat des consommateurs, à calculer leur distance et à fusionner les résultats. Grâce à Milvus, le système récupère simultanément et de manière asynchrone les données dans différentes partitions Milvus, calcule les similarités vectorielles et classe les meilleurs résultats en fonction de la distance de similarité. Ensuite, après plusieurs appels aux données de partition Milvus, il présente les résultats finaux de recommandation aux utilisateurs. Le flux de travail global est le suivant :
Le tableau suivant présente les performances de trois principaux services Milvus. Comme le montre le tableau, la latence moyenne pour le rappel des résultats Top-K est d’environ 10 ms.
| Service | Rôle | Paramètres d’entrée | Paramètres de sortie | Latence de réponse |
|---|---|---|---|---|
| Acquisition des vecteurs utilisateur | Obtenir le vecteur utilisateur | infos utilisateur + requête | vecteur utilisateur | 10 ms |
| Milvus Search | Calculer la similarité vectorielle et renvoyer les résultats Top-K | vecteur utilisateur | vecteur d’article | 10 ms |
| Logique de planification | Rappel et fusion simultanés des résultats | Vecteurs d’articles rappelés multicanaux et score de similarité | Articles Top-K | 10 ms |
Résultats : meilleures performances du système et expérience utilisateur optimale
L’adoption de Milvus dans le système de recommandation de VIPSHOP a considérablement amélioré les performances globales du système, notamment :
Vitesse de requête 10 fois plus rapide
Avec Milvus, le temps de requête et de réponse du système a été réduit à moins de 30 ms, soit 10 fois plus rapide que la solution Elasticsearch précédente.
Évolutivité du système améliorée
Le déploiement distribué de Milvus et sa prise en charge de la mise à l’échelle horizontale permettent au système de recommandation de gérer sans effort l’augmentation rapide des volumes de données et des requêtes utilisateur, sans compromettre les performances.
Expérience utilisateur améliorée
Milvus optimise le processus de recommandation afin de fournir des suggestions de produits personnalisées en fonction des préférences utilisateur et de l’intention de recherche, améliorant ainsi la satisfaction et l’engagement des utilisateurs.
Coûts de maintenance réduits
Milvus gère efficacement les données vectorielles et rationalise les mécanismes de requête, réduisant ainsi les coûts globaux de maintenance du système de recommandation.
Enseignements tirés et pratiques recommandées
Au cours de leur parcours avec Milvus, l’équipe VIPSHOP a tiré certains enseignements et acquis plusieurs informations cruciales pour optimiser les performances du système et l’expérience utilisateur :
Dans les situations où les opérations de lecture sont prioritaires, l’adoption d’une stratégie de déploiement avec séparation lecture-écriture peut améliorer les performances globales du système.
Le client Java Milvus ne dispose pas d’un mécanisme de reconnexion intégré en raison de sa résidence en mémoire dans le service de rappel. L’équipe VIPSHOP a créé son propre pool de connexions afin d’assurer une connectivité constante entre le client Java et le serveur grâce à un test de pulsation.
Des requêtes lentes se produisent occasionnellement dans Milvus en raison d’un préchauffage insuffisant des nouvelles collections. Pour résoudre ce problème, l’équipe VIPSHOP a simulé des requêtes sur la nouvelle collection.
Pour trouver le bon équilibre entre performances de récupération et précision, l’équipe VIPSHOP recommande de mener des expériences rigoureuses de tests de charge adaptées à votre scénario métier spécifique et de définir une valeur seuil raisonnable afin d’optimiser ces paramètres.
Dans les scénarios impliquant des données statiques, il est plus efficace d’importer d’abord toutes les données dans la collection, puis de créer les index ultérieurement.
- À propos de VIPSHOP
- Défis : latence élevée et coûts de maintenance en forte hausse avec Elasticsearch
- La solution Milvus
- Résultats : meilleures performances du système et expérience utilisateur optimale
- Enseignements tirés et pratiques recommandées
Contenu
Cas d'usage
Secteur d'activité
Commerce électronique


