Engenharia5 de julho de 20266 min de leitura
96,58% recall no LoCoMo: como construímos um engine de retrieval em CPU
A arquitetura por trás do nosso pipeline de retrieval: BM25 + dense vectors + Personalized PageRank. Sem LLM no caminho de ranking.
Nosso run canônico da tabela completa mediu 96,58% recall@10 no LoCoMo. Esta é a arquitetura de retrieval por trás do resultado e por que o ranking não precisa de LLM.
O benchmark
LoCoMo (Long Context Memory) é um benchmark público e peer-reviewed para memória conversacional. Nossa tabela completa tem 1986 perguntas em 10 conversas. O líder open-source publicado (pmb) marcou 94,5%. O ValorBrain mediu 96,58%, uma margem de +2,1 pontos percentuais.
O pipeline
Nosso retrieval tem quatro estágios, fundidos num único scan de índice:
- BM25 (busca por palavra-chave) pega queries de match exato.
- Dense vectors (LFM2.5-Embedding-350M) tratam similaridade semântica. A troca de Jina v5-small para LFM2.5 levou o dense-only de 32,7% para 63,5% na ablação original.
- RRF (Reciprocal Rank Fusion) funde os resultados BM25 e dense.
- Personalized PageRank reordena os resultados por centralidade no grafo. Naquela ablação, este estágio acrescentou 2,4 pontos.
Sem LLM no ranking
O pipeline de ranking roda em CPU, abaixo de um segundo, com custo de token zero. Personalized PageRank é álgebra linear e não precisa de inferência de modelo.
Isso separa o custo de busca dos tokens de OpenAI ou Anthropic. A geração da resposta continua sendo outra etapa e pode usar um modelo de linguagem.
O que aprendemos
- O modelo de embedding respondeu pela maior parte do ganho. A troca de Jina para LFM2.5 acrescentou 30,8 pontos na ablação original.
- Busca híbrida cobre falhas diferentes. Dense-only perde matches exatos; BM25-only perde matches semânticos.
- Personalized PageRank é barato. Uma operação de matriz por query entregou o ganho final baseado no grafo.
A camada end-to-end
LoCoMo mede retrieval. No BEAM-100K, o pipeline end-to-end acertou 323/400 perguntas (80,8% de acurácia binária) em 20 conversas. O run de 2026-08-23 usou GLM-5.3 Flash (Ox Alpha), effort=max e juiz GLM-5.2. O effort máximo acrescentou cerca de 44% de latência sobre o padrão; essa é uma configuração de benchmark, não o padrão de chat. Veja a metodologia e o relatório completo do run.
Próximo passo
Menos recomeço. Mais continuidade
Leve um projeto real. Em uma conversa, mapeamos onde o contexto se perde entre as pessoas e os agentes do seu time — e por onde começar.