Memory Types
Understand episodic, semantic, and procedural memory and when to use each.
MemNexus supports three types of memory, inspired by how human memory works. Each type serves a different purpose in building a comprehensive knowledge system.
Episodic memory
What happened. Episodic memories record events, interactions, and experiences tied to a specific time and context.
{
"content": "Debugged CORS issue in API gateway. Root cause: credentials header was being stripped.",
"memoryType": "episodic",
"importance": 0.8,
"topics": ["debugging", "cors", "api-gateway"],
"createdAt": "2026-02-06T14:30:00Z"
}
When to use
- Recording what happened during a session
- Logging decisions and their rationale
- Tracking bug fixes, deployments, and milestones
- Capturing conversation context
Characteristics
- Time-bound — Has a clear "when" associated with it
- Contextual — Makes sense within its temporal context
- Decaying relevance — Older episodic memories may become less relevant
- Searchable by meaning — "That deployment issue" finds relevant events
Episodic is the default memory type and the most commonly used.
Semantic memory
What is true. Semantic memories represent general knowledge and facts that aren't tied to a specific event.
{
"content": "MemNexus uses Neo4j as its graph database with OpenAI text-embedding-3-small for vector embeddings.",
"memoryType": "semantic",
"importance": 0.9,
"topics": ["architecture", "database", "embeddings"]
}
When to use
- Storing architectural decisions
- Recording technology choices and configurations
- Documenting domain knowledge
- Capturing persistent truths about a project
Characteristics
- Timeless — True regardless of when it was stored
- Stable — Doesn't decay in relevance over time
- Factual — Represents knowledge, not events
- Reusable — Applicable across many contexts
Procedural memory
How to do things. Procedural memories capture processes, workflows, and step-by-step instructions.
{
"content": "To deploy core-api: 1) Run tests locally, 2) Push to main, 3) CI/CD pipeline deploys automatically, 4) Verify health endpoint.",
"memoryType": "procedural",
"importance": 0.8,
"topics": ["deployment", "core-api", "workflow"]
}
When to use
- Documenting deployment processes
- Recording debugging workflows
- Storing coding patterns and recipes
- Capturing operational procedures
Characteristics
- Actionable — Contains steps or instructions
- Replayable — Can be followed to reproduce a result
- Evolving — Updated as processes change
- High-value — Often saves significant time when recalled
Choosing the right type
| Scenario | Memory type | Example |
|---|---|---|
| Bug fix resolution | Episodic | "Fixed timeout by increasing connection pool size" |
| Technology choice | Semantic | "Project uses PostgreSQL for relational data" |
| Release process | Procedural | "Step 1: Run tests. Step 2: Tag release..." |
| Meeting notes | Episodic | "Decided to migrate from REST to GraphQL" |
| API conventions | Semantic | "All endpoints return JSON with { data, pagination }" |
| Setup instructions | Procedural | "To set up local dev: clone, install, copy .env..." |
How types affect search
All memory types are searchable via the same hybrid search pipeline. The type doesn't affect search ranking — importance scores and semantic similarity do.
However, types are useful for filtering:
# Find all procedural memories about deployment
mx memories search --query "deployment" --topics "workflow"
Facts vs. semantic memories
MemNexus also has facts — structured subject-predicate-object triples. Facts and semantic memories serve similar purposes but differ in structure:
| Feature | Semantic memory | Fact |
|---|---|---|
| Structure | Free-text | Subject-predicate-object |
| Search | Semantic + keyword | Graph traversal |
| Best for | Rich context | Structured knowledge |
| Example | "Neo4j excels at relationship queries" | Neo4j → is_a → Graph Database |
Use semantic memories for nuanced knowledge. Use facts for structured, traversable relationships.