Polign Recall · Comparison

Recall compared with mem0 and Zep

Maya tells her assistant twelve things over nine months: three homes, three jobs, three work emails, a sister who moves, and, in one sentence, a new diet and a shellfish allergy. Then she asks questions whose answers depend on which statement is current, and in one scenario asks it to forget the allergy. The same model extracts, answers and judges for all three memories.

18 of 18
right answers for Recall in every scenario
mem0 18, 18 and 15; Zep 12 and 11
3.0k
tokens to save one message
mem0 12.7k, Zep 14.7k
3 of 3
runs where forgetting the allergy kept the diet
mem0 and Zep lost it 3 of 3
What we measured

Three scripted conversations, each run three times per system. Claude Opus 5.5 extracted memories from every message, answered every question from what each memory returned, and judged every answer against a reference answer written before the runs. mem0 2.2.1 open source, Zep's open-source engine graphiti-core 0.31.1, and Recall 0.20 with its built-in embedding model, all with default settings. Tokens are what the model used to save one message into memory, averaged over the run.

Recall, mem0 and Zep answering six questions about a user whose facts changed over nine months

The first scenario, replayed from the recorded runs.

Scenario 1: facts that change

Twelve statements dated over nine months, then six questions: where Maya lives, where she works, which email to use, where her sister is, what she eats, and whether she is moving. Every answer depends on a later statement replacing an earlier one.

MemoryRight answersTokens per saved messageSeconds per saved message
Recall18 of 183.0k3.8
mem018 of 1812.7k3.4
Zep12 of 1814.7k14.4

Six questions, three runs each.

Asked why it believes an answer, Recall quotes the message the fact came from, with its date and the values it replaced. Zep quotes a message. mem0 keeps no source text.

Scenario 2: a fact stated in passing, then forgotten

The same conversation, with the diet and the allergy arriving in one sentence: "I've started eating fish again, so I'm pescatarian now, but no shellfish, I'm allergic." Six questions, then "forget that Maya is allergic to shellfish", then "what can Maya eat?". Recall and mem0 only.

MemoryRight answers before the forgetDiet kept after the forgetTokens per saved message
Recall18 of 183 of 33.1k
mem018 of 180 of 312.7k

mem0 stored the diet and the allergy as one memory, so forgetting the allergy deleted the diet with it. Recall files each fact in a sentence as its own statement, so the forget withdrew the allergy alone, and its history still shows that it was withdrawn and when.

Scenario 3: forget first, then ask

The conversation again, with the forget before the questions. All three systems.

MemoryRight answers"What can Maya eat?"Tokens per saved message
Recall18 of 18right 3 of 3: pescatarian, with the vegetarian diet it replaced3.2k
mem015 of 18wrong 3 of 3: answered vegetarian from an older note after deleting its diet-and-allergy memory12.7k
Zep11 of 18wrong 3 of 3: deleted both diet facts and answered that it had no notes14.8k

Recall 0.20.2 in this scenario. The Recall page steps through the replies from one of these runs.

How to forget

In Recall a forget is one call that names the fact. It records a withdrawal, and the history of the fact shows the withdrawal beside the statements before it. In mem0 and Zep, application code searches for the memory, then deletes it by id, and the memory is gone from the record.

What this does not show

Try it on your own conversation

One pip install brings the client and the database. Save a few messages, correct one, and read back what was believed before.