How Milvus Powers BitAuto’s AI Search That Actually Understands Its 142M Car Buyers

95% retrieval accuracy
up from 45% with FAISS
10+ AI services
powered by one Milvus deployment
99% retrieval accuracy
For customer service, up from 40%
142M monthly active users
across consumer, business, and internal use cases
This post is based on materials shared by Zheng Li and the BitAuto AI Platform team. It covers their migration from FAISS to Milvus, the retrieval pipeline that pushed accuracy from 45% to 95%, and the lessons learned scaling Milvus across 10+ AI services for 142 million monthly users. Edited and republished with the BitAuto team's permission.
About BitAuto
BitAuto, founded in 2000, is one of Asia's most-visited automotive websites with 142 million monthly active users. Consumers use it to compare car specs, read owner reviews, watch test drives, and check live pricing from over 20,000 dealerships. The business sells advertising and digital marketing to automakers and dealers, and offers a SaaS platform for dealership management.
The Challenge
BitAuto's search problems arrived in two stages. Keyword search couldn't handle the way real users ask questions. FAISS could, but it couldn't hold up at production scale.
Car Buyers Search in Natural Language — Keyword Search Couldn't Keep Up
BitAuto's 142 million users don't search by keyword. They type requirements such as "A spacious SUV for a family of three, under $30K, with lower fuel consumption than the CR-V." The keyword-based search infrastructure couldn't handle synonyms ("spacious" to "roomy" or "family-friendly”). It also couldn't combine multiple conditions in a single query.
Users could still find useful information, but results weren't always accurate — and for multi-condition or natural-language queries, the system often missed the best matches entirely. The same issue showed up in customer service, where agents sometimes couldn't retrieve the right answer for questions about specific configurations.
FAISS Proved Semantic Search Worked, but Couldn't Scale
In 2022, the team built a prototype on FAISS to test vector search. In a small pilot with under 100,000 users, it worked. "Spacious MPV" matched "large-space SUV" listings. Accuracy reached ~45% on a human-labeled test set.
But FAISS is an algorithm library, not a database. It has no persistence, no horizontal scaling, and no failure recovery. All of that would need to be built from scratch. Engineers would spend half their time keeping the system running rather than improving search. And the live system would need to handle tens of millions of records with 100M+ daily updates. FAISS wouldn’t work.
Why BitAuto Chose Milvus
The team evaluated several options across six dimensions. Here's how they stacked up:
| Dimension | Facebook FAISS | Qdrant | Milvus | Others (Chroma, Weaviate) |
|---|---|---|---|---|
| Deployment | Embedded in the application | Standalone/cluster | Standalone/cluster/lite (AI-native distributed architecture) | Standalone/simple cluster |
| Scalability | Must build from scratch | Horizontal scaling supported | Both vertical and horizontal scaling; easily scale to handle billion-level vector search | Limited |
| Data management | No persistence; requires custom dev | Persistence, CRUD | Full CRUD, dynamic data, sharding | Basic CRUD |
| Hybrid search | Not supported | Supported | Supported (scalar filter + vector search,+ full-text search) | Limited |
| Community | Strong in research; needs wrapping for production | Newer, growing fast | Large community, rich documentation (As of today, 43K+ GitHub stars) | Newer, growing fast |
| Learning curve | High (deep integration coding required) | Medium | Low | Low |
Three things made Milvus the clear choice for BitAuto:
AI Native distributed architecture. Compute and storage are separate. Adding Query Nodes scales read capacity; adding Data Nodes handles data growth. No application redesign needed.
Production-ready data management. Full CRUD, multiple index types, partitioning, and hybrid search are all built in. No need for additional system development on top of an ANN library.
Active ecosystem. Milvus supports multi-vector search and hybrid sparse- and dense-vector search, exactly what BitAuto needed.
The Solution
BitAuto replaced FAISS with Milvus, an open-source vector database, and built its AI search and customer service systems on top of it.
Milvus provides the higher-performance vector search and stores data persistently, supports full CRUD operations, and automatically manages indexing. No more custom storage, hand-rolled backup logic, or DIY failure recovery.
Milvus also enabled scaling through its architecture. It separates compute from storage, with dedicated Query Nodes for search, Data Nodes for ingestion, and Index Nodes for index building. Because each layer scales independently, the team can spin up more Query Nodes to boost throughput during a product launch or add Data Nodes as the dataset grows — no redesign needed.
With both problems addressed, the team moved to production. They deployed open-source Milvus and migrated vehicle configuration search (10M+ records), user review search, and FAQ matching.
How Milvus Solved Scaling Problems in Production
Vehicle config search was the most demanding of the three — 10M+ records with frequent batch updates. It's also where the first scaling problems appeared.
Milvus resolved write bottlenecks in the vehicle config dataset with a version upgrade. The config dataset — the largest of the three at 10M+ records — needed frequent batch updates. Once the data volume crossed ten million, those updates started overloading the cluster and slowing down queries. A Milvus upgrade (November 2023) optimized delete and compaction logic and resolved the bottleneck.
Milvus 2.4's multi-vector search turned compound user search queries into single requests. A user asking "Audi A6 base trim + speaker brand + fuel consumption" used to trigger three separate searches that application logic had to stitch together. The results often didn't line up. After the team upgraded to Milvus 2.4 (June 2024), compound queries like this run as a single multi-vector request — no splitting, no stitching.
Milvus's multiple index types let the team match each data scale to the right strategy. The team set up IVF_FLAT for 10M+ vehicle config records (with nprobe tuned to 5–10% of nlist), HNSW for 500K–5M news and review records, and FLAT for small FAQ datasets.
Milvus's native sparse vector support replaced Elasticsearch as the dependency. Not every query benefits from semantic search. When a user types "BMW 5 Series 2025 price," they want an exact match on those specific words — not results about similar cars with similar prices. Dense vectors are good at meaning but bad at exact keywords: they might return a 2024 BMW 3 Series review even though it's not an exact match. For these cases, BitAuto had to run Elasticsearch alongside Milvus — one system for keyword queries, another for semantic queries, plus extra logic to merge results from both.
In April 2025, the team switched to Milvus's native sparse vector support, which handles both in one system. Sparse vectors work like a smarter version of keyword matching — they represent text by the specific words it contains, so "BMW 5 Series 2025" matches on those exact terms. Dense vectors still handle the semantic side. Milvus runs both in a single query, replacing the Elasticsearch dependency entirely.
A multi-stage retrieval pipeline built around Milvus drove the accuracy gains. Say a user types "Audi A6 lowest trim what config." That query is messy — it has a brand ("Audi A6"), a vague intent ("lowest trim"), and shorthand ("what config"). Before searching, the pipeline cleans it up: entity recognition pulls out "Audi A6," a custom 7B model rewrites the fragment into a proper question ("What is the configuration of the Audi A6 base trim?"), and keyword extraction grabs key terms like "config," "base trim," and "A6."
The cleaned query then fans out across three parallel search paths: keyword search using the extracted terms, and two separate Milvus vector searches — one using the rewritten question, one combining user profile data with the extracted entities. All three sets of results feed into a BGE-Reranker, which scores and ranks every candidate to pick the best answer.
Results
Before and After: FAISS + Elasticsearch vs. Milvus
| Metric | Before (FAISS + ES) | After (Milvus) |
|---|---|---|
| AI assistant retrieval accuracy | ~45% | ~95% |
| Customer service retrieval accuracy | ~40% | ~99% |
| Data sync latency | T+1 (next day) | Seconds |
| Engineering time on infrastructure | ~50% | ~10% |
| Architecture | ES + FAISS (fragmented) | Milvus (converging to a single system) |
What Services Milvus Powers at BitAuto Today
Milvus started as a replacement for one search service prototype. Two years later, it's the retrieval layer behind 10+ AI services covering 90%+ of BitAuto's AI use cases:
AI car shopping assistant. The consumer-facing product. Users ask natural-language questions about cars — specs, comparisons, reviews — and get answers from Milvus's semantic search across millions of vehicle records.
Intelligent customer service. Runs across apps, mini programs, WeChat, and the web. The system routes user questions through intent recognition and scenario matching, then retrieves answers from a Milvus-backed knowledge base in milliseconds. Handles both fully automated and human-assisted responses — directly improving dealer lead conversion.
Intelligent search. Semantic retrieval across text, images, and video on the platform.
ChatBI and internal tools. Natural-language queries over business data for analysts, plus assistants for operations, HR, and content generation — all on the same Milvus layer.
Across these services, Milvus handles hundreds of millions of daily data updates while keeping latency in the millisecond range and maintaining stable cluster performance.
What’s Next
Cut costs and simplify the stack. Right now, BitAuto runs separate systems for batch data processing and real-time streaming, with external message queues connecting them. The team plans to consolidate these into fewer components to reduce overhead. They'll also introduce hot-cold data separation — storing low-access data on cheaper media to halve storage costs.
Make search results more precise. The team will add weighted hybrid ranking across sparse and dense vectors, so they can tune how much each query leans on keyword matching versus semantic understanding.
Build an automated feedback loop. BitAuto will deploy AI agents that monitor live retrieval quality, automatically flag bad results, and feed those cases back into index construction and ranking rules — so the system improves itself rather than waiting for manual tuning.
For BitAuto, Milvus has shifted from "a search component" to core AI infrastructure. New assistants, customer service flows, and internal tools are all built on top of it.


