Come Milvus alimenta la ricerca AI di BitAuto che comprende davvero i suoi 142 milioni di acquirenti di auto

95% di accuratezza del recupero
in aumento rispetto al 45% con FAISS
10+ servizi di IA
basato su una singola distribuzione Milvus
accuratezza di recupero del 99%
Per il servizio clienti, in aumento rispetto al 40%
142 milioni di utenti attivi mensili
per casi d'uso consumer, aziendali e interni
Questo post si basa sui materiali condivisi da Zheng Li e dal team BitAuto AI Platform. Copre la loro migrazione da FAISS a Milvus, la pipeline di retrieval che ha portato l'accuratezza dal 45% al 95% e le lezioni apprese scalando Milvus su oltre 10 servizi di IA per 142 milioni di utenti mensili. Modificato e ripubblicato con il permesso del team BitAuto.
Informazioni su BitAuto
BitAuto, fondata nel 2000, è uno dei siti web automobilistici più visitati dell'Asia, con 142 milioni di utenti attivi mensili. I consumatori lo usano per confrontare le specifiche delle auto, leggere le recensioni dei proprietari, guardare test drive e controllare i prezzi in tempo reale da oltre 20.000 concessionarie. L'azienda vende pubblicità e marketing digitale a case automobilistiche e concessionari, e offre una piattaforma SaaS per la gestione delle concessionarie.
La sfida
I problemi di ricerca di BitAuto sono arrivati in due fasi. La ricerca per parole chiave non riusciva a gestire il modo in cui gli utenti reali pongono domande. FAISS poteva farlo, ma non riusciva a reggere su scala di produzione.
Gli acquirenti di auto cercano in linguaggio naturale — La ricerca per parole chiave non riusciva a stare al passo
I 142 milioni di utenti di BitAuto non cercano per parola chiave. Digitano requisiti come "Un SUV spazioso per una famiglia di tre persone, sotto i 30.000 dollari, con consumi inferiori rispetto al CR-V." L'infrastruttura di ricerca basata su parole chiave non riusciva a gestire i sinonimi ("spacious" con "roomy" o "family-friendly”). Inoltre, non riusciva a combinare più condizioni in una singola query.
Gli utenti riuscivano comunque a trovare informazioni utili, ma i risultati non erano sempre accurati — e per le query multi-condizione o in linguaggio naturale, il sistema spesso mancava del tutto le corrispondenze migliori. Lo stesso problema emergeva nel servizio clienti, dove gli agenti a volte non riuscivano a recuperare la risposta giusta per domande su configurazioni specifiche.
FAISS ha dimostrato che la ricerca semantica funzionava, ma non poteva scalare
Nel 2022, il team ha costruito un prototipo su FAISS per testare la ricerca vettoriale. In un piccolo progetto pilota con meno di 100.000 utenti, funzionava. "Spacious MPV" corrispondeva ad annunci di "large-space SUV". L'accuratezza ha raggiunto circa il 45% su un set di test etichettato da esseri umani.
Ma FAISS è una libreria di algoritmi, non un database. Non ha persistenza, né scalabilità orizzontale, né ripristino in caso di guasto. Tutto questo avrebbe dovuto essere costruito da zero. Gli ingegneri avrebbero passato metà del loro tempo a mantenere il sistema in funzione anziché migliorare la ricerca. E il sistema live avrebbe dovuto gestire decine di milioni di record con oltre 100 milioni di aggiornamenti giornalieri. FAISS non avrebbe funzionato.
Perché BitAuto ha scelto Milvus
Il team ha valutato diverse opzioni su sei dimensioni. Ecco come si sono confrontate:
| Dimensione | Facebook FAISS | Qdrant | Milvus | Altri (Chroma, Weaviate) |
|---|---|---|---|---|
| Distribuzione | Integrato nell'applicazione | Standalone/cluster | Standalone/cluster/lite (architettura distribuita AI-native) | Standalone/cluster semplice |
| Scalabilità | Da costruire da zero | Scalabilità orizzontale supportata | Scalabilità sia verticale sia orizzontale; scala facilmente per gestire la ricerca vettoriale a livello di miliardi | Limitata |
| Gestione dei dati | Nessuna persistenza; richiede sviluppo custom | Persistenza, CRUD | CRUD completo, dati dinamici, sharding | CRUD di base |
| Ricerca ibrida | Non supportata | Supportata | Supportata (filtro scalare + ricerca vettoriale,+ ricerca full-text) | Limitata |
| Community | Forte nella ricerca; richiede wrapping per la produzione | Più recente, in rapida crescita | Grande community, documentazione ricca (ad oggi, 43K+ stelle su GitHub) | Più recente, in rapida crescita |
| Curva di apprendimento | Alta (richiede coding di integrazione profonda) | Media | Bassa | Bassa |
Tre aspetti hanno reso Milvus la scelta chiara per BitAuto:
Architettura distribuita AI Native. Calcolo e storage sono separati. L'aggiunta di Query Nodes scala la capacità di lettura; l'aggiunta di Data Nodes gestisce la crescita dei dati. Non è necessaria alcuna riprogettazione dell'applicazione.
Gestione dei dati pronta per la produzione. CRUD completo, più tipi di indice, partizionamento e ricerca ibrida sono tutti integrati. Non è necessario sviluppare ulteriori sistemi sopra una libreria ANN.
Ecosistema attivo. Milvus supporta la ricerca multi-vettore e la ricerca ibrida con vettori sparsi e densi, esattamente ciò di cui BitAuto aveva bisogno.
La soluzione
BitAuto ha sostituito FAISS con Milvus, un database vettoriale open-source, e ha costruito sopra di esso i propri sistemi di ricerca AI e servizio clienti.
Milvus offre una ricerca vettoriale con prestazioni più elevate e archivia i dati in modo persistente, supporta operazioni CRUD complete e gestisce automaticamente l'indicizzazione. Niente più storage personalizzato, logica di backup fatta a mano o ripristino da guasti fai-da-te.
Milvus ha inoltre abilitato la scalabilità attraverso la sua architettura. Separa il calcolo dallo storage, con Query Nodes dedicati alla ricerca, Data Nodes per l'ingestione e Index Nodes per la creazione degli indici. Poiché ogni livello scala in modo indipendente, il team può avviare più Query Nodes per aumentare il throughput durante il lancio di un prodotto o aggiungere Data Nodes man mano che il dataset cresce — senza necessità di riprogettazione.
Con entrambi i problemi risolti, il team è passato alla produzione. Ha distribuito Milvus open-source e migrato la ricerca delle configurazioni dei veicoli (10M+ record), la ricerca delle recensioni degli utenti e l'abbinamento delle FAQ.
Come Milvus ha risolto i problemi di scalabilità in produzione
La ricerca delle configurazioni dei veicoli era la più impegnativa delle tre — 10M+ record con frequenti aggiornamenti batch. È anche lì che sono emersi i primi problemi di scalabilità.
Milvus ha risolto i colli di bottiglia in scrittura nel dataset delle configurazioni dei veicoli con un aggiornamento di versione. Il dataset delle configurazioni — il più grande dei tre con 10M+ record — richiedeva frequenti aggiornamenti batch. Una volta che il volume dei dati ha superato i dieci milioni, quegli aggiornamenti hanno iniziato a sovraccaricare il cluster e a rallentare le query. Un aggiornamento di Milvus (novembre 2023) ha ottimizzato la logica di eliminazione e compattazione e ha risolto il collo di bottiglia.
La ricerca multi-vettore di Milvus 2.4 ha trasformato le query utente composte in singole richieste. Un utente che chiedeva "Audi A6 base trim + speaker brand + fuel consumption" prima attivava tre ricerche separate che la logica applicativa doveva poi ricomporre. I risultati spesso non combaciavano. Dopo l'aggiornamento del team a Milvus 2.4 (giugno 2024), query composte come questa vengono eseguite come una singola richiesta multi-vettore — senza suddivisione, senza ricomposizione.
I molteplici tipi di indice di Milvus hanno permesso al team di abbinare ogni scala di dati alla strategia giusta. Il team ha configurato IVF_FLAT per 10M+ record di configurazioni veicoli (con nprobe regolato al 5–10% di nlist), HNSW per 500K–5M record di notizie e recensioni, e FLAT per piccoli dataset di FAQ.
Il supporto nativo di Milvus per i vettori sparsi ha sostituito Elasticsearch come dipendenza. Non tutte le query traggono beneficio dalla ricerca semantica. Quando un utente digita "BMW 5 Series 2025 price," vuole una corrispondenza esatta su quelle parole specifiche — non risultati su auto simili con prezzi simili. I vettori densi sono efficaci nel cogliere il significato ma poco adatti alle parole chiave esatte: potrebbero restituire una recensione di una BMW 3 Series del 2024 anche se non è una corrispondenza esatta. Per questi casi, BitAuto doveva eseguire Elasticsearch insieme a Milvus — un sistema per le query per parole chiave, un altro per le query semantiche, più logica aggiuntiva per unire i risultati di entrambi.
Nell'aprile 2025, il team è passato al supporto nativo di Milvus per i vettori sparsi, che gestisce entrambi in un unico sistema. I vettori sparsi funzionano come una versione più intelligente della corrispondenza per parole chiave: rappresentano il testo in base alle parole specifiche che contiene, quindi "BMW 5 Series 2025" trova corrispondenza su quei termini esatti. I vettori densi gestiscono ancora la parte semantica. Milvus esegue entrambi in un'unica query, sostituendo completamente la dipendenza da Elasticsearch.
Una pipeline di recupero multi-stage costruita attorno a Milvus ha generato i miglioramenti di accuratezza. Supponiamo che un utente digiti "Audi A6 lowest trim what config." Quella query è disordinata: contiene un brand ("Audi A6"), un intento vago ("lowest trim") e un'abbreviazione ("what config"). Prima della ricerca, la pipeline la ripulisce: il riconoscimento delle entità estrae "Audi A6," un modello custom 7B riscrive il frammento in una domanda corretta ("What is the configuration of the Audi A6 base trim?"), e l'estrazione di parole chiave cattura termini chiave come "config," "base trim," e "A6."
La query ripulita viene quindi distribuita su tre percorsi di ricerca paralleli: ricerca per parole chiave usando i termini estratti, e due ricerche vettoriali Milvus separate: una usando la domanda riscritta, una combinando i dati del profilo utente con le entità estratte. Tutti e tre gli insiemi di risultati confluiscono in un BGE-Reranker, che assegna un punteggio e classifica ogni candidato per scegliere la risposta migliore.
Risultati
Prima e dopo: FAISS + Elasticsearch vs. Milvus
| Metrica | Prima (FAISS + ES) | Dopo (Milvus) |
|---|---|---|
| Accuratezza del recupero dell'assistente AI | ~45% | ~95% |
| Accuratezza del recupero del customer service | ~40% | ~99% |
| Latenza di sincronizzazione dei dati | T+1 (giorno successivo) | Secondi |
| Tempo di engineering sull'infrastruttura | ~50% | ~10% |
| Architettura | ES + FAISS (frammentata) | Milvus (convergenza verso un unico sistema) |
Quali servizi Milvus alimenta oggi in BitAuto
Milvus è nato come sostituto per un prototipo di servizio di ricerca. Due anni dopo, è il layer di recupero dietro oltre 10 servizi AI che coprono più del 90% dei casi d'uso AI di BitAuto:
Assistente AI per l'acquisto di auto. Il prodotto rivolto ai consumatori. Gli utenti pongono domande in linguaggio naturale sulle auto — specifiche, confronti, recensioni — e ottengono risposte dalla ricerca semantica di Milvus su milioni di record di veicoli.
Customer service intelligente. Funziona su app, mini program, WeChat e web. Il sistema instrada le domande degli utenti attraverso il riconoscimento dell'intento e il matching degli scenari, poi recupera le risposte da una knowledge base supportata da Milvus in millisecondi. Gestisce sia risposte completamente automatizzate sia assistite da operatori umani — migliorando direttamente la conversione dei lead dei dealer.
Ricerca intelligente. Recupero semantico su testo, immagini e video sulla piattaforma.
ChatBI e strumenti interni. Query in linguaggio naturale sui dati di business per gli analisti, più assistenti per operations, HR e generazione di contenuti — tutti sullo stesso layer Milvus.
Attraverso questi servizi, Milvus gestisce centinaia di milioni di aggiornamenti dei dati ogni giorno mantenendo la latenza nell'ordine dei millisecondi e preservando prestazioni stabili del cluster.
Cosa verrà dopo
Ridurre i costi e semplificare lo stack. Al momento, BitAuto esegue sistemi separati per l'elaborazione dei dati in batch e lo streaming in tempo reale, con code di messaggi esterne che li collegano. Il team prevede di consolidarli in un numero inferiore di componenti per ridurre l'overhead. Introdurranno anche la separazione dei dati hot-cold — archiviando i dati a basso accesso su supporti più economici per dimezzare i costi di storage.
Rendere i risultati di ricerca più precisi. Il team aggiungerà un ranking ibrido ponderato tra vettori sparsi e densi, così da poter regolare quanto ogni query si basi sulla corrispondenza di parole chiave rispetto alla comprensione semantica.
Creare un ciclo di feedback automatizzato. BitAuto distribuirà agenti AI che monitorano la qualità del recupero in tempo reale, segnalano automaticamente i risultati scadenti e reinseriscono quei casi nella costruzione dell'indice e nelle regole di ranking — così il sistema migliora autonomamente invece di aspettare una regolazione manuale.
Per BitAuto, Milvus è passato da "un componente di ricerca" a infrastruttura AI centrale. Nuovi assistenti, flussi di servizio clienti e strumenti interni sono tutti costruiti su di esso.


