Como o Milvus impulsiona a busca de IA da BitAuto que realmente entende seus 142 milhões de compradores de carros

95% de precisão de recuperação
acima dos 45% com FAISS
10+ serviços de IA
alimentado por uma implantação do Milvus
99% de precisão na recuperação
Para atendimento ao cliente, acima dos 40%
142 milhões de usuários ativos mensais
em casos de uso para consumidores, empresas e uso interno
Este post é baseado em materiais compartilhados por Zheng Li e pela equipe da BitAuto AI Platform. Ele aborda a migração deles do FAISS para o Milvus, o pipeline de recuperação que elevou a precisão de 45% para 95% e as lições aprendidas ao escalar o Milvus em mais de 10 serviços de IA para 142 milhões de usuários mensais. Editado e republicado com a permissão da equipe da BitAuto.
Sobre a BitAuto
A BitAuto, fundada em 2000, é um dos sites automotivos mais visitados da Ásia, com 142 milhões de usuários ativos mensais. Os consumidores a utilizam para comparar especificações de carros, ler avaliações de proprietários, assistir a test drives e consultar preços em tempo real de mais de 20.000 concessionárias. A empresa vende publicidade e marketing digital para montadoras e concessionárias, além de oferecer uma plataforma SaaS para gestão de concessionárias.
O Desafio
Os problemas de busca da BitAuto surgiram em duas etapas. A busca por palavras-chave não conseguia lidar com a forma como usuários reais fazem perguntas. O FAISS conseguia, mas não se sustentava em escala de produção.
Compradores de Carros Pesquisam em Linguagem Natural — A Busca por Palavras-Chave Não Acompanhava
Os 142 milhões de usuários da BitAuto não pesquisam por palavra-chave. Eles digitam requisitos como "Um SUV espaçoso para uma família de três pessoas, abaixo de US$30 mil, com consumo de combustível menor que o do CR-V." A infraestrutura de busca baseada em palavras-chave não conseguia lidar com sinônimos ("spacious" para "roomy" ou "family-friendly”). Ela também não conseguia combinar múltiplas condições em uma única consulta.
Os usuários ainda conseguiam encontrar informações úteis, mas os resultados nem sempre eram precisos — e, para consultas com múltiplas condições ou em linguagem natural, o sistema frequentemente deixava de encontrar as melhores correspondências. O mesmo problema aparecia no atendimento ao cliente, onde os agentes às vezes não conseguiam recuperar a resposta correta para perguntas sobre configurações específicas.
O FAISS Provou que a Busca Semântica Funcionava, mas Não Conseguia Escalar
Em 2022, a equipe criou um protótipo com FAISS para testar busca vetorial. Em um pequeno piloto com menos de 100.000 usuários, funcionou. "Spacious MPV" correspondia a anúncios de "large-space SUV". A precisão chegou a ~45% em um conjunto de testes rotulado por humanos.
Mas o FAISS é uma biblioteca de algoritmos, não um banco de dados. Ele não tem persistência, nem escalabilidade horizontal, nem recuperação de falhas. Tudo isso precisaria ser construído do zero. Os engenheiros passariam metade do tempo mantendo o sistema em funcionamento, em vez de melhorar a busca. E o sistema em produção precisaria lidar com dezenas de milhões de registros, com mais de 100 milhões de atualizações diárias. O FAISS não funcionaria.
Por Que a BitAuto Escolheu o Milvus
A equipe avaliou várias opções em seis dimensões. Veja como elas se compararam:
| Dimensão | Facebook FAISS | Qdrant | Milvus | Outros (Chroma, Weaviate) |
|---|---|---|---|---|
| Implantação | Incorporado à aplicação | Standalone/cluster | Standalone/cluster/lite (arquitetura distribuída nativa de IA) | Standalone/cluster simples |
| Escalabilidade | Deve ser construída do zero | Escalabilidade horizontal suportada | Escalabilidade vertical e horizontal; escala facilmente para lidar com busca vetorial em nível de bilhões | Limitada |
| Gerenciamento de dados | Sem persistência; requer desenvolvimento customizado | Persistência, CRUD | CRUD completo, dados dinâmicos, sharding | CRUD básico |
| Busca híbrida | Não suportada | Suportada | Suportada (filtro escalar + busca vetorial,+ busca de texto completo) | Limitada |
| Comunidade | Forte em pesquisa; precisa de encapsulamento para produção | Mais nova, crescendo rapidamente | Grande comunidade, documentação rica (atualmente, mais de 43 mil estrelas no GitHub) | Mais nova, crescendo rapidamente |
| Curva de aprendizado | Alta (requer codificação de integração profunda) | Média | Baixa | Baixa |
Três coisas tornaram o Milvus a escolha clara para a BitAuto:
Arquitetura distribuída nativa de IA. Computação e armazenamento são separados. Adicionar Query Nodes escala a capacidade de leitura; adicionar Data Nodes lida com o crescimento dos dados. Não é necessário redesenho da aplicação.
Gerenciamento de dados pronto para produção. CRUD completo, múltiplos tipos de índice, particionamento e busca híbrida estão todos integrados. Não há necessidade de desenvolvimento adicional de sistema sobre uma biblioteca ANN.
Ecossistema ativo. O Milvus oferece suporte a busca multivetorial e busca híbrida com vetores esparsos e densos, exatamente o que a BitAuto precisava.
A solução
A BitAuto substituiu o FAISS pelo Milvus, um banco de dados vetorial open-source, e construiu seus sistemas de busca por IA e atendimento ao cliente sobre ele.
O Milvus fornece busca vetorial de maior desempenho e armazena dados persistentemente, oferece suporte a operações CRUD completas e gerencia automaticamente a indexação. Chega de armazenamento personalizado, lógica de backup artesanal ou recuperação de falhas DIY.
O Milvus também permitiu o escalonamento por meio de sua arquitetura. Ele separa computação de armazenamento, com Query Nodes dedicados para busca, Data Nodes para ingestão e Index Nodes para construção de índices. Como cada camada escala de forma independente, a equipe pode iniciar mais Query Nodes para aumentar a taxa de transferência durante o lançamento de um produto ou adicionar Data Nodes conforme o conjunto de dados cresce — sem necessidade de redesenho.
Com ambos os problemas resolvidos, a equipe avançou para produção. Eles implantaram o Milvus open-source e migraram a busca de configurações de veículos (mais de 10M de registros), a busca em avaliações de usuários e a correspondência de FAQ.
Como o Milvus resolveu problemas de escalonamento em produção
A busca de configurações de veículos era a mais exigente das três — mais de 10M de registros com atualizações em lote frequentes. Foi também onde surgiram os primeiros problemas de escalonamento.
O Milvus resolveu gargalos de escrita no conjunto de dados de configurações de veículos com uma atualização de versão. O conjunto de dados de configurações — o maior dos três, com mais de 10M de registros — precisava de atualizações em lote frequentes. Quando o volume de dados ultrapassou dez milhões, essas atualizações começaram a sobrecarregar o cluster e desacelerar as consultas. Uma atualização do Milvus (novembro de 2023) otimizou a lógica de exclusão e compactação e resolveu o gargalo.
A busca multivetorial do Milvus 2.4 transformou consultas compostas de usuários em solicitações únicas. Um usuário perguntando "Audi A6 versão básica + marca dos alto-falantes + consumo de combustível" costumava acionar três buscas separadas que a lógica da aplicação precisava costurar. Os resultados frequentemente não se alinhavam. Depois que a equipe atualizou para o Milvus 2.4 (junho de 2024), consultas compostas como essa rodam como uma única solicitação multivetorial — sem dividir, sem costurar.
Os múltiplos tipos de índice do Milvus permitiram que a equipe combinasse cada escala de dados com a estratégia certa. A equipe configurou IVF_FLAT para mais de 10M de registros de configurações de veículos (com nprobe ajustado para 5–10% de nlist), HNSW para 500K–5M de registros de notícias e avaliações, e FLAT para pequenos conjuntos de dados de FAQ.
O suporte nativo do Milvus a vetores esparsos substituiu o Elasticsearch como dependência. Nem toda consulta se beneficia da busca semântica. Quando um usuário digita "preço do BMW Série 5 2025", ele quer uma correspondência exata dessas palavras específicas — não resultados sobre carros semelhantes com preços semelhantes. Vetores densos são bons em significado, mas ruins em palavras-chave exatas: eles podem retornar uma avaliação de um BMW Série 3 2024, mesmo que não seja uma correspondência exata. Para esses casos, a BitAuto precisava rodar o Elasticsearch junto com o Milvus — um sistema para consultas por palavras-chave, outro para consultas semânticas, além de lógica extra para mesclar resultados de ambos.
Em abril de 2025, a equipe migrou para o suporte nativo a vetores esparsos do Milvus, que lida com ambos em um único sistema. Vetores esparsos funcionam como uma versão mais inteligente da correspondência por palavras-chave — eles representam o texto pelas palavras específicas que ele contém, então "BMW 5 Series 2025" corresponde exatamente a esses termos. Vetores densos ainda cuidam do lado semântico. O Milvus executa ambos em uma única consulta, substituindo totalmente a dependência do Elasticsearch.
Um pipeline de recuperação em múltiplas etapas construído em torno do Milvus impulsionou os ganhos de precisão. Digamos que um usuário digite "Audi A6 lowest trim what config." Essa consulta é confusa — ela tem uma marca ("Audi A6"), uma intenção vaga ("lowest trim") e uma abreviação ("what config"). Antes da busca, o pipeline a limpa: o reconhecimento de entidades extrai "Audi A6," um modelo 7B personalizado reescreve o fragmento em uma pergunta adequada ("What is the configuration of the Audi A6 base trim?"), e a extração de palavras-chave captura termos-chave como "config," "base trim," e "A6."
A consulta limpa então se espalha por três caminhos de busca paralelos: busca por palavras-chave usando os termos extraídos, e duas buscas vetoriais separadas no Milvus — uma usando a pergunta reescrita, outra combinando dados do perfil do usuário com as entidades extraídas. Todos os três conjuntos de resultados alimentam um BGE-Reranker, que pontua e classifica cada candidato para escolher a melhor resposta.
Resultados
Antes e Depois: FAISS + Elasticsearch vs. Milvus
| Métrica | Antes (FAISS + ES) | Depois (Milvus) |
|---|---|---|
| Precisão de recuperação do assistente de IA | ~45% | ~95% |
| Precisão de recuperação do atendimento ao cliente | ~40% | ~99% |
| Latência de sincronização de dados | T+1 (dia seguinte) | Segundos |
| Tempo de engenharia em infraestrutura | ~50% | ~10% |
| Arquitetura | ES + FAISS (fragmentada) | Milvus (convergindo para um único sistema) |
Quais serviços o Milvus impulsiona na BitAuto hoje
O Milvus começou como uma substituição para um protótipo de serviço de busca. Dois anos depois, ele é a camada de recuperação por trás de mais de 10 serviços de IA que cobrem mais de 90% dos casos de uso de IA da BitAuto:
Assistente de IA para compra de carros. O produto voltado ao consumidor. Usuários fazem perguntas em linguagem natural sobre carros — especificações, comparações, avaliações — e recebem respostas da busca semântica do Milvus em milhões de registros de veículos.
Atendimento ao cliente inteligente. Funciona em aplicativos, mini programas, WeChat e na web. O sistema encaminha perguntas dos usuários por reconhecimento de intenção e correspondência de cenários, depois recupera respostas de uma base de conhecimento apoiada pelo Milvus em milissegundos. Lida tanto com respostas totalmente automatizadas quanto assistidas por humanos — melhorando diretamente a conversão de leads de concessionárias.
Busca inteligente. Recuperação semântica em texto, imagens e vídeo na plataforma.
ChatBI e ferramentas internas. Consultas em linguagem natural sobre dados de negócios para analistas, além de assistentes para operações, RH e geração de conteúdo — tudo na mesma camada do Milvus.
Em todos esses serviços, o Milvus lida com centenas de milhões de atualizações diárias de dados, mantendo a latência na faixa de milissegundos e preservando o desempenho estável do cluster.
O que vem a seguir
Reduzir custos e simplificar a stack. No momento, a BitAuto executa sistemas separados para processamento de dados em lote e streaming em tempo real, com filas de mensagens externas conectando-os. A equipe planeja consolidá-los em menos componentes para reduzir a sobrecarga. Eles também introduzirão separação de dados quentes e frios — armazenando dados de baixo acesso em mídias mais baratas para reduzir os custos de armazenamento pela metade.
Tornar os resultados de busca mais precisos. A equipe adicionará ranqueamento híbrido ponderado entre vetores esparsos e densos, para que possam ajustar o quanto cada consulta se apoia na correspondência por palavras-chave versus na compreensão semântica.
Construir um ciclo de feedback automatizado. A BitAuto implantará agentes de IA que monitoram a qualidade da recuperação ao vivo, sinalizam automaticamente resultados ruins e alimentam esses casos de volta na construção de índices e nas regras de ranqueamento — para que o sistema melhore por si só em vez de esperar por ajustes manuais.
Para a BitAuto, o Milvus deixou de ser "um componente de busca" para se tornar uma infraestrutura central de IA. Novos assistentes, fluxos de atendimento ao cliente e ferramentas internas são todos construídos sobre ele.


