EvalMem: An Operation-Level Diagnostic Framework for Long-Term Memory Systems
Organizations: Nankai University · vivo AI Lab · Tsinghua University · Zhejiang University
Abstract
Long-horizon interactions with LLM-based assistants require memory systems that preserve and update user states, preferences, and interaction histories. Existing evaluations report end-to-end QA accuracy and cannot determine whether errors arise from encoding, retrieval, or generation. We introduce EvalMem, an operation-level diagnostic framework with three parallel Examiners. For each query, the Encoding Examiner checks whether the target fact is stored, the Retrieval Examiner assesses whether the native retriever returns usable evidence, and the Generation Examiner tests whether the model can answer from oracle evidence. Their outputs form fine-grained multi-label defect codes. To improve store-level diagnosis, we adapt agentic RAG with a recall-first strategy that searches using both the query and source evidence, increasing recall of present evidence on LoCoMo from 70.2% to 95.6%. Evaluations of seven memory systems on LoCoMo, LongMemEval-S, and dynamic DynaMem-Bench identify retrieval as the most frequently attributed failure layer; in default LoCoMo, retrieval defects reach 22.1%, compared with 7.7% for encoding and 6.5% for generation. Guided by this diagnosis, MemWiki, a search-friendly auxiliary structure built from each system's memory export, improves mean accuracy by 2.5 and 2.3 percentage points on LoCoMo and LongMemEval-S, respectively.
Figures & tables
| Code | Full name | Layer | Condition |
| EM | Encoding Missing | Enc. | POS store Miss |
| EA | Encoding Ambiguous | Enc. | ambiguous value |
| EW | Encoding Wrong | Enc. | wrong value |
| DMP | Dirty Memory Pollution | Enc. | NEG dirty memory |
| RF | Retrieval Failure | Ret. | POS Miss with |
| LATE | Retrieval Late | Ret. | hit rank |
| System | Encoding | Retrieval | Generation | Acc | |||||||||||
| EM | EA | EW | DMP | Enc | RF | LATE | NOI | NIR | Ret | GF | GRF | GH | Gen | ||
| Set 1: LoCoMo + gpt-4o-mini mean Acc , mean Ret | |||||||||||||||
| TiMem | 3.3 | 1.8 | 1.2 | 0.8 | 7.1 | 9.1 | 2.7 | 3.5 | 1.7 | 17.0 | 2.1 | 2.6 | 1.3 | 6.0 | 75.3 |
| O-Mem | 2.1 | 1.3 | 1.0 | 0.5 | 4.9 | 10.5 | 3.3 | 3.7 | 2.1 | 19.6 | 2.4 | 2.5 | 1.2 | 6.1 | 74.9 |
| EverMemOS | 4.6 | 2.0 | 1.3 | 0.7 | 8.6 | 10.4 | 3.4 | 4.0 | 2.2 | 20.0 | 2.5 | 2.4 | 1.4 | 6.3 | 72.4 |
| MemOS | 4.2 | 1.6 | 1.4 | 0.9 | 8.1 | 11.0 | 3.6 | 4.4 | 2.0 | 21.0 | 2.6 | 2.7 | 1.2 | 6.5 | 70.1 |
| System | Bsl Acc | +MW Acc | Acc | Ret |
| EverMemOS | 82.6 | 83.4 | ||
| O-Mem | 81.4 | 82.8 | ||
| MemBox | 77.0 | 79.6 | ||
| GAM | 76.6 | 79.4 | ||
| TiMem | 76.0 | 76.6 | ||
| MemOS | 65.0 | 68.4 |
Appendix figures & tables29 assets
Supplementary material from the paper’s appendix.
Appendix
| System | gpt-4o-mini (default) | gpt-4.1 | Qwen3-30B-Instruct | |||||||||
| Acc | Enc | Ret | Gen | Acc | Enc | Ret | Gen | Acc | Enc | Ret | Gen | |
| Set 1: LoCoMo | ||||||||||||
| TiMem | 75.3 | 7.1 | 17.0 | 6.0 | 77.8 | 5.5 | 15.4 | 4.1 | 74.2 | 7.8 | 17.6 | 6.5 |
| O-Mem | 74.9 | 4.9 | 19.6 | 6.1 | 78.1 | 3.7 | 17.5 | 4.2 | 73.8 | 5.5 | 20.2 | 6.7 |
| EverMemOS | 72.4 | 8.6 | 20.0 | 6.3 | 75.2 | 6.6 | 17.8 | 4.4 | 71.0 | 9.3 | 20.7 | 6.9 |
| MemOS | 70.1 | 8.1 | 21.0 | 6.5 | 73.1 | 6.1 | 18.7 | 4.7 | 69.2 | 8.7 | 21.8 | 7.1 |
| System | Released/native embedding | Acc S/N | Acc | Enc/Ret/Gen (S) | Enc/Ret/Gen (N) |
| TiMem | Qwen3-Embedding-0.6B (same as standardized) | ||||
| O-Mem | all-MiniLM-L6-v2 | ||||
| EverMemOS | Qwen3-Embedding-4B | ||||
| MemOS | nomic-embed-text:latest | ||||
| MemBox | text-embedding-3-small | ||||
| MemoryOS | all-MiniLM-L6-v2 |
| Threshold | Candidates | Controlled sub-code rate (%) | Calibration macro-F1 | Selected |
| System | Enc mean SD | Ret mean SD | Gen mean SD | Fleiss’ |
| TiMem | ||||
| O-Mem | ||||
| EverMemOS | ||||
| MemOS | ||||
| MemBox | ||||
| MemoryOS |
| System | EM | EA | EW | DMP | Enc total |
| TiMem | |||||
| O-Mem | |||||
| EverMemOS | |||||
| MemOS | |||||
| MemBox | |||||
| MemoryOS |
| System | RF | LATE | NOI | NIR | Ret total |
| TiMem | |||||
| O-Mem | |||||
| EverMemOS | |||||
| MemOS | |||||
| MemBox | |||||
| MemoryOS |
| System | GF | GRF | GH | Gen total |
| TiMem | ||||
| O-Mem | ||||
| EverMemOS | ||||
| MemOS | ||||
| MemBox | ||||
| MemoryOS |
| System | Calls | Input (K) | Output (K) | Critical latency (s) | |
| p50 | p95 | ||||
| TiMem | 8.24 | 38.0 | 1.81 | 11.4 | 25.4 |
| O-Mem | 8.38 | 40.5 | 1.88 | 11.9 | 26.4 |
| EverMemOS | 8.42 | 44.0 | 1.97 | 12.4 | 27.7 |
| MemOS | 8.36 | 43.0 | 1.95 | 12.2 | 27.3 |
| MemBox | 8.64 | 53.0 | 2.18 | 13.8 | 30.8 |
| Component | Calls | Input (K) | Output (K) | Latency (s) | |
| p50 | p95 | ||||
| Agentic-RAG (AR) | 3.48 | 21.8 | 0.94 | 8.2 | 18.7 |
| Encoding judge (EJ) | 1.00 | 11.6 | 0.23 | 3.2 | 6.8 |
| Retrieval | 1.00 | 8.4 | 0.31 | 3.1 | 6.9 |
| Generation | 2.00 | 3.9 | 0.39 | 4.0 | 8.5 |
| Attribution | 1.00 | 1.44 | 0.16 | 1.5 | 3.4 |
| Configuration | MISS / 1540 | Rate |
| Controlled study (oracle vector store) | ||
| Vanilla RAG + | 459 | 29.8% |
| AgenticRAG + | 283 | 18.4% |
| Vanilla RAG + + | 174 | 11.3% |
| AgenticRAG + + ( ) | 67 | 4.4% |
| Leave-one-out from | ||
| System | Tag | Fact | Query | Sum. | Sum | All | Crowd loss |
| TiMem | +0.1 | +0.4 | +0.2 | +0.1 | +0.8 | +0.3 | |
| O-Mem | +0.4 | +0.9 | +0.6 | +0.5 | +2.4 | +1.5 | |
| EverMemOS | +0.2 | +0.5 | +0.4 | +0.3 | +1.4 | +1.0 | |
| MemOS | +0.6 | +1.5 | +1.1 | +0.8 | +4.0 | +2.6 | |
| MemBox | +1.1 | +2.6 | +1.7 | +1.4 | +6.8 | +4.2 | |
| MemoryOS | +0.8 | +1.8 | +1.3 | +1.0 | +4.9 | +3.0 |
| System | -value | sig. | ||||
| TiMem | 19 | 25 | 6 | 0.82 | 0.366 | — |
| O-Mem | 20 | 50 | 30 | 12.86 | ||
| EverMemOS | 20 | 40 | 20 | 6.67 | 0.010 | |
| MemOS | 28 | 80 | 52 | 25.04 | ||
| MemBox | 47 | 130 | 83 | 38.92 | ||
| MemoryOS | 38 | 98 | 60 | 26.47 |
| System | Acc | Ret | ||
| Bsl | + MemWiki | |||
| TiMem | 75.3 | 75.6 | ||
| O-Mem | 74.9 | 76.4 | ||
| EverMemOS | 72.4 | 73.4 | ||
| MemOS | 70.1 | 72.7 | ||
| MemBox | 63.2 | 67.4 | ||
| System | bsl | Final Acc (%) under MemWiki quota | ||||||
| TiMem | 75.3 | 75.5 | 75.7 | 75.6 | 75.3 | 74.8 | 73.4 | 69.8 |
| O-Mem | 74.9 | 75.4 | 76.2 | 76.4 | 76.1 | 75.5 | 73.9 | 70.4 |
| EverMemOS | 72.4 | 72.9 | 73.3 | 73.4 | 73.5 | 72.8 | 70.6 | 67.5 |
| MemOS | 70.1 | 71.0 | 72.1 | 72.7 | 72.6 | 71.9 | 70.2 | 66.5 |
| MemBox | 63.2 | 64.7 | 66.3 | 67.4 | 67.5 | 66.8 | 64.6 | 60.5 |
| System | Metric | |||||||||
| TiMem | Hit@ | 38.4 | 47.5 | 55.7 | 64.7 | 71.0 | 73.5 | 75.2 | 77.3 | 79.5 |
| Final Acc | 64.2 | 68.5 | 70.5 | 73.6 | 75.0 | 75.3 | 75.5 | 75.3 | 74.5 | |
| O-Mem | Hit@ | 36.4 | 45.5 | 54.3 | 63.2 | 68.7 | 71.1 | 73.0 | 75.2 | 77.7 |
| Final Acc | 63.8 | 68.0 | 70.2 | 73.0 | 74.7 | 74.9 | 74.8 | 74.0 | 72.6 | |
| EverMemOS | Hit@ | 34.9 | 43.8 | 52.8 | 61.8 | 67.2 | 69.4 | 71.4 | 73.5 | 76.0 |
| Final Acc | 61.6 | 65.8 | 67.9 | 70.5 | 72.1 | 72.4 | 72.3 | 71.6 | 70.0 |
| RF | LATE | NOI | Ret. total | |
| 16.1 | 0.0 | 0.2 | 16.3 | |
| 14.4 | 0.3 | 0.5 | 15.2 | |
| 12.5 | 0.7 | 1.0 | 14.2 | |
| 9.8 | 1.4 | 2.1 | 13.3 | |
| 6.6 | 2.9 | 3.7 | 13.2 | |
| 5.0 | 3.4 | 5.5 | 13.9 |
| Session | Rule |
| – | Initial state (introduce baseline facts) |
| Hold (let old facts settle) | |
| Main-core change (e.g. city: SH BJ ) | |
| Auxiliary cascade (e.g. commute ) | |
| -driven single-point update | |
| Rollback for of personas |
| System | LoCoMo10 | DynaMem-Bench | (pp) |
| TiMem | 75.3 | 71.2 | |
| O-Mem | 74.9 | 68.9 | |
| MemOS | 70.1 | 62.5 | |
| EverMemOS | 72.4 | 61.0 | |
| MemoryOS | 60.8 | 56.4 | |
| MemBox | 63.2 | 55.9 |
| Difficulty subset | N (asks) | Correct | Acc |
| state-tracking (multi-session re-asks) | 2800 | 1500 | 53.6 |
| immediate cascade (3 personas) | 609 | 397 | 65.2 |
| delayed cascade (7 personas) | 1421 | 831 | 58.5 |
| rollback (3 personas, sess. 9) | 602 | 285 | 47.3 |
| System | Pre-flip | Post-flip | |
| TiMem | 73.4 | 62.1 | |
| O-Mem | 71.0 | 60.7 | |
| MemOS | 64.8 | 53.5 | |
| EverMemOS | 63.1 | 45.5 | |
| MemoryOS | 58.7 | 52.6 | |
| MemBox | 57.9 | 47.4 |
| System | Acc | Enc | Ret | Gen | ||||
| GPT-4o | Qwen3 | GPT-4o | Qwen3 | GPT-4o | Qwen3 | GPT-4o | Qwen3 | |
| TiMem | 71.2 | 70.3 | 7.6 | 7.9 | 19.0 | 19.4 | 4.3 | 4.4 |
| O-Mem | 68.9 | 69.6 | 7.5 | 7.3 | 21.5 | 21.1 | 4.5 | 4.4 |
| MemOS | 62.5 | 61.4 | 9.0 | 9.4 | 25.4 | 25.9 | 4.9 | 5.1 |
| EverMemOS | 61.0 | 60.6 | 9.6 | 9.7 | 26.1 | 26.4 | 4.7 | 4.8 |
| MemoryOS | 56.4 | 55.8 | 11.0 | 11.2 | 28.4 | 28.8 | 5.1 | 5.2 |
| Judge | N | LLM–human agr. | Cohen’s |
| Answer judge | 120 |
| Judge target | #Cases | Human–human | LLM–human | Defect F1 |
| agr./ | agr./ | |||
| Encoding Examiner | 150 | |||
| Retrieval Examiner | 150 | |||
| Generation Examiner | 150 | |||
| All Examiners | 450 |
| Verification target | Random sample | Human–human | Gemini–human |
| agr./ | agr./ | ||
| Schema–state consistency | 80 bundles | ||
| Must-expose coverage | 200 exposure events | ||
| POS oracle support | 200 POS asks | ||
| NEG unanswerability | 120 NEG asks | ||
| Trap / temporal consistency | 120 tracking asks |
LLM Memory
Large language model memory studies how models store, retrieve, update, and forget information across prompts, tasks, and interactions.
See all 95 papers