The AI tooling category has settled on "memory" as a name for a feature most products implement as retrieval. The two words sound interchangeable in marketing copy. They are not interchangeable in engineering. When a user says "the assistant should remember that my database is PostgreSQL now," they are describing a memory operation — replace the prior fact with the new one, and never produce the old one again. When a vector store answers a similarity query about databases, it returns the top-k most embedding-similar passages from the corpus, including both the current and the prior assertion.

Those are not two implementations of the same thing. They are two different operations with two different correctness criteria. Conflating them is the most expensive recurring mistake in current "AI memory" products.

Two different questions

The cleanest way to see the distinction is to write down the question each system is built to answer.

RAG answers
Which passages are most similar to this query?
Input is a query embedding. Output is a ranked list of stored passages by cosine similarity (or another distance metric). The result is a probability distribution over the corpus, conditioned on the query. There is no single correct answer; there is a most-relevant one.
Memory answers
What is true about this entity right now?
Input is an identity key (a user, a project, a setting). Output is the current value, ideally with the time it was set and what it superseded. There is a single correct answer at any moment; previous answers are history, not candidates.

The shape of the operation is different. RAG is a ranking function over a corpus. Memory is a lookup against an identity. They can be composed — you can use RAG to retrieve memory entries — but RAG alone cannot perform a memory operation, because RAG has no concept of identity, replacement, or "the latest one wins."

What RAG actually does

Retrieval-augmented generation, in the standard implementation, looks like this:

  1. Chunk and embed. Documents are split into chunks and each chunk is embedded into a vector space. The chunks live in a vector store, possibly with metadata.
  2. Embed the query. At inference time, the user query (or some derived form of it) is embedded into the same vector space.
  3. Retrieve top-k. A similarity search returns the k nearest chunks, ranked by distance.
  4. Inject and generate. The retrieved chunks are inserted into the LLM context and the model generates an answer.

This pattern is excellent at what it was designed for: surfacing relevant passages from a large corpus that an LLM might not otherwise have in context. It works well for documentation lookup, knowledge-base assistants, semantic search, and a wide class of question-answering tasks where the right answer is plausibly contained in one or more passages somewhere in the corpus.

What RAG does not do, by construction:

  • It does not know which passage is current. Two passages that contradict each other both live in the store. Both can be returned. The newer one does not automatically win.
  • It does not have identity. The store does not have a concept of "the user's database setting." It has chunks that mention databases.
  • It cannot replace. Adding a new passage does not invalidate the old one. Both will continue to be retrievable.
  • It is non-deterministic at the boundary. A different phrasing of the same question can change which passages rank highest. The system's output depends on the exact query embedding, not on the underlying fact.

None of these are bugs. They are properties. RAG is a similarity search; similarity search behaves like this.

What memory actually needs

A system that genuinely behaves as memory has a different set of properties, each of which a vector store does not provide on its own.

Properties of a real memory layer
PropertyWhat it meansHas RAG?
Stable identityEach fact is keyed to a thing — a user, a project, a setting — not just embedded as text.No
Time-aware truthThe latest assertion about a key is authoritative. Earlier values become history.No
Deterministic resolutionA query for the value of a key returns exactly one answer, not a distribution.No
Replacement semanticsWriting a new value invalidates the old one. The old value is not returned by future reads of the same key.No
Deletion semanticsA fact can be explicitly removed. Future reads return "no value," not a stale match.No
Audit trailWhen each fact was set, by whom, and what it superseded, is recoverable after the fact.No

You can build a system with these properties on top of a vector store, but the vector store is no longer doing the memory work — an identity-keyed metadata layer on top of it is. The relevant part of the design is the layer that knows about identity, time, and supersession. The embedding is incidental.

The failure modes the conflation produces

When a product treats RAG as memory, a recognizable set of failures appears in production:

  • Stale facts resurface. The assistant tells the user something they corrected three weeks ago, because a phrasing of the new query happens to retrieve the old passage with higher similarity.
  • Contradictions in adjacent turns. The model says one thing in turn 4 and the opposite in turn 7. Both came from the corpus. Neither was wrong to retrieve. The system has no concept of which is true.
  • Identity confusion. The assistant mixes facts from two users whose memories happen to embed near each other in vector space, especially in multi-tenant systems where identity scoping is implicit rather than enforced.
  • Drift that looks like model regression. As the corpus grows, the distribution of retrieved passages shifts. The same query starts returning different results. The model appears to "forget" without anything having changed in the model itself.
  • Silent data sprawl. Because nothing is ever replaced, the store accumulates duplicates and near-duplicates. Operations and quality teams interpret this as a data hygiene problem; it is a missing semantics problem.

The failures are not memory bugs. They are retrieval behaving exactly as designed.

Why the conflation keeps spreading

The naming is sticky for three reasons.

First, RAG is comparatively easy to build. There are mature open-source embedding libraries, mature vector stores, and well-understood patterns. Identity-keyed memory with replacement semantics is harder to build correctly — you need schema, write paths, conflict resolution, deletion, and audit. A team shipping fast picks the easier infrastructure and labels it with the more attractive word.

Second, retrieval systems demo well. In a single short conversation, recalling a relevant prior message looks like memory. The failure modes — staleness, contradiction, identity confusion — appear over longer interactions, larger corpora, and multi-tenant deployments. A demo at launch is unlikely to surface them. A production deployment six months later will.

Third, the category has not yet developed clear vocabulary. "Memory" is the available word for "the system remembers things across sessions." Until the category separates retrieval and memory at the level of how products describe themselves, the naming will keep doing the work that a clear specification should be doing.

The conceptual triangle: memory, RAG, governance

This article sits next to two others on the site that argue adjacent points. The three together form a triangle of "X is not Y" arguments that share a structural feature: each pair gets conflated in marketing and produces specific failure modes in engineering.

  • Memory is not governance. Memory optimizes recall. Governance optimizes constraint enforcement. Even a perfect memory layer does not enforce architectural rules; it only remembers them.
  • Why RAG fails for architectural governance. RAG retrieves similar text. Governance requires authoritative, precedence-aware constraint resolution. Even when "the right ADR" exists in the corpus, RAG will not reliably surface it against an older one with higher similarity.
  • RAG is not memory. The third edge. Even before governance enters the picture, the two infrastructure primitives most often confused with each other — the retrieval layer and the memory layer — are different operations with different correctness criteria.

The three pieces compose. Once memory is correctly separated from retrieval, and governance is correctly separated from memory, what remains is a clearer view of which infrastructure piece is responsible for which property. Identity-keyed truth lives in memory. Similarity-ranked context lives in RAG. Deterministic constraint enforcement lives in governance. Mneme is one specific implementation of the third, and one of the reasons it works is that it does not pretend to be the other two.

Conclusion

The names matter because the contracts matter. A user who is told a system has memory expects identity-keyed, time-aware, replacement-respecting behavior. A system built on RAG provides similarity-ranked retrieval over a corpus. The two are useful for different things. Selling one as the other produces a recognizable set of failures that no amount of model improvement can fix, because the gap is not in the model — it is in the data layer the model is asked to trust.

Build retrieval where retrieval is the right tool. Build memory where memory is the right tool. And if a product is offering you "AI memory," it is worth asking, before you trust it with anything authoritative, which of the two it actually is underneath.

FAQ

Isn't RAG just a way of giving an LLM memory?
RAG gives an LLM access to a similarity-ranked subset of prior text at inference time. That is useful, but it is not memory in the engineering sense. Memory implies a durable, identity-stable store where "what is true about X" has a single answer at any given time. RAG returns the k most similar passages to a query embedding — a probability distribution, not an identity record. Treating the first as the second produces the most common AI memory failures in production.
What is an example of a failure caused by this conflation?
A user tells the assistant their database is now PostgreSQL, having previously been MySQL. A memory system updates the canonical fact "database = PostgreSQL" and the old fact is no longer authoritative. A RAG-as-memory system stores both statements as separate documents. On the next query, the similarity ranker may return either, depending on phrasing. The assistant confidently says "your database is MySQL" three turns later because that passage scored higher on the new query embedding. This is not a memory bug; it is RAG behaving exactly as designed.
Does this mean RAG is bad?
No. RAG is excellent at what it actually does: retrieving relevant text passages from a large corpus to inform a generation step. That is a real and valuable capability. The issue is naming. When a product is sold as "AI memory" but implemented as RAG, users expect identity-stable behavior and get similarity-ranked behavior. The category produces both bad UX and unsafe operational decisions in agent systems that rely on persistent state.
What does a real memory layer look like?
A real memory layer has: stable identity (each fact is keyed, not just embedded); time-aware truth (the latest assertion about a key supersedes earlier ones); deterministic resolution (a query for "database" returns one answer, not a distribution); replacement and deletion semantics; and an audit trail of when each fact was set, by whom, and what it superseded. None of these are properties of vector similarity retrieval. All of them are required if you want the system to act as if it remembers.
How does this relate to architectural governance?
Architectural governance has the same identity-stability requirement as memory, and the same incompatibility with RAG. An ADR that supersedes an older one must win every retrieval, not just the ones where its embedding happens to rank higher. Mneme treats decisions as identity-keyed memory entries with explicit supersedes relationships and a deterministic precedence resolver — which is why a vector store under it would defeat the point.

See identity-keyed governance running

The Mneme demo shows decisions resolved by identity and precedence, not by similarity — the property this article argues a memory layer needs and a retrieval layer cannot provide.

View the demo →