A full-benchmark, reproducible head-to-head on the models people actually run — with the one number nobody prints: what it costs to build the memory.
RE-call is the more accurate of the two on both OpenAI models the incumbents actually evaluate with — at the full benchmark — and it builds memory for free while Mem0 pays an LLM call per memory written.
We're not here to claim a crown. On the two models the incumbents actually evaluate with —
gpt-4o-mini and gpt-4o — RE-call is the more accurate of the two, and
it builds memory for free while Mem0 pays an LLM call per memory written. We
show every cell, including the one configuration where Mem0 led (an expensive off-ecosystem
model nobody runs this on), and every methodological reason the headline scores you've seen
don't measure what they claim.
We benchmarked RE-call against Mem0 — the most-adopted open-source memory layer — on LOCOMO, through an identical generator and judge, so the only variable is the memory. Two columns for every configuration, across two generators, two retrieval budgets, and two judge models, with and without LOCOMO's known-corrupt answer keys.
Answerable accuracy (LLM-as-judge), paired McNemar — each system answers the identical set. Every row is the full benchmark: all 1,540 answerable questions, 10 conversations.
| Generator | Budget | Judge | n | RE-call | Mem0 | paired p |
|---|---|---|---|---|---|---|
| gpt-4o-mini | item | gpt-4o-mini | 1,540 | 0.416 | 0.378 | 0.0059 |
| gpt-4o-mini | item | gpt-4o | 1,540 | 0.466 | 0.412 | 0.00018 |
| gpt-4o-mini | token | gpt-4o-mini | 1,540 | 0.416 | 0.370 | 0.00077 |
| gpt-4o-mini | token | gpt-4o | 1,540 | 0.466 | 0.411 | 0.00018 |
| gpt-4o | token | gpt-4o | 1,540 | 0.484 | 0.444 | 0.0065 |
RE-call is the more accurate of the two in every row, at every budget and both judges. The single configuration where Mem0 led was Claude Sonnet — an off-ecosystem model nobody runs this benchmark on — so it is not in this table (see § 3 below).
Abstention on the 446 adversarial questions — does the system refuse when the answer isn't there? — and its inseparable twin, false-abstention on answerable questions (full benchmark, gpt-4o-mini generator):
| Metric | RE-call | Mem0 |
|---|---|---|
| adversarial abstention (want high) | 0.883 | 0.948 |
| answerable false-abstain (want low) | 0.291 | 0.340 |
| discrimination (abstain − false-abstain) | 0.593 | 0.608 |
Under the gpt-4o generator, full n, these shift to 0.924 / 0.955 abstention and 0.294 / 0.333 false-abstain — abstention is partly a generator behaviour, so we label which one.
On both OpenAI models — the cheap one and the strong one — RE-call is the more accurate of the two at full n = 1,540 (p = 0.0002 to 0.0065). Mem0 abstains slightly more but also refuses more real questions; the two discriminate about equally.
Each is a fact about the measurement. None depends on which system wins.
Accuracy is one column; cost per memory is the other, and it's a category difference. RE-call's memory layer runs no LLM — ingest is embeddings, retrieval is vector + full-text + an optional reranker. Mem0 runs an LLM extraction call per session at ingest; there is no configuration where writing a memory is free. Both Mem0 figures are metered, not modelled:
| Measure | RE-call | Mem0 |
|---|---|---|
| LLM calls the memory layer made | 0 | 99 – 272 |
| $ to build memory · gpt-4o-mini extraction (4 conv) | $0.00 | $0.166 |
| $ to build memory · gpt-4o extraction (full run) | $0.00 | $7.29 |
For write-heavy, cost-sensitive, offline, or privacy-bound deployments — most of them — a memory that's more accurate on the models you use and free to write is the correct engineering choice.
Every configuration was pre-registered before the numbers were seen. The harness, the per-question raw dumps (context, answer, both judges' verdicts), the human labels, and the corrupt-key list are all published; one command reproduces any cell. Rerun it, re-judge it, re-label it — that's the point.