How Smritea stores memory
What happens to the text you send to add. Smritea extracts facts, skips filler, merges duplicates and stores memories.
When you call add, Smritea turns your text into memories. A memory is one stored fact. How many memories one call creates depends on your app's storage engine.
The storage engine decides how text becomes memories
You choose the storage engine when you create the app. You cannot change it after the app has memories.
| Quick Search app | Deep Search app | |
|---|---|---|
| Splits text into separate facts | No | Yes |
Memories per add call | One, holding your text as sent | Zero or more, one per fact |
| Skips text with nothing to remember | No | Yes |
| Builds entities and relationships | No | Yes |
| Fits | High-volume apps that need lower cost | Apps that need richer recall |
A Quick Search app stores your content as sent. It runs no language model on add.
The extraction steps
A Deep Search app runs the text through these steps.
text -> extract facts -> merge or skip duplicates -> store -> build entities- Find facts. A language model splits the text into short, separate facts. Each fact can carry a date, tags and an importance score. When the text names a person, Smritea writes the fact about that person in the third person.
- Check for duplicates. Smritea compares each fact with the memories you already have. Each fact gets one of three verdicts: new, same or update.
- Store. New facts become new memories. Smritea skips a same fact. An update fact merges into the existing memory.
- Build entities. After the call returns, Smritea finds the people, places and other entities in new memories. It links them in a knowledge graph for your app. This step runs in the background and covers new memories only.
When a call stores nothing
A call can succeed and store nothing. These are the cases.
| Case | What you see |
|---|---|
| The text holds no fact worth keeping, such as a greeting | memories is empty and explicit_skip is true. |
| Every fact matches a memory you already have | memories is empty and skipped_count is above zero. |
| A fact refines an existing memory | The merged memory appears in memories, and updated_count is above zero. |
None of these cases is an error. Each call still uses one memory credit. See Limits, quotas and credits.
The add result
The add call returns a result object. The table lists its fields.
| Field | Meaning |
|---|---|
memories | The memories the call created or updated. Each has an ID, the content, the scope, metadata and dates. |
facts_extracted | The number of facts the language model found. A Quick Search app always reports zero. |
skipped_count | The number of facts skipped as duplicates. |
updated_count | The number of existing memories the call updated. |
explicit_skip | True when nothing was worth storing. |
Field names use snake case here. Your SDK uses the casing of its language. See your SDK reference.
Related pages
- Memory scope explains who a memory belongs to.
- Time-aware memory explains how memories carry dates.
- Search methods and rerankers explains how search finds memories.
Last updated on



