Pular para o conteúdo

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 + RRF + cross-encoder. Sem LLM no caminho de ranking.

Nosso run canônico da tabela completa mediu 96,58% de recall@10 por sessão no LoCoMo — a sessão que contém a evidência aparece entre os 10 primeiros resultados. Sortear 10 sessões ao acaso acerta 42,25% das vezes; os 96,58% precisam ser lidos contra esse número. 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 de 19 a 32 sessões cada, com um documento por sessão.

O pipeline

O pipeline de produção é um só, o mesmo descrito nas docs e no provider do benchmark:

  1. BM25 (busca por palavra-chave, português e inglês) pega matches exatos.
  2. Dense vectors (LFM2.5-Embedding-350M, 1024 dimensões) tratam similaridade semântica.
  3. RRF (Reciprocal Rank Fusion) funde os resultados BM25 e dense.
  4. Cross-encoder (BGE-Reranker-v2-m3) reordena o topo; MMR cuida da diversidade.

Um LLM só expande a pergunta; nunca ranqueia. O Personalized PageRank, que aparece na ablação original deste post, existe atrás de uma flag e está desligado na produção desde 07/2026 — naquela ablação de junho ele acrescentou 2,4 pontos, e a troca de Jina v5-small por LFM2.5 levou o dense-only de 32,7% para 63,5%.

Sem LLM no ranking

O pipeline de ranking roda em CPU, abaixo de um segundo, com custo de token zero. O rerank de cross-encoder e o MMR são álgebra e similaridade, não 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 — e está desligado. Na ablação de junho, uma operação de matriz por query rendeu 2,4 pontos; em produção ele fica atrás de uma flag, desligado.

A camada end-to-end

LoCoMo mede retrieval; a acurácia de resposta no mesmo arreio ainda não tem run completo publicado (a página de benchmarks diz o estado). No BEAM-100K, o pipeline end-to-end acertou 323/400 perguntas (média 75,5%; binário 80,8%) em 20 conversas. O run de 2026-08-23 usou GLM-5.3 Flash (Ox Alpha), effort=max e juiz GLM-5.2 — configuração de benchmark, não o padrão de produto: quem lê é o LLM do cliente. 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.

Testar com um projeto