Ir al contenido

Ingeniería5 de julio de 20266 min de lectura

96,58% de recall en LoCoMo: cómo construimos un engine de retrieval en CPU

La arquitectura detrás de nuestro pipeline de retrieval: BM25 + dense vectors + RRF + cross-encoder. Sin LLM en el camino de ranking.

Gustavo Franson

Nuestro run canónico de la tabla completa midió 96,58% de recall@10 por sesión en LoCoMo — la sesión que contiene la evidencia aparece entre los 10 primeros resultados. Sortear 10 sesiones al azar acierta el 42,25% de las veces; lee el 96,58% contra ese número. Esta es la arquitectura de retrieval detrás del resultado y por qué el ranking no necesita LLM.

El benchmark

LoCoMo (Long Context Memory) es un benchmark público y peer-reviewed para memoria conversacional. Nuestra tabla completa tiene 1986 preguntas en 10 conversaciones de 19 a 32 sesiones cada una, con un documento por sesión.

El pipeline

Hay un solo pipeline de producción, el mismo descrito en la documentación y en el provider del benchmark:

  1. BM25 (búsqueda por palabra clave, portugués e inglés) captura los matches exactos.
  2. Dense vectors (LFM2.5-Embedding-350M, 1024 dimensiones) tratan la similitud semántica.
  3. RRF (Reciprocal Rank Fusion) fusiona los resultados BM25 y dense.
  4. Cross-encoder (BGE-Reranker-v2-m3) reordena el tope; MMR cuida la diversidad.

Un LLM solo expande la pregunta; nunca ordena. El Personalized PageRank, que aparece en la ablación original de este post, existe detrás de una flag y está apagado en producción desde 07/2026 — en aquella ablación de junio sumó 2,4 puntos, y el cambio de Jina v5-small a LFM2.5 llevó el dense-only de 32,7% a 63,5%.

Sin LLM en el ranking

El pipeline de ranking corre en CPU, en menos de un segundo, con costo de token cero. El rerank de cross-encoder y el MMR son álgebra y similitud, no inferencia de modelo.

Eso separa el costo de búsqueda de los tokens de OpenAI o Anthropic. La generación de la respuesta sigue siendo otra etapa y puede usar un modelo de lenguaje.

Lo que aprendimos

  • El modelo de embedding respondió por la mayor parte de la ganancia. El cambio de Jina a LFM2.5 sumó 30,8 puntos en la ablación original.
  • La búsqueda híbrida cubre fallas diferentes. Dense-only pierde matches exactos; BM25-only pierde matches semánticos.
  • Personalized PageRank es barato — y está apagado. En la ablación de junio, una operación de matriz por query sumó 2,4 puntos; en producción queda detrás de una flag, desactivado.

La capa end-to-end

LoCoMo mide recuperación; la exactitud de respuesta en el mismo arnés todavía no tiene un run completo publicado (la página de benchmarks dice en qué estado está). En BEAM-100K, el pipeline end-to-end acertó 323/400 preguntas (media 75,5%; binario 80,8%) en 20 conversaciones. El run de 2026-08-23 usó GLM-5.3 Flash (Ox Alpha), effort=max y juez GLM-5.2 — configuración de benchmark, no el estándar del producto: quien lee es el LLM del cliente. Consulta la metodología y el informe completo del run.

Próximo paso

Menos volver a empezar. Más continuidad

Trae un proyecto real. En una conversación mapeamos dónde se pierde el contexto entre las personas y los agentes de tu equipo, y por dónde empezar.

Probar con un proyecto