Comment Milvus alimente la recherche IA de BitAuto qui comprend réellement ses 142 millions d’acheteurs de voitures

95 % de précision de récupération
en hausse par rapport à 45 % avec FAISS
10+ services d’IA
alimenté par un déploiement Milvus
99 % de précision de récupération
Pour le service client, en hausse par rapport à 40 %
142 M d’utilisateurs actifs mensuels
pour les cas d’utilisation grand public, professionnels et internes
Cet article est basé sur des documents partagés par Zheng Li et l’équipe BitAuto AI Platform. Il couvre leur migration de FAISS vers Milvus, le pipeline de récupération qui a fait passer la précision de 45 % à 95 %, ainsi que les enseignements tirés de la mise à l’échelle de Milvus sur plus de 10 services d’IA pour 142 millions d’utilisateurs mensuels. Édité et republié avec l’autorisation de l’équipe BitAuto.
À propos de BitAuto
BitAuto, fondé en 2000, est l’un des sites automobiles les plus visités d’Asie, avec 142 millions d’utilisateurs actifs mensuels. Les consommateurs l’utilisent pour comparer les caractéristiques des voitures, lire des avis de propriétaires, regarder des essais routiers et consulter les prix en direct de plus de 20 000 concessions. L’entreprise vend de la publicité et du marketing numérique aux constructeurs automobiles et aux concessionnaires, et propose une plateforme SaaS pour la gestion des concessions.
Le défi
Les problèmes de recherche de BitAuto sont apparus en deux étapes. La recherche par mots-clés ne pouvait pas gérer la façon dont les vrais utilisateurs posent des questions. FAISS le pouvait, mais il ne tenait pas à l’échelle de la production.
Les acheteurs de voitures recherchent en langage naturel — la recherche par mots-clés ne pouvait pas suivre
Les 142 millions d’utilisateurs de BitAuto ne recherchent pas par mots-clés. Ils saisissent des exigences telles que « Un SUV spacieux pour une famille de trois personnes, à moins de 30 000 $, avec une consommation de carburant inférieure à celle du CR-V. » L’infrastructure de recherche basée sur les mots-clés ne pouvait pas gérer les synonymes (« spacieux » vers « vaste » ou « adapté aux familles »). Elle ne pouvait pas non plus combiner plusieurs conditions dans une seule requête.
Les utilisateurs pouvaient toujours trouver des informations utiles, mais les résultats n’étaient pas toujours précis — et pour les requêtes à conditions multiples ou en langage naturel, le système passait souvent complètement à côté des meilleures correspondances. Le même problème se manifestait dans le service client, où les agents ne parvenaient parfois pas à retrouver la bonne réponse aux questions portant sur des configurations spécifiques.
FAISS a prouvé que la recherche sémantique fonctionnait, mais ne pouvait pas passer à l’échelle
En 2022, l’équipe a construit un prototype sur FAISS pour tester la recherche vectorielle. Lors d’un petit pilote avec moins de 100 000 utilisateurs, cela a fonctionné. « Spacious MPV » correspondait aux annonces « large-space SUV ». La précision a atteint environ 45 % sur un jeu de test étiqueté par des humains.
Mais FAISS est une bibliothèque d’algorithmes, pas une base de données. Il ne dispose d’aucune persistance, d’aucune mise à l’échelle horizontale et d’aucune récupération après panne. Tout cela devrait être construit à partir de zéro. Les ingénieurs passeraient la moitié de leur temps à maintenir le système en fonctionnement plutôt qu’à améliorer la recherche. Et le système en production devrait gérer des dizaines de millions d’enregistrements avec plus de 100 millions de mises à jour quotidiennes. FAISS ne fonctionnerait pas.
Pourquoi BitAuto a choisi Milvus
L’équipe a évalué plusieurs options selon six dimensions. Voici comment elles se comparaient :
| Dimension | Facebook FAISS | Qdrant | Milvus | Autres (Chroma, Weaviate) |
|---|---|---|---|---|
| Déploiement | Intégré dans l’application | Autonome/cluster | Autonome/cluster/lite (architecture distribuée native pour l’IA) | Autonome/cluster simple |
| Scalabilité | À construire à partir de zéro | Mise à l’échelle horizontale prise en charge | Mise à l’échelle verticale et horizontale ; montée en charge facile pour gérer la recherche vectorielle au niveau du milliard | Limitée |
| Gestion des données | Pas de persistance ; nécessite un dev personnalisé | Persistance, CRUD | CRUD complet, données dynamiques, partitionnement | CRUD de base |
| Recherche hybride | Non prise en charge | Prise en charge | Prise en charge (filtre scalaire + recherche vectorielle,+ recherche plein texte) | Limitée |
| Communauté | Forte en recherche ; nécessite un encapsulage pour la production | Plus récente, en croissance rapide | Grande communauté, documentation riche (à ce jour, plus de 43K étoiles GitHub) | Plus récente, en croissance rapide |
| Courbe d’apprentissage | Élevée (codage d’intégration approfondi requis) | Moyenne | Faible | Faible |
Trois éléments ont fait de Milvus le choix évident pour BitAuto :
Architecture distribuée native IA. Le calcul et le stockage sont séparés. L’ajout de Query Nodes augmente la capacité de lecture ; l’ajout de Data Nodes prend en charge la croissance des données. Aucune refonte applicative nécessaire.
Gestion des données prête pour la production. CRUD complet, plusieurs types d’index, partitionnement et recherche hybride sont tous intégrés. Pas besoin de développement système supplémentaire par-dessus une bibliothèque ANN.
Écosystème actif. Milvus prend en charge la recherche multi-vecteurs et la recherche hybride par vecteurs clairsemés et denses, exactement ce dont BitAuto avait besoin.
La solution
BitAuto a remplacé FAISS par Milvus, une base de données vectorielle open source, et a construit ses systèmes de recherche IA et de service client par-dessus.
Milvus fournit une recherche vectorielle plus performante et stocke les données de manière persistante, prend en charge les opérations CRUD complètes et gère automatiquement l’indexation. Plus de stockage personnalisé, de logique de sauvegarde artisanale ni de récupération après défaillance faite maison.
Milvus a également permis la mise à l’échelle grâce à son architecture. Il sépare le calcul du stockage, avec des Query Nodes dédiés à la recherche, des Data Nodes pour l’ingestion et des Index Nodes pour la création d’index. Comme chaque couche évolue indépendamment, l’équipe peut lancer davantage de Query Nodes pour augmenter le débit lors d’un lancement de produit ou ajouter des Data Nodes à mesure que l’ensemble de données grandit — sans refonte nécessaire.
Les deux problèmes étant résolus, l’équipe est passée en production. Elle a déployé Milvus open source et migré la recherche de configurations de véhicules (plus de 10 M d’enregistrements), la recherche d’avis d’utilisateurs et la correspondance des FAQ.
Comment Milvus a résolu les problèmes de mise à l’échelle en production
La recherche de configurations de véhicules était la plus exigeante des trois — plus de 10 M d’enregistrements avec des mises à jour par lots fréquentes. C’est aussi là que les premiers problèmes de mise à l’échelle sont apparus.
Milvus a résolu les goulots d’étranglement en écriture dans l’ensemble de données de configurations de véhicules grâce à une mise à niveau de version. L’ensemble de données de configurations — le plus grand des trois avec plus de 10 M d’enregistrements — nécessitait des mises à jour par lots fréquentes. Une fois le volume de données passé au-delà de dix millions, ces mises à jour ont commencé à surcharger le cluster et à ralentir les requêtes. Une mise à niveau de Milvus (novembre 2023) a optimisé la logique de suppression et de compaction et résolu le goulot d’étranglement.
La recherche multi-vecteurs de Milvus 2.4 a transformé les requêtes de recherche utilisateur composées en requêtes uniques. Un utilisateur demandant « Audi A6 finition de base + marque des haut-parleurs + consommation de carburant » déclenchait auparavant trois recherches distinctes que la logique applicative devait assembler. Les résultats ne s’alignaient souvent pas. Après la mise à niveau vers Milvus 2.4 par l’équipe (juin 2024), les requêtes composées comme celle-ci s’exécutent sous la forme d’une seule requête multi-vecteurs — pas de découpage, pas d’assemblage.
Les multiples types d’index de Milvus ont permis à l’équipe d’associer chaque échelle de données à la bonne stratégie. L’équipe a configuré IVF_FLAT pour plus de 10 M d’enregistrements de configurations de véhicules (avec nprobe réglé sur 5 à 10 % de nlist), HNSW pour 500 000 à 5 M d’enregistrements d’actualités et d’avis, et FLAT pour les petits ensembles de données FAQ.
La prise en charge native des vecteurs clairsemés par Milvus a remplacé Elasticsearch comme dépendance. Toutes les requêtes ne bénéficient pas de la recherche sémantique. Lorsqu’un utilisateur saisit « BMW Série 5 2025 prix », il veut une correspondance exacte sur ces mots spécifiques — et non des résultats sur des voitures similaires avec des prix similaires. Les vecteurs denses sont efficaces pour le sens, mais mauvais pour les mots-clés exacts : ils peuvent renvoyer un avis sur une BMW Série 3 2024 même s’il ne s’agit pas d’une correspondance exacte. Pour ces cas, BitAuto devait exécuter Elasticsearch aux côtés de Milvus — un système pour les requêtes par mots-clés, un autre pour les requêtes sémantiques, ainsi qu’une logique supplémentaire pour fusionner les résultats des deux.
En avril 2025, l’équipe est passée au support natif des vecteurs clairsemés de Milvus, qui gère les deux dans un seul système. Les vecteurs clairsemés fonctionnent comme une version plus intelligente de la correspondance par mots-clés — ils représentent le texte par les mots spécifiques qu’il contient, de sorte que "BMW 5 Series 2025" correspond à ces termes exacts. Les vecteurs denses continuent de gérer l’aspect sémantique. Milvus exécute les deux dans une seule requête, remplaçant entièrement la dépendance à Elasticsearch.
Un pipeline de recherche en plusieurs étapes construit autour de Milvus a permis les gains de précision. Supposons qu’un utilisateur saisisse "Audi A6 lowest trim what config." Cette requête est confuse — elle comporte une marque ("Audi A6"), une intention vague ("lowest trim") et une abréviation ("what config"). Avant la recherche, le pipeline la nettoie : la reconnaissance d’entités extrait "Audi A6," un modèle 7B personnalisé reformule le fragment en une question correcte ("What is the configuration of the Audi A6 base trim?"), et l’extraction de mots-clés récupère des termes clés comme "config," "base trim," et "A6."
La requête nettoyée est ensuite diffusée sur trois chemins de recherche parallèles : une recherche par mots-clés utilisant les termes extraits, et deux recherches vectorielles Milvus distinctes — l’une utilisant la question reformulée, l’autre combinant les données du profil utilisateur avec les entités extraites. Les trois ensembles de résultats alimentent un BGE-Reranker, qui note et classe chaque candidat afin de sélectionner la meilleure réponse.
Résultats
Avant et après : FAISS + Elasticsearch vs. Milvus
| Métrique | Avant (FAISS + ES) | Après (Milvus) |
|---|---|---|
| Précision de recherche de l’assistant IA | ~45% | ~95% |
| Précision de recherche du service client | ~40% | ~99% |
| Latence de synchronisation des données | T+1 (jour suivant) | Secondes |
| Temps d’ingénierie consacré à l’infrastructure | ~50% | ~10% |
| Architecture | ES + FAISS (fragmentée) | Milvus (convergeant vers un système unique) |
Quels services Milvus alimente aujourd’hui chez BitAuto
Milvus a commencé comme un remplacement pour un prototype de service de recherche. Deux ans plus tard, il constitue la couche de recherche derrière plus de 10 services d’IA couvrant plus de 90% des cas d’usage d’IA de BitAuto :
Assistant IA d’achat automobile. Le produit destiné aux consommateurs. Les utilisateurs posent des questions en langage naturel sur les voitures — caractéristiques, comparaisons, avis — et obtiennent des réponses grâce à la recherche sémantique de Milvus sur des millions d’enregistrements de véhicules.
Service client intelligent. Fonctionne sur les applications, les mini-programmes, WeChat et le web. Le système achemine les questions des utilisateurs via la reconnaissance d’intention et la correspondance de scénarios, puis récupère des réponses depuis une base de connaissances adossée à Milvus en quelques millisecondes. Il gère à la fois les réponses entièrement automatisées et assistées par des humains — améliorant directement la conversion des prospects des concessionnaires.
Recherche intelligente. Recherche sémantique sur le texte, les images et la vidéo de la plateforme.
ChatBI et outils internes. Requêtes en langage naturel sur les données métier pour les analystes, ainsi que des assistants pour les opérations, les RH et la génération de contenu — le tout sur la même couche Milvus.
Dans l’ensemble de ces services, Milvus gère des centaines de millions de mises à jour quotidiennes des données tout en maintenant la latence dans la plage des millisecondes et en conservant des performances de cluster stables.
Et ensuite
Réduire les coûts et simplifier la stack. À l’heure actuelle, BitAuto utilise des systèmes distincts pour le traitement des données par lots et le streaming en temps réel, avec des files de messages externes qui les relient. L’équipe prévoit de les consolider en moins de composants afin de réduire la surcharge. Elle introduira également une séparation des données chaudes et froides — en stockant les données peu consultées sur des supports moins coûteux afin de réduire de moitié les coûts de stockage.
Rendre les résultats de recherche plus précis. L’équipe ajoutera un classement hybride pondéré entre vecteurs sparse et dense, afin de pouvoir ajuster la mesure dans laquelle chaque requête s’appuie sur la correspondance par mots-clés plutôt que sur la compréhension sémantique.
Créer une boucle de feedback automatisée. BitAuto déploiera des agents IA qui surveillent la qualité de la récupération en direct, signalent automatiquement les mauvais résultats et réinjectent ces cas dans la construction des index et les règles de classement — afin que le système s’améliore lui-même au lieu d’attendre un réglage manuel.
Pour BitAuto, Milvus est passé d’« un composant de recherche » à une infrastructure IA essentielle. Les nouveaux assistants, les parcours de service client et les outils internes sont tous construits par-dessus.


