Skip to content

BuildNot yet confirmed elsewhere1 publisher3 min readPublished

Agent memory products differ on one thing: whether anything decides a fact is dead

A comparison of Mem0, Zep and LangChain's memory classes puts the split at adjudication rather than storage. Mem0 pays two model calls per message to get it.

The Engineer · Build desk

How we use AISend a correction

Illustration accompanying Agent memory products differ on one thing: whether anything decides a fact is dead
Generated illustration

What happened

  • A dev.to comparison of four agent memory stacks argues most of them are a vector store with a label: embed every message, cosine-search the top-k next turn.
  • Its worked failure case has the agent insisting at turn 40 that a user's favourite colour is blue because that record ranked highest, three messages after the correction.
  • LangChain's ConversationKGMemory extracts triples but cannot invalidate one when a later fact contradicts it, so both sit in the graph with no ranking between them.
  • Zep's Graphiti engine timestamps edges with event and ingestion time and flags superseded facts invalid instead of removing them.

Why it matters

  • cost Adjudicating facts moves spend onto the write path, so a chat product that stores after every turn pays per message written, not only per message answered.
  • contradiction The two managed options disagree on what survives a correction, which means a retention or compliance requirement, not retrieval quality, picks the library for you.
  • constraint Re-summarising every turn puts a ceiling on session length that arrives as latency long before anyone notices the token bill.
  • decision Choosing the LangGraph building blocks is a decision to staff conflict resolution yourself and keep maintaining it.

Line the designs up and the variable is not where facts sit, it is where the ruling on truth happens, or whether one happens at all. In LangChain's `ConversationKGMemory` it happens nowhere: triples go in, a contradicting triple goes in beside it, and retrieval has no basis for preferring either [9]. In Mem0 it happens on write, as a second model call that compares each extracted candidate against what is already stored and returns ADD, UPDATE, DELETE or NOOP [10]. In Zep it happens at query time, because edges carry both event time and ingestion time and superseded facts are flagged invalid rather than removed, which is how the graph can still answer where someone worked in 2023 after they have changed jobs [14][15].

That gives you the price list. A top-k recall loop spends no model calls deciding what remains true, which is exactly why it repeats the corrected answer [5][6]; Mem0 spends two per ingested message, one to extract and one to adjudicate [10], so the reconciliation design carries an extra model call per message over the retrieval-only baseline [19]. The author is direct about where that lands: an extra hop with extra cost and latency on the write path, plus the failure mode of an over-eager extraction prompt producing hundreds of low-value facts that dilute retrieval [13]. Writes are async by default [12], which moves the latency off the response path without moving the spend.

The worst arithmetic in the piece belongs to the option that looks cheapest. `ConversationSummaryMemory` re-summarises the entire history every turn, so cost and latency climb with conversation length while the stored output stays the same size [8]. Summarise N turns of history once per turn and the tokens you have paid to summarise by turn N scale with the square of N, even though what you keep does not grow at all [20]. Long sessions are where that bill arrives.

The two managed approaches also disagree about what a correction leaves behind. Mem0's decision set includes DELETE [10]; Zep's Graphiti never deletes, it invalidates, which the author frames as an audit trail you get for free and as overkill if you only ever need current state [14][16]. Same user correction, two different records afterwards: one store can show what it believed last month, the other cannot [21]. That is a retention question dressed as a library choice.

Two caveats on the source. It frames four architectures as claiming the same territory while solving almost none of the same problems, Letta included [17], but the text supplied here stops mid-sentence in the Zep section and never reaches Letta [22]. And it carries no benchmark figures at all [18], so the reconciliation quality that the whole argument turns on is described rather than measured. The mechanisms are checkable from the descriptions. The claim that one of them remembers better is not, yet.

What to watch

  • Whether any vendor publishes contradiction-handling accuracy separately from retrieval benchmarks, so the decision layer can be measured rather than described.
  • Measured write-path token cost per turn for a reconciliation design against a retrieval-only baseline on the same conversation.
  • Whether invalidate-never-delete stores ship retention or compaction controls as the graph grows.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence42
Adoption
Insufficient
Hype gap+12
Incentives
Insufficient
Confidence38
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The piece states that real memory is not retrieval but deciding what is still true.

  2. [2]

    The author recommends LangChain memory when you are already deep in LangGraph, have specific extraction logic you do not want a black box deciding, and are willing to build conflict resolution yourself.

  3. [3]

    The author recommends Mem0 for multi-session, multi-user products such as support bots, personal assistants and CRM copilots, where facts genuinely change over time and automatic reconciliation is needed.

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · August 26, 2026

    Mem0 vs Zep vs LangChain Memory vs Letta: Which One Actually Remembers?

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

  • Vector Stores for LLM ApplicationsFollow
  • Retrieval Cost and Latency TradeoffsFollow
  • Agent Memory ArchitecturesFollow
  • Temporal Knowledge GraphsFollow
  • Fact Invalidation and Conflict ResolutionFollow
Loading related stories