Inteligência artificial, sem ruído.
Infraestrutura3 min

Compactação Force Merge no Milvus quase dobra QPS de busca vetorial

Engenheiro mostra como a API compact() com target_size consolidou segmentos e reduziu latência de queries. Ganho de até 2x em QPS após ingestão em lote.

Compactação Force Merge no Milvus quase dobra QPS de busca vetorial

Compactação Force Merge no Milvus: como quase dobrar o QPS de busca vetorial

Se você trabalha com busca semântica em escala, sabe que o desempenho de queries é um jogo de detalhes. Um engenheiro documentou recentemente como a compactação Force Merge do Milvus — o banco de dados vetorial open source mais popular — quase dobrou o QPS (queries per second) de seu serviço de busca semântica em produção.

O problema era familiar para quem opera bancos vetoriais: após ingestão em massa de documentos, o sistema acumula pequenos segmentos selados. Cada query precisa se distribuir por todos esses segmentos, incorrendo em custos de scheduling, index lookup e merge de resultados que poderiam ser evitados.

Por que pequenos segmentos se acumulam

O Milvus — como qualquer sistema similar — não sabe quando sua carga de escrita terminou. Um fluxo contínuo de dados, updates incrementais e deleções geram novos segmentos selados a cada operação. Fundir esses segmentos não é grátis: consome I/O, memória e CPU, além de exigir a reconstrução do índice para os dados mesclados. Se o sistema fizesse merge agressivo durante escritas ativas, desperdiçaria recursos. O resultado é a proliferação de segmentos pequenos que degradam a performance de leitura.

A solução: compact() com target_size

A API compact() do Milvus oferece uma opção pouco explorada chamada Force Merge Compaction, acionada pelo parâmetro target_size. A ideia é simples: consolidar múltiplos segmentos pequenos em poucos segmentos maiores, reduzindo o fan-out das queries.

Na prática, o engenheiro configurou a compactação para agrupar segmentos até um tamanho-alvo e observou o QPS quase dobrar. A latência também melhorou, já que menos segmentos significam menos operações de merge na camada de coordenação.

Quando usar (e quando não usar)

A Force Merge Compaction é mais eficaz após cargas em lote — quando você ingeriu um grande volume de documentos e as escritas estabilizaram. Não é recomendada durante ingestão ativa contínua, pois o custo de merge compete com as escritas em andamento.

O ganho real depende da distribuição dos seus dados e do padrão de queries. Mas para workloads de busca semântica com muitas leituras e poucas escritas, é uma otimização de baixo custo com retorno imediato. Basta invocar collection.compact() com o parâmetro target_size adequado ao seu volume de dados e aguardar a conclusão da tarefa.

Em um ecossistema onde cada milissegundo conta — especialmente em aplicações de RAG (Retrieval-Augmented Generation) e chatbots — reduzir pela metade o tempo de busca com uma única chamada de API é o tipo de vitória silenciosa que faz diferença em produção.


Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.