Comment une plateforme leader de l'e-commerce de mode propose des recommandations de produits personnalisées à faible latence à des millions d'utilisateurs — entièrement propulsée par la Databricks Data Intelligence Platform.
par Sunny Singh
Chaque seconde qu'un acheteur passe sur une application d'e-commerce de mode génère un flux de signaux d'intention — recherches, consultations de produits, ajouts à la liste d'envies, interactions avec le panier. Les plateformes qui convertissent ces signaux en recommandations de produits pertinentes en temps réel sont celles qui l'emportent. Les indicateurs de référence du secteur montrent qu'une personnalisation efficace peut augmenter les taux de conversion de 10 à 30 % et accroître considérablement la valeur moyenne des commandes.
Pourtant, la création d'un système de recommandation prêt pour la production reste l'un des défis d'ingénierie ML les plus complexes. Elle nécessite une ingestion de données en temps réel, une ingénierie des caractéristiques complexe, plusieurs modèles ML fonctionnant de concert et une infrastructure de service qui répond en quelques millisecondes — tout en maintenant synchronisés les stocks, la localisation et les règles métier.
Ce blog présente une architecture de référence complète pour concevoir un tel système sur Databricks, basée sur une implémentation réelle pour une plateforme d'e-commerce de mode de premier plan en Asie, desservant plus d'un million d'utilisateurs actifs mensuels sur un catalogue de plus de 100 000 SKUs.
L'architecture suit une approche de plateforme unifiée où chaque composant — de l'ingestion au service — s'exécute sur Databricks, sous la gouvernance d'Unity Catalog.
Architecture globale du système :

La plateforme ingère environ 1 000 événements par seconde — consultations de produits, recherches, ajouts au panier, achats et métadonnées de session. La solution Zerobus Ingest de Lakeflow Connect constitue le cœur de l'ingestion, acheminant les événements directement dans les tables Delta d'Unity Catalog sans nécessiter de courtier de messages autogéré.
Une distinction architecturale importante : les données de clickstream transitent par Zerobus vers le lakehouse pour le calcul hors ligne des caractéristiques et l'entraînement des modèles, mais lors de l'inférence en temps réel (chemin B), les signaux utilisateur en cours de session — ce que l'acheteur consulte en ce moment même — sont envoyés directement dans la charge utile de la requête API vers le point de terminaison Model Serving. Cela permet de contourner entièrement le stockage du lakehouse pendant la phase d'inférence, garantissant ainsi la disponibilité du contexte en temps réel sans subir de latence d'ingestion.
Zerobus accepte les données de n'importe quel client producteur Kafka standard (Java, Python, Go) via un simple changement de configuration — il suffit de faire pointer le serveur de bootstrap vers le point de terminaison Zerobus, et les enregistrements arrivent dans la table Delta cible. Pour les équipes qui exploitent déjà une infrastructure Kafka, Structured Streaming avec Declarative Pipelines offre une alternative avec la même architecture en aval.
Les données alimentent une architecture médaillon :
Couche Bronze — Flux d'événements bruts en ajout uniquement, plus données de référence :
Silver layer — Nettoyée, découpée en sessions et enrichie :
Gold layer — Tables de caractéristiques prêtes pour les modèles et jeux de données d'entraînement :
Les caractéristiques sont actualisées à des rythmes différents : les agrégats comportementaux sont mis à jour quotidiennement via des Databricks Workflows planifiés, tandis que l'ensemble du catalogue de produits est synchronisé de manière hebdomadaire. Les embeddings pour les utilisateurs et les articles sont recalculés chaque jour afin de capturer l'évolution des préférences et les nouveaux stocks. Le Databricks Feature Store gère à la fois les caractéristiques hors ligne (pour l'entraînement) et en ligne (pour le service), garantissant la cohérence entre l'entraînement et le service — les mêmes définitions de caractéristiques utilisées lors de l'entraînement du modèle sont automatiquement disponibles au moment de l'inférence via les tables en ligne Lakebase.
Unity Catalog gouverne chaque couche — assurant la traçabilité depuis l'événement clickstream brut jusqu'à la prédiction finale fournie à l'application, avec un contrôle d'accès précis garantissant la protection des PII tandis que les caractéristiques agrégées alimentent librement l'entraînement des modèles.
L'architecture de service propose deux voies complémentaires, chacune optimisée pour différents modèles d'interaction. La voie A gère les surfaces prévisibles à fort volume où le précalcul est à la fois réalisable et optimal. La voie B gère les surfaces dynamiques et sensibles à la session où l'intention immédiate de l'utilisateur doit façonner la réponse en temps réel.

Voie A — Recommandations par lots précalculées (< 100 ms)
La voie A alimente la majorité des surfaces de recommandation — carrousels de la page d'accueil, classements des pages de catégories, campagnes d'e-mailing et notifications push. Ces surfaces partagent un trait commun : l'identité de l'utilisateur et le type de surface sont connus à l'avance, de sorte que les résultats peuvent être calculés au préalable.
Un traitement par lots nocturne, orchestré par Databricks Workflows, exécute l'intégralité de l'entonnoir à 3 étapes hors ligne pour chaque utilisateur actif. Il récupère les derniers embeddings utilisateur, exécute des requêtes ANN par lots sur l'index d'articles AI Search pour générer des candidats, les évalue avec le modèle LightGBM à l'aide des caractéristiques de la couche Gold, et applique les règles métier (évaluation des stocks, proximité de livraison, diversité, mise en avant promotionnelle). Le résultat — une liste de produits classés Top-N par utilisateur (généralement 50 à 100 articles par surface) — est écrit dans les tables en ligne Lakebase, indexé par ID utilisateur et type de surface.
Au moment du service, l'application effectue une simple recherche clé-valeur : user_id + surface → liste de produits classés. Pas d'inférence de modèle, pas de recherche vectorielle, pas d'assemblage de caractéristiques — juste une lecture directe depuis Lakebase.
Comme le traitement par lots s'exécute chaque nuit, la voie A reflète les signaux et l'état des stocks de la veille. Pour la plupart des interfaces, cette fraîcheur est largement suffisante — les préférences à long terme et les affinités avec les marques évoluent sur plusieurs jours, pas en quelques minutes — et les nouveaux produits ayant reçu leurs premiers embeddings apparaîtront dans les recommandations sous 24 heures.
Voie B — Scoring en temps réel basé sur la session (< ms à 2 chiffres)
La voie B s'active lorsque le contexte de recommandation n'existe qu'au moment de la requête — « Articles similaires » sur une page de détails de produit, suggestions « Compléter le look » ou résultats de recherche reclassés dynamiquement qui s'adaptent à la navigation de l'utilisateur.
L'application d'e-commerce envoie les signaux de la session en cours — articles consultés au cours des dernières minutes, requêtes de recherche actives, contenu du panier et profils de temps de rétention — directement sous forme de charge utile de requête (payload) au point de terminaison de Model Serving via une REST API. Le point de terminaison exécute l'intégralité de l'entonnoir en 3 étapes de manière synchrone au cours d'un seul cycle de requête-réponse :
Les règles métier sont basées sur la configuration — les poids promotionnels, les seuils de diversité et les limites de stock sont lus à partir d'une table de configuration managée au moment du serving, ce qui permet aux équipes commerciales d'ajuster les règles sans redéployer le modèle.
Le point de terminaison est implémenté sous la forme d'un MLflow PyFunc model personnalisé qui orchestre le pipeline multi-étapes en interne — en interrogeant AI Search, en effectuant des recherches Lakebase, en exécutant l'inférence LightGBM et en appliquant les règles métier au sein d'un seul appel predict().
Une stratégie de repli assure la résilience : si la voie en temps réel dépasse son budget de latence, le système se dégrade de manière fluide pour proposer des articles populaires mis en cache ou les recommandations précalculées de l'utilisateur issues de la voie A.
Chaque système de recommandation doit faire face à deux scénarios de démarrage à froid :
Nouveaux utilisateurs (aucun historique de navigation) : lorsqu'un utilisateur arrive pour la première fois, le système construit un embedding utilisateur par défaut à partir des signaux démographiques disponibles — localisation, type d'appareil, contexte d'inscription et toutes préférences déclarées. Cet embedding est utilisé pour une recherche ANN dans l'index des articles, plaçant ainsi le nouvel utilisateur dans un cluster comportemental de données démographiques similaires. À mesure que l'utilisateur interagit, son embedding converge rapidement vers ses préférences réelles.
Nouveaux produits (aucune donnée d'interaction) : lorsqu'un nouveau SKU entre dans le catalogue, le système génère un embedding d'article à partir de ses attributs — titre, catégorie, marque, niveau de prix et caractéristiques visuelles extraites des images du produit. Cet embedding est utilisé pour trouver des articles existants similaires dans l'espace vectoriel, et le nouveau produit hérite des scores de recommandation initiaux de ses plus proches voisins. Les nouveaux produits apparaissent dans les recommandations lors du prochain cycle de traitement par lots quotidien.
Les modèles sont réentraînés chaque semaine à l'aide de Databricks Workflows, le suivi des expériences et la gestion des versions étant gérés via MLflow. La plateforme prend en charge le déploiement champion/challenger — les nouvelles versions de modèles sont déployées aux côtés du modèle de production, le trafic étant progressivement transféré en fonction des indicateurs de performance en ligne.
Les principaux indicateurs ML surveillés comprennent :
Ces indicateurs de modèle sont complétés par des KPIs métier — taux de clic, taux de conversion et chiffre d'affaires par session — qui servent de validation ultime que les améliorations du modèle se traduisent par un impact concret.
La détection automatique de la dérive signale lorsque les distributions de caractéristiques ou de scores de prédiction s'écartent des valeurs de référence, déclenchant une investigation ou un réentraînement accéléré. Les journaux de serving sont corrélés aux pipelines d'entraînement via des identifiants au niveau de la requête, garantissant que la boucle de rétroaction produit des données d'entraînement propres et sans fuite pour la prochaine itération du modèle. Les techniques d'entraînement sensibles à la position garantissent que le modèle apprend les véritables préférences de l'utilisateur plutôt que des artefacts liés à la position d'affichage.
Cette architecture permet :
La création d'un moteur de recommandation et de classement de qualité production ne nécessite plus d'assembler une douzaine de systèmes spécialisés. En unifiant l'ingestion en temps réel (Zerobus), la gestion des caractéristiques (Feature Store + Lakebase), l'entraînement des modèles (MLflow + Workflows), la récupération vectorielle (AI Search) et le serving à faible latence (Model Serving) sur une seule plateforme gouvernée, les équipes d'e-commerce peuvent se concentrer sur l'essentiel : comprendre leurs clients et proposer le bon produit au bon moment.
Le résultat n'est pas seulement un moteur de recommandation — c'est une plateforme de personnalisation complète, prête pour la production, qui peut servir de colonne vertébrale intelligente à toute expérience d'e-commerce.
Prêt à créer le vôtre ? Explorez les accélérateurs de solutions de moteur de recommandation Databricks, plongez dans la documentation d'AI Search ou contactez votre équipe de compte Databricks pour un atelier d'architecture.
(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original
Abonnez-vous à notre blog et recevez les derniers articles directement dans votre boîte mail.