docs: correct filter grammar, categories operators, and memory-type validation claims

Addresses review feedback on #6908 and fixes the same claims at their source.

- Flat multi-key v2 filters are implicitly ANDed. Verified against the
  production API: an AND/OR/NOT wrapper is needed for OR/NOT semantics and
  nested grouping, not merely to combine conditions.
- categories rejects eq and ne. Only in and contains are accepted.
- Platform restricts top-level filter keys to an allowlist and restricts
  operators per field, while OSS accepts the full operator set on any
  metadata key.
- AsyncMemory.add() raises ValueError, not Mem0ValidationError.
- Any explicit memory_type other than procedural_memory is rejected rather
  than stored as an ordinary memory.
- Refresh the stale Memory Types llms.txt description.
This commit is contained in:
kartik-mem0
2026-08-14 17:32:52 +05:30
parent b2412bd4db
commit e621245ce3
4 changed files with 9 additions and 9 deletions
+2 -2
View File
@@ -18,7 +18,7 @@ Mem0's Python SDK exposes a `memory_type` parameter on `add()`. The underlying `
| Episodic memory | `episodic_memory` | **Not implemented** | Same as above: defined, never wired into the extraction pipeline, rejected by validation, no documented roadmap. |
<Warning>
Only `procedural_memory` is a real, working value. Calling `memory.add(messages, memory_type="semantic_memory")` (or `episodic_memory`) raises `Mem0ValidationError`, telling you to pass `procedural_memory` instead.
Only `procedural_memory` is a real, working value. Calling `memory.add(messages, memory_type="semantic_memory")` (or `episodic_memory`) is rejected and tells you to pass `procedural_memory` instead. Sync `Memory.add()` raises `Mem0ValidationError`; `AsyncMemory.add()` raises a plain `ValueError`.
</Warning>
## Procedural memory
@@ -40,7 +40,7 @@ memory.add(
)
```
If everything else about your call is unchanged but you omit `memory_type`, or set it to anything other than `procedural_memory`, Mem0 stores the messages as an ordinary memory instead: there is no semantic/episodic pathway for it to fall into.
Omit `memory_type` entirely and Mem0 stores the messages as an ordinary memory: there is no semantic/episodic pathway for it to fall into. Any other explicit value is rejected by validation rather than quietly falling back to an ordinary memory.
## How every other memory is scoped