Skip to content

Benchmarks

Everything on this page can be reproduced on one machine, with no API keys.

Setup used for the published numbers

Hardware NVIDIA GB10 (DGX Spark), 119 GB unified memory
LLM for every system, plus answerer and judge qwen3.6:35b via Ollama, thinking off, temperature 0
Embedder for every system nomic-embed-text (768-d) via Ollama
VeraMem this repository (version in src/veramem/__about__.py)
mem0 mem0ai==2.2.1 (PyPI), its best OSS configuration: [nlp,extras] (spaCy entities + BM25), embedded Qdrant

Parity notes: - Thinking mode. mem0's Ollama adapter does not disable qwen3 "thinking". The harness forces think=False for both systems (benchmarks/adapters._disable_thinking). Without this, mem0 took about 70 s per add. - Timestamps. mem0 OSS rejects per-message timestamps ("platform-only"). Its adapter therefore writes the session date into the message text and keeps it in metadata, where it appears in the answer context. This helps mem0; it was not required. - Roles. mem0 accepts only user / assistant / system. Tool and document messages are passed as user messages prefixed with [tool output] / [document output], so the source is still visible to its extractor.

1. Guarantees benchmark (benchmarks/guarantees.py)

This turns each gap into a measurable test. A capability a system does not offer is reported as unsupported, never as a pass.

Test What is measured Derived from
G1 isolation 8 users with private canary codes; 336 cross-user queries (direct, generic, canary string, prompt-injection). Leak = any foreign canary in results. Also: own-recall. MUMBench (AIM)
G2 dedup side channel Two users store an identical fact; the second must get their own copy, not be silently merged into the first. AIM §3.5
G3 revocation Memory written via an agent; revoke the user↔agent grant; it must disappear, then reappear after re-grant. Collaborative Memory Eq. 3
G4 authority collapse 7 prohibited transitions × 5 synthetic unique values (35 pairs, 70 histories). H⁻: a tool, document or assistant carries the value. H⁺: the user states it. Upgrade = a retained H⁻ memory that presents the value as the user's own (machine label, or an LLM judge on the text when the system has no label). Ret⁻ / Ret⁺ = retention. AuthMem-Bench
G5 knowledge update 8 entities, each changing value three times; is the current value ranked #1, and is a stale value ranked above it? LongMemEval KU, AMA
G6 outcome adaptation 6 questions whose correct memory is outranked by lexically closer distractors; 5 rounds of top-1 retrieval with ±1 feedback. Memory-R1 / AgeMem reward signal
G7 tamper evidence Edit a stored memory directly in the backend; is it detected? Agent Zero Memory P2
G8 evidence coverage Share of stored memories with a resolvable source span. Agent Zero Memory Def. 1
G9 erasure After deleting a user, scan every storage file (bytes + decoded SQLite) for the user's secret. GDPR Art. 17
G10 footprint Search p50 latency, external services, telemetry default.

Caveats: - G4–G6 use synthetic data written for this suite, following each paper's protocol. They are not the papers' official datasets: AuthMem-Bench and MUMBench have no public release yet. The LLM-judge prompt is in the source, and every judgement is cached in benchmarks/runs/.

2. LoCoMo (benchmarks/locomo.py)

The protocol used by the Mem0, Memory-R1 and AMA papers: - Ingest every session with its date. - Answer every non-adversarial question (categories 1–4; 1,540 questions in total). - Score with LLM-judge accuracy (J), token F1 and BLEU-1.

Same answerer for every system. Each system returns its top-k (k = 20) memories, and one fixed answer prompt and model produce the answer. Differences therefore come only from what each memory system stores and retrieves. veramem-full additionally reports VeraMem's own answer() pipeline, which adds the citation lock and the sufficiency retry ladder.

Comparison with published numbers. Papers report LoCoMo with GPT-4o-mini or GPT-4.1 judges. Our judge is the local qwen3.6:35b, so absolute numbers aren't directly comparable with papers. The head-to-head numbers on this page are: same judge, same answerer, same data.

Results (2026-10-28, commit 223f72f)

Questions LLM judge F1 BLEU-1
Overall 1,540 65.9% 39.7 34.7
Single-hop 841 68.8% 49.1
Multi-hop 282 67.0% 38.0
Temporal 321 62.6% 22.4
Open-domain 96 47.9% 19.9

VeraMem only; no other system was run on this setup. The full run took 3.9 hours on one NVIDIA GB10 through Ollama, and the median search-plus-answer time was 1.1 s. Raw results, with question and gold text removed (LoCoMo is CC BY-NC 4.0 and is not redistributed): docs/results/locomo-2026-10-28/.

Known weaknesses: relative dates are sometimes stored unresolved ("last year"), which hurts temporal questions, and open-domain questions need inference beyond what was said.