Why Agent Memory Benchmarks Mislead, and How to Evaluate on Your Own Data
Agent memory benchmarks mislead with flawed answer keys and graders. Test retrieval apart from answers, add recency, abstention and forgetting checks.
This article is published in English.
Sources: Your Agent’s Memory Benchmark Is Measuring the Wrong Thing
Public benchmarks for agent memory can't say which system will suit a given problem, and several can't reliably say which system is better at all. The evidence isn't subtle. On the benchmark everybody cites, a crude baseline that pastes the whole conversation into the prompt beats the dedicated memory products, according to the paper of a memory vendor itself. An independent audit found that about six percent of that benchmark's answer key is wrong, and that its automatic grader accepts roughly two of every three deliberately incorrect answers. The sensible response is to stop choosing by leaderboard and build an evaluation over your own data.
Consider how a team usually picks a memory system. It looks at the leaderboard, takes whatever sits at the top, and ships. Three weeks into production the agent is confidently wrong about a figure the user corrected last Tuesday. It has started to contradict a decision from the week before. The one fact a query needed comes back ranked beneath four that were irrelevant. The benchmark had called this the best system on the market, yet it said nothing about the team's own problem.
Underneath sits a question that follows any memory build: how do you know it works? The unwelcome reply is that the figures teams usually reach for can't answer it, and some can't answer much for anyone.
A leaderboard rank says a system did well on someone else's test, graded by someone else's judge, against someone else's notion of the right answer. It doesn't say whether your agent will recall what a user mentioned three weeks ago. Those are separate questions, and only one is yours.
The benchmark you're shortlisting on measures something else
The headline result deserves a pause. Take the most-cited conversational-memory benchmark. A method with no memory system, which simply pastes the full conversation into the prompt and answers from it, finished first, a little ahead of the dedicated memory products in the comparison. No critic found this. It sits in the paper behind a well-known memory library, Mem0, published at a peer-reviewed venue, where the authors report that full context beat their own system on raw accuracy, at about ten times the latency per answer. A rival vendor quotes the same fact about that paper, so it is not one camp's spin.
It is less embarrassing than it looks, and reading it correctly matters. Pasting everything in is accurate because nothing was omitted. It simply doesn't scale, because of overflow and quadratic cost. So the benchmark, as scored, mostly rewards whichever system best approximates full-context accuracy while spending fewer tokens. That is useful to measure. That is not the same as testing whether a system can bring up one detail a user gave a month earlier, and anyone who takes the ranking to mean the latter has been misled by an assumption of their own.
The ground truth is shakier still. A separate audit, public and reproducible though not peer reviewed, took the benchmark's answer key apart and found about six percent of it wrong: invented facts, broken temporal reasoning, answers credited to the wrong speaker. When the auditors fed the standard automatic grader answers that were wrong but plausible, it accepted around two thirds. One honest caveat applies. The audit's authors, Penfield, build memory systems too, so they aren't neutral. But the work can be reproduced, and open issues in the benchmark's own repository point the same way, so the problem is real even if the messenger gets discounted. The implication is stark. A benchmark with a six percent error rate in its key can't separate two systems that differ by less than six percent, and a grader that passes two thirds of confident nonsense measures confidence, not correctness.
Vendor numbers disagree with each other as well. The two best-known memory vendors publish scores for the same benchmark that contradict one another, each having rerun the other's system and obtained a result the other disputes, since the outcome depends heavily on who configured whose integration. A headline figure that swings by double digits with setup is marketing, not measurement. None of this makes the systems bad. It means a leaderboard can't rank them for you, and certainly not for your domain.
Long context isn't memory, and benchmarks blur the two
A quieter confusion corrupts comparisons before they begin. Long context and memory are different things, yet much evaluation treats them as one axis. Needle in a haystack, where one sentence is hidden in a long document and the model must find it, tests attention over a single fixed input. It's a handy smoke test with no paper behind it, only a widely copied script. A more rigorous benchmark, RULER, showed that many models advertised with huge context windows have an effective span far shorter than the label says. Both measure capacity, meaning how much of one prompt the model can really use.
Memory means continuity between sessions. On Monday the agent picks something up, the chat ends and the window is wiped, and by Friday it should still know. LoCoMo and LongMemEval, the conversational-memory benchmarks, exercise that store-then-recall cycle over many sessions, so they belong to the right family whatever their faults.
Two layers to test
When public benchmarks fall short, the alternative is a homegrown one, and the opening design choice is where to cut it. Split it in two. One layer is retrieval: did the memory system bring back the right facts? The other is the answer: did the agent finally respond or act correctly? They fail independently, and one end-to-end accuracy figure averages across both in a way that hides what broke.
The split isn't new. The open-source RAGAS framework, from a 2024 paper, is built on it, separating a retriever's ability to find relevant context from a model's ability to use that context faithfully. TruLens describes the same idea as a triad: context relevance for retrieval, groundedness for whether the answer follows from what was retrieved, and answer relevance for whether the question was addressed. The names differ and the cut is the same.
Both layers are needed, and this is the part teams skip. A good retriever can still yield a wrong answer, because the right facts land in context and the model ignores them, reasons badly, or blends them with what it already believed. That's why groundedness is its own metric. A bad retriever can still yield a right answer, because the model fills the hole from its parametric knowledge, and that's the more dangerous case. The end-to-end score reads "correct" while masking a memory layer that fetched nothing useful, a failure that will show up later on a domain fact the model never happened to know. Measuring only the final answer can't separate a working memory from a lucky guess.
Retrieval deserves ranking metrics, not an LLM's say-so
Retrieval is the layer where arithmetic can do the scoring, and arithmetic has no opinions. The metrics come from classic information retrieval, and they are decades old:
- Recall@k is the share of facts that should have been retrieved that did appear in the top k. It fits when the downstream model tolerates distractors and the main concern is that the needed fact is present.
- Precision@k is the proportion of retrieved items that turned out relevant. It counts when context space is scarce and each wasted slot costs tokens or drags the model off course.
- Mean reciprocal rank rewards putting the single right fact first, for factoid cases where only the first hit counts.
- Normalized discounted cumulative gain suits graded relevance, where ordering matters because the model weights earlier context more.
- Hit rate, whether anything relevant appeared at all, is a blunt top-line gate.
Pick whichever fit the way your agent reads its memory.
Almost no team notices the next point, and it may be the most useful one here. Popular evaluation frameworks such as RAGAS, TruLens and DeepEval ship metrics called context recall and context precision, and it's natural to assume they are the ranking metrics above. They aren't. In most of these tools an LLM judge reads the retrieved chunks and scores them, rather than comparing against a labelled set of which facts were truly relevant. A team that thinks it's measuring retrieval quality is therefore asking one language model for its view of another model's retrieval, and inheriting every bias an LLM judge carries. Real numbers need a labelled set listing which stored facts are relevant to each query, after which recall@k and the others are just counting. Producing that set is the real effort, and the frameworks let you sidestep it. That explains why honest retrieval numbers are rare while dashboards that look rigorous but aren't are common.
Four checks generic RAG evaluation misses
Handle agent memory as if it were a plain RAG pipeline and you will score retrieval plus answer quality, then stop. That leaves out four failures that belong to memory alone, which only arise because memory lasts and changes with time.
Consistency. Has the agent said something that clashes with what it told the user earlier, or with its own earlier statement? Standard RAG evaluation can't see this, since each query is scored alone, but a memory holding two opposite facts will serve them up on different days and look incoherent. A number is possible. An NLI model can tag a later statement as contradicting an earlier one, applied over the conversation and over what the store returns, which makes contradiction a tracked metric instead of a user complaint. Datasets made for spotting one dialogue turn that contradicts another formalise this very idea.
Recency. Once a fact has changed, does memory give back the new value or the stale one? LongMemEval (ICLR 2025) lists temporal reasoning and knowledge updates among its five tested abilities, so this is a recognised dimension and not a luxury. The design that passes is bi-temporal. A fact records when it held in the real world and when the system found out, and an update invalidates the old version from a timestamp instead of overwriting it. Temporal-graph systems like Graphiti and Zep work this way. The test is simple: after an update the query returns the new value, and the system can still tell you the old value was true earlier.
Abstention. If a fact never went into the store, does the agent say so, or make something up? LongMemEval treats abstention as its own ability, and rightly: a memory that confabulates is worse than one admitting a gap, as the confident fabrication is what a customer ends up reading. The idea predates memory, going back to a 2018 reading-comprehension benchmark with deliberately unanswerable questions. Here the test is cheap. Ask about something never stored; a correct system finds nothing and declines, and a broken one fills the silence.
Forgetting. For data that was supposed to fade or be removed, is it actually gone? Work on machine unlearning supplies the pattern. TOFU, one such benchmark, divides data into a forget set and a retain set and verifies not only that forgotten material can't be reached but that its neighbours are untouched. Memory tests use the same shape: after a deletion the fact can be neither fetched nor inferred, and related facts remain. This is not the same as recency. Superseding a value keeps the old one on file deliberately, while a genuine deletion, the kind a privacy request requires, must leave no trace. A system that only invalidates passes the recency test and quietly fails a right-to-be-forgotten audit, and only an eval that tells the two apart will catch it.
Grade answers with a judge, but don't let it define truth
Retrieval scores by counting. Answers usually can't, since a right answer can be phrased many ways, so most teams use an LLM as judge. That works within well-documented limits that are easy to forget. The 2023 paper that established LLM-as-judge reported that a strong judge matched human raters over eighty percent of the time, hence the technique's popularity. It also catalogued the failure modes: position bias, where the judge favours whichever answer it sees first; verbosity bias, where length is rewarded over substance; and self-enhancement bias, where the judge prefers answers written in its own style. A 2024 follow-up sharpened the last one into something uncomfortable: a model can recognise its own writing, and the better it does so, the more it prefers it. Another 2023 paper, G-Eval, showed that GPT-4 grading lines up reasonably with humans but flagged the failure that matters most in this setting, that judges lean toward fluent, confident, well-formatted text. That is exactly the shape of a confidently wrong answer, which is how a memory that sounds right while getting a number wrong slips through.
Use the judge, but tie it down:
- Grade against a rubric anchored to a known-correct answer instead of an open "which is better", so the judge checks a fact and doesn't vote on a vibe.
- Check how often it agrees with a human-labelled sample from your own data, since a judge at odds with you on your domain is an instrument out of calibration.
- Neutralise position bias as the original paper did: swap the order of the candidates and average the results.
- Treat a judge-model upgrade as a migration of the evaluation suite and not an automatic improvement. The scores from a new model aren't comparable to the old ones, and a silent swap moves the numbers for reasons that have nothing to do with the system under test.
A judge is an instrument to calibrate, not an oracle to obey.
Assembling the rig from your own data
Everything runs on a golden set: a frozen, labelled collection of cases from your own domain, and every entry couples a query to the facts that must be retrieved and the answer that must result. It works as a regression suite, the thing that has to keep passing, adapted for non-deterministic output. Many teams begin with a few hundred hand-curated cases. That range is a practitioner's rule of thumb and not a law, so treat it as a start that grows.
Building the set is not the hard part; keeping it truthful is. A frozen golden set gradually stops matching live traffic as the product, the corpus and the users move on, and a fully green suite over a stale set breeds false confidence, the costliest kind. The cure is a loop. Take failures from production and promote them into the golden set as fresh labelled cases, retire those that no longer reflect reality, and the suite follows the product rather than a snapshot of its past. Synthetic cases can seed coverage, and several frameworks produce them, but generated cases carry the blind spots of the model that wrote them, so a human-checked seed set is still needed.
The suite then runs in two places, since offline and online catch different faults. Offline, against the golden set, it gates releases: repeatable and deterministic, it confirms nothing already understood has been broken. Online, over sampled real traces, it picks up what a frozen set never could, such as distribution shift, the odd long-tail query nobody foresaw, and the slow staleness that surfaces only after weeks of accumulated state. A green offline run says the known is intact; online monitoring shows the unknown. Treat the first as leave to ship, never as proof the thing works.
Cost and latency belong on the same scorecard
Cost and latency form the column most evaluations leave out, and for memory it is mandatory. Memory sits on the critical path of every turn, so its retrieval latency, tracked at p95 and not hidden in an average, caps how quickly the agent can reply. Tokens per turn make up the whole economic argument: memory exists to spend fewer tokens than pasting the full history, so a layer that injects more than it saves has failed its main purpose even when accuracy ties. Growth of the store is a slow regression that adds latency and distractors a little each week until retrieval is plainly worse, with no point-in-time accuracy test having raised a flag. Write-path cost, meaning the extraction and reconciliation work, is real compute that an accuracy figure doesn't show.
A memory should be built for efficiency and consistency, and evaluation is where that gets proven. Higher accuracy bought with an extra half second on each turn, at a cost above the savings, doesn't make a better memory, but a scorecard with only an accuracy column will say it is. With latency and cost next to quality, the trade-offs become visible instead of accidental.
What the rig looks like in practice
In the abstract the rig is two layers, four memory checks, a calibrated judge, a golden set renewed from production, and cost listed next to accuracy. Two sketches show what that means in practice.
Suppose a wealth-management platform stores its memory as a knowledge graph with a handful of entity and relationship types, fed by a multi-stage extraction pipeline that attaches a confidence score from zero to one to every fact. The team wouldn't evaluate it by asking a model whether answers seem good. It would test the retrieval layer directly against a labelled set of documents where the right entities and relationships are already known, so extraction recall and precision are figures and not impressions. Recency would get a deliberate test too. If a newer document revises something an older one stated, the query must come back with the updated value. The same scoring discipline of grading a graph before agents rely on it carries over to agent memory.
Now suppose a legal-analysis system with a couple of dozen agents, some acting as scorers and some as analysts, sharing a structured scores table instead of passing transcripts around. Consistency becomes a first-class metric there, since an agent that contradicts an established score in shared state is a measurable defect and not a vibe somebody noticed. Cost per turn sits on the same dashboard as quality, because a routing layer that decides which agents a document actually needs, and cuts model calls substantially, is only worth keeping if evaluation shows quality held while cost fell. Neither system earns trust by topping a benchmark. Both earn it through measurement on their own data, across the layers and checks that fit the work they do.
Signs that evaluation is the bottleneck
A few symptoms point at the evaluation itself and not at the model, the store or the retriever:
- The memory system was picked from a leaderboard, and production keeps disagreeing with its score.
- End-to-end answer accuracy is the sole metric, so a failure can't be assigned to a retrieval miss or to the model fumbling facts it received.
- Retrieval numbers come from a framework's context-recall metric and no labelled set exists, which means an LLM has been grading retrieval and calling it measurement.
- The agent contradicts itself or serves stale facts and the suite would never have noticed, because it tests single queries and ignores consistency, recency, abstention and forgetting.
- Nobody knows what the latest memory change did to latency or token use, since accuracy is the only column anyone records.
Given that pattern, a stronger model or a cleverer retriever won't rescue the situation, because what can't be observed can't be improved. The remedy is the rig: separate retrieval from answer, score retrieval with ranking metrics over a labelled set, add the four memory checks, calibrate the judge instead of believing it, refresh the golden set with production data, and report cost and latency beside accuracy.
That also closes the larger argument. A context window isn't a memory. The store built in its place has to be read by ranking and not by lookup. The working set in front of the model must be managed, not merely enlarged, and the write path has to consolidate rather than hoard. The whole thing then needs evaluating on your own data, across retrieval, answer and the four checks that public benchmarks skip, with cost and latency beside accuracy, because a leaderboard genuinely can't give you what you need to know. Build the memory and its evaluation together and you'll know, with numbers, whether the agent remembers. Skip the evaluation and you're shipping on a stranger's score for a problem that was never theirs.