TL;DR
The public benchmarks for agent memory cannot tell you which system will work for your problem, and several cannot reliably tell which is better at all: a no-memory baseline outscores the products on raw accuracy, about six percent of the most-cited benchmark answer key is wrong, and its automatic judge accepts most wrong answers. So build your own evaluation on your own data. Split retrieval from the answer layer, score retrieval with real ranking metrics instead of an LLM judge, add the four checks generic RAG evaluation skips (consistency, recency, abstention, forgetting), calibrate the judge instead of obeying it, and put cost and latency on the same scorecard as accuracy.
TL;DR: The public benchmarks for agent memory cannot tell you which system will work for your problem, and several of them cannot reliably tell which system is better at all. The evidence is not subtle. On the benchmark the whole field quotes, a dumb baseline that pastes the entire history into the prompt outscores the dedicated memory products, by the memory vendor's own paper. An independent audit found about six percent of that benchmark's answer key is simply wrong, and the automatic grader accepts roughly two out of three deliberately wrong answers. So a serious team stops shopping by leaderboard and builds its own evaluation over its own data: split it into a retrieval layer and an answer layer, measure retrieval with real ranking metrics instead of an LLM's opinion, and add the four checks generic RAG evaluation skips, consistency, recency, abstention, and forgetting. Grade answers with a judge but never let the judge define truth, run the suite offline to gate releases and on live traces to catch what offline misses, and put latency and cost-per-turn on the same scorecard as accuracy. A memory system's job is efficiency and consistency, not a high score.
A team shortlists a memory system the way you would expect: it reads the leaderboard, picks the one at the top, and ships it. Three weeks into production the agent is confidently wrong about a number the user corrected last Tuesday, it has started contradicting a decision it made a week ago, and the one fact a query actually needed came back ranked below four that did not. The benchmark said this system was the best on the market. The benchmark told them nothing about their problem. This is the question the last five posts kept pushing toward and never answered head on: once you have built the memory, how do you know it works. The uncomfortable answer is that the numbers most teams reach for cannot tell you, and a few of them cannot tell anyone much at all.
This is the sixth and final post in our series on agent memory. The first established that a context window is not a memory. The second compared the tools for building the store that is. The third showed that reading the right facts back out is a ranking problem. The fourth showed how to manage a working set inside a finite window. The fifth showed how to write raw history into durable memory. Every one of those is a design you can get right or wrong, and this post is about the only way to tell the difference: evaluation, done on your own data, because the public version is broken in ways that are worth understanding before you trust it.
A leaderboard rank tells you a system did well on someone else's test, scored by someone else's judge, against someone else's idea of the right answer. It does not tell you whether your agent will remember the thing your user told it three weeks ago. Those are different questions, and only one of them is yours.
The benchmark you are shortlisting on is measuring the wrong thing
Start with the result that should give everyone pause. On the most-cited conversational-memory benchmark, a method with no memory system at all, one that simply pastes the entire conversation history into the prompt and answers from that, scored at the top, a little ahead of the dedicated memory products it was being compared against. That result is not from a critic. It is in the paper behind one of the best-known memory libraries, Mem0, published at a peer-reviewed venue, reporting that the full-context baseline beat their own system on raw accuracy, at roughly ten times the per-answer latency. The rival vendor cites the same fact about that paper, so it is not one team's spin.
That is not the embarrassment it looks like, and reading it correctly is the whole point. Pasting everything in is accurate because nothing was left out. It just does not scale, for the overflow and quadratic-cost reasons the working-memory post laid out. Which means the benchmark, as scored, is mostly rewarding whichever system can approximate full-context accuracy while spending fewer tokens. That is a real and useful thing to measure. It is not the same as measuring whether a system will surface the one fact your user mentioned a month ago, and a buyer who reads the leaderboard as the second thing when it measures the first has been misled by their own assumption.
It gets worse when you look at the ground truth itself. A separate audit, public and reproducible though not peer reviewed, took apart the answer key of the most-cited conversational-memory benchmark and found about six percent of it was simply wrong: hallucinated facts, broken temporal reasoning, answers attributed to the wrong speaker. Worse, when the auditors fed the standard automatic grader deliberately wrong but plausible answers, it accepted roughly two out of three. One honest caveat, because it matters: the team that ran that audit, Penfield, builds memory systems too, so they are not a neutral party. But the work is reproducible and the direction is corroborated by open issues on the benchmark's own repository, so the problem is real even if you discount the messenger. Sit with what it implies. A benchmark whose answer key is six percent wrong cannot resolve a difference between two systems smaller than six percent, and a grader that waves through two-thirds of confident nonsense is not measuring correctness, it is measuring confidence.
And the vendor numbers themselves do not agree. The two best-known memory vendors publish scores on the same benchmark that contradict each other, each having re-run the other's system and gotten a result the other disputes, because the score turns out to depend heavily on who configured whose integration. When a headline number swings by double digits based on setup, it is marketing, not measurement. None of this means the systems are bad. It means the leaderboard cannot rank them for you, and certainly cannot rank them for your domain.
Long context is not memory, and the benchmarks blur them
There is a quieter confusion underneath all of this, and it corrupts comparisons before they even start. Long context is not memory, and a lot of evaluation treats them as the same axis. A test like needle in a haystack, where you hide one sentence in a long document and ask the model to find it, measures attention over a single fixed input. It is a useful smoke test and it has no paper behind it, just a widely copied script. A more serious benchmark called RULER showed that plenty of models advertised at very long context windows hold an effective span far shorter than the label. Both of those measure capacity: how much of one prompt the model can actually use.
Memory is a different thing. Memory is continuity across sessions. The agent learned something on Monday, the conversation ended, the window was cleared, and on Friday it still knows. The conversational-memory benchmarks, LoCoMo and LongMemEval, test that write-then-retrieve loop across many sessions, which is why they are the relevant family even with all their flaws. The distinction is not pedantic. When a comparison quietly folds a long-context score into a memory ranking, it is averaging two different abilities, and you cannot tell from the leaderboard which one moved. A system can look like it has a great memory because it has a big window, right up until the window clears and the memory turns out to be nothing. Before you trust any memory number, check that it tested memory and not capacity.
Evaluation has two layers, and you have to test both
If the public benchmarks cannot do the job, you build your own, and the first decision is where to cut it. The answer is in two. There is a retrieval layer, did the memory system surface the right facts, and there is an answer layer, did the agent ultimately respond or act correctly. These fail independently, and a single end-to-end accuracy number averages over both in a way that hides what broke.
This split is not novel. The open-source RAGAS framework, from a 2024 paper, is built around it, separating the retriever's ability to find relevant context from the model's ability to use that context faithfully. TruLens frames the same idea as a triad: context relevance for the retrieval leg, groundedness for whether the answer actually follows from what was retrieved, and answer relevance for whether it addressed the question. The names differ, the cut is the same, and the cut is what you need.
Hold onto why both layers are necessary, because it is the part teams skip. A good retriever can still produce a wrong answer: the right facts land in the context and the model ignores them, mis-reasons, or blends them with what it already believed, which is exactly why groundedness is its own separate metric. And a bad retriever can still produce a right answer, because the model fills the gap from its parametric knowledge, and that is the more dangerous case. Your end-to-end score says correct, and it is quietly masking a memory layer that fetched nothing useful, a failure that will surface later on a domain fact the model never happened to know. Measure only the final answer and you cannot tell a working memory from a lucky guess. You have to instrument both.
Measure retrieval with ranking math, not an LLM's opinion
The retrieval layer is the one you can score with arithmetic, and you should, because arithmetic does not have opinions. The metrics are decades old and come straight from information retrieval. Recall@k is the fraction of the facts that should have been retrieved that actually showed up in the top k, and it is the right metric when the downstream model tolerates distractors and you mainly care that the needed fact is present. Precision@k is the fraction of the retrieved items that were actually relevant, and it matters when context budget is tight and every wasted slot costs tokens or pulls the model off course. Mean reciprocal rank rewards getting the single right fact to the top, for the factoid cases where only the first hit matters. Normalized discounted cumulative gain handles the case where relevance is graded rather than yes-or-no and ordering matters because the model weights earlier context more heavily. Hit-rate, did anything relevant show up at all, is a blunt top-line gate. Pick the ones that match how your agent actually consumes memory.
Here is the part almost no team notices, and it is the most useful thing in this post. The popular evaluation frameworks, RAGAS, TruLens, DeepEval, and the rest, ship metrics named context recall and context precision, and it is natural to assume those are the ranking metrics above. They are not. In most of these tools, context recall and precision are computed by an LLM judge that reads the retrieved chunks and scores them, not by comparing against a labeled set of which facts were truly relevant. So a team that believes it is measuring retrieval quality is, in practice, asking one language model for its opinion of another model's retrieval, and inheriting every bias an LLM judge carries. To get the real numbers you need a labeled set, a list of which stored facts are genuinely relevant to each query, and then recall@k and the rest are just counting. Building that labeled set is the work. It is exactly the work the frameworks let you skip, which is why so few teams have honest retrieval numbers and so many have a dashboard that feels rigorous and is not.
The four checks generic RAG evaluation skips
Treat agent memory like a RAG pipeline and you will measure retrieval and answer quality and stop, and you will miss the four failures that are specific to memory, the ones that only appear because memory persists and changes over time.
The first is consistency. Does the agent contradict something it told the user, or itself, earlier in the relationship. A raw RAG eval has no notion of this because it scores each query in isolation, but a memory that quietly holds two opposite facts will surface them on different days and read as incoherent. You can make it a number: a natural-language-inference model can label a later statement as contradicting an earlier one, run across the conversation and across what the store returns, so contradiction becomes a metric you track rather than a complaint a user files. The lineage of dialogue-contradiction work, datasets built specifically to detect when one turn contradicts another, is exactly this idea formalized.
The second is recency. When a fact has been updated, does memory return the current value or a stale one. LongMemEval, published at ICLR in 2025, names temporal reasoning and knowledge updates as two of the five memory abilities it tests, so this is a recognized axis, not a nicety. The internal design that makes it pass is bi-temporal: every fact carries when it was true in the world and when the system learned it, and an updated fact is invalidated as of a timestamp rather than overwritten, which is the same reconciliation move the consolidation post described, and the model temporal-graph systems like Graphiti and Zep are built on. The test is concrete: after an update, a query has to return the new value, and the system should still be able to tell you the old one was true before.
The third is abstention. When the fact was never stored, does the agent say it does not know, or does it invent one. LongMemEval makes abstention an explicit ability for a reason: a memory that confabulates is worse than one that admits a gap, because the confident fabrication is the one that ends up in front of a customer. The idea has a long pedigree, going back to a 2018 reading-comprehension benchmark that deliberately added unanswerable questions to test whether a system knows what it does not know. For memory the test is simple to build: ask about a fact you never put in the store, and a correct system retrieves nothing and abstains while a broken one fills the silence.
The fourth is forgetting. When something was supposed to decay or be deleted, is it actually gone. The machine-unlearning literature hands you the template: a benchmark called TOFU splits data into a forget set and a retain set and checks not only that the forgotten material is unreachable but that everything around it survived intact. The agent-memory version is the same shape: after a deletion, the fact should be neither retrievable nor inferable, while its neighbors stay put. And note this is a different requirement from recency. Temporal supersession keeps the old value on record on purpose, but a real deletion, the kind a privacy request demands, has to leave nothing behind. A system that only ever invalidates will pass your recency test and quietly fail a right-to-be-forgotten audit, and only an eval that separates the two will catch it.
Grade answers with a judge, never let it define truth
The retrieval layer scores with counting. The answer layer usually cannot, because there are many correct ways to phrase a right answer, so most teams reach for an LLM as the judge. That works, inside limits that are well documented and easy to forget. The paper that put LLM-as-judge on the map, from 2023, found a strong judge agreeing with human raters more than eighty percent of the time, which is why the technique is everywhere. The same paper catalogued the failure modes in the same breath: position bias, a judge favoring whichever answer it sees first, verbosity bias, a judge rewarding length over substance, and self-enhancement bias, a judge preferring answers written in its own style. A 2024 follow-up sharpened that last one into something uncomfortable: a model can recognize its own writing, and the better it is at recognizing it, the more it prefers it. And a separate 2023 evaluation paper, G-Eval, while showing that GPT-4 grading lines up reasonably with humans, flagged the failure that matters most here, that judges lean toward fluent, confident, well-formatted text. That is precisely the shape of a confidently wrong answer, which is how a memory system that sounds right and gets the number wrong slips through.
So use the judge, but bolt it down. Grade against a rubric anchored to a known-correct answer, not an open-ended which-is-better, so the judge is checking a fact, not voting on a vibe. Before you trust it, measure its agreement with a human-labeled slice of your own data, because a judge that disagrees with you on your domain is an instrument out of calibration. Cancel position bias the way the original paper did, by swapping the order of the candidates and averaging. And treat a judge-model upgrade as a migration of your evaluation suite, not an automatic improvement, because the scores a new model produces are not comparable to the old ones and a silent swap will move your numbers for reasons that have nothing to do with your system. A judge is an instrument you calibrate, not an oracle you obey.
Build the rig from your own data
All of this runs on a golden set: a frozen, labeled collection of cases from your own domain, each a query paired with the facts that should be retrieved and the answer that should come back. It is your regression suite, the thing that has to keep passing, adapted for output that is not deterministic. Most teams start in the low hundreds of hand-curated cases, and that range is a practitioner's rule of thumb rather than a law, so treat it as a starting point you grow, not a target you hit.
The hard part is not building the set, it is keeping it honest. A frozen golden set slowly stops resembling live traffic as the product, the corpus, and your users shift, and an all-green suite over a stale set gives false confidence, the most expensive kind. The fix is a loop: mine your production failures and promote them into the golden set as new labeled cases, retiring the ones that no longer reflect reality, so the suite tracks the product instead of a snapshot of its past. You can bootstrap coverage with synthetically generated cases, several frameworks will do this for you, but generated cases inherit the blind spots of the model that wrote them, so a human-verified seed stays necessary.
Then run the suite in two places, because offline and online catch different things. Offline, against the golden set, it gates releases: deterministic, repeatable, the check that you did not break what you already understood. Online, against sampled real traces, it catches what the frozen set never will, the distribution shift, the long-tail query you did not imagine, and the slow memory-staleness failures that only show up after weeks of accumulated state. Offline tells you that you did not break the known. Online tells you what you did not know to test. A serious rig has both, and treats a green offline run as permission to ship, not proof that it worked.
Put cost and latency on the same scorecard as accuracy
The last column on the scorecard is the one most evaluations leave off, and for memory it is not optional. A memory system sits on the critical path of every single turn, so its retrieval latency, measured at the tail with p95 rather than hidden in an average, directly bounds how fast the agent can answer. Its tokens-per-turn is the entire economic case, because the reason to build memory instead of pasting the full history into the window is to spend fewer tokens, so a memory layer that injects more than it saves has failed its core job even at equal accuracy. Its store growth rate is a slow-motion regression, the kind that raises latency and distractor density a little every week until one day retrieval is visibly worse and nothing in a point-in-time accuracy test would have warned you. And its write-path cost, the extraction and reconciliation the consolidation post described, is real compute that an accuracy number never shows.
The previous post argued that consolidation should be built for efficiency and consistency, not a leaderboard score. Evaluation is where you prove you actually did. A more accurate memory that adds half a second to every turn and costs more than it saves is not a better memory, and a scorecard that only has an accuracy column will tell you it is. Put latency and cost next to quality, and the trade-offs you are actually making become visible instead of accidental.
What this looks like when we build it
The abstract version is two layers, four memory checks, a calibrated judge, a golden set refreshed from production, and cost beside accuracy. Here is the concrete version, from systems we have shipped, anonymized.
On a wealth-management platform we built, the memory is a knowledge graph in Neo4j, six entity types and five relationship types, fed by an eight-stage extraction pipeline that puts a confidence score from zero to one on every fact. We do not evaluate it by asking a model whether the answers seem good. We evaluate the retrieval layer directly, against a labeled set of documents where we already know which entities and relationships should have been extracted, so extraction recall and precision are numbers, not impressions. We test recency on purpose: when a later document changes a fact an earlier one established, a query has to return the current value, which is the same reconciliation discipline we use to keep the graph fresh and to fight the graph rot we covered in the first pillar. It is the same scoring discipline we wrote about in grading a knowledge graph before we trust it and the twenty-minute health check, pointed now at agent memory instead of the graph alone.
On Paralegent, our multi-agent legal-analysis system, twenty-three agents, twelve scorers and eleven analysts, share a structured scores table instead of passing transcripts around. Consistency is a first-class metric there, because when agents read and write shared state, an agent that contradicts an established score is a measurable defect rather than a vibe somebody noticed. And cost-per-turn sits on the same dashboard as quality, because the routing layer that decides which agents a given document actually needs, the one that cut model calls by roughly seventy-five percent, is only worth keeping if the evaluation shows the quality held while the cost fell. Neither system is trusted because it topped a benchmark. Both are trusted because we measured them, on our data, across the layers and checks that matter for the job they do.
How to tell evaluation is your bottleneck
A few symptoms point straight at the evaluation itself, rather than at the model, the store, or the retriever.
You chose your memory system from a leaderboard and production keeps disagreeing with the score. Your only metric is end-to-end answer accuracy, so when something is wrong you cannot say whether retrieval missed or the model fumbled facts it was handed. Your retrieval numbers come from a framework's context-recall metric and you have never built a labeled set, which means an LLM has been grading your retrieval and calling it measurement. Your agent contradicts itself or goes stale and nothing in your suite would have caught it, because the suite tests one query at a time and never checks consistency, recency, abstention, or forgetting. And you cannot say what your last memory change cost in latency or tokens, because accuracy is the only column you keep. When that is the pattern, a better model or a fancier retriever will not help, because you cannot improve what you cannot see. The fix is the rig: split retrieval from answer, score retrieval with real ranking metrics over a labeled set, add the four memory checks, calibrate the judge instead of trusting it, refresh the golden set from production, and keep cost and latency on the same page as accuracy.
This is where the series closes. A context window is not a memory. The store you build instead has to be read by ranking, not lookup. The working set in front of the model has to be managed, not just enlarged. The write path has to consolidate, not hoard. And the whole thing has to be evaluated, on your data, across retrieval and answer and the four checks the public benchmarks skip, with cost and latency beside accuracy, because the leaderboard genuinely cannot tell you what you need to know. Build the memory and the evaluation together and you will know, with numbers, whether your agent actually remembers. Skip the evaluation and you are shipping on a stranger's score for a problem that was never theirs.
Not sure whether your agent's memory actually works, or only looks like it does on a benchmark someone else designed? Building the evaluation rig, the labeled retrieval set, the consistency and recency and abstention checks, and the cost-per-turn scorecard, on your own data is work we do every week. Book a 15-minute call and we will tell you honestly where your memory is strong, where it is guessing, and which number on the leaderboard you can safely ignore. We work US business hours.
Share this article
Muhammad Mudassir
Founder & CEO, Cognilium AI | 10+ years
Muhammad Mudassir
Founder & CEO, Cognilium AI | 10+ years experience
Mudassir Marwat is the Founder & CEO of Cognilium AI. He has shipped 100+ production AI systems acro...
