# Memory Systems

Architectures for persistent context beyond the window.

## Memory Layer Architecture

| Layer              | Scope          | Persistence | Use Case         |
| ------------------ | -------------- | ----------- | ---------------- |
| L1: Working        | Current window | None        | Active reasoning |
| L2: Short-Term     | Session        | Session     | Task continuity  |
| L3: Long-Term      | Cross-session  | Persistent  | User preferences |
| L4: Entity         | Per-entity     | Persistent  | Consistency      |
| L5: Temporal Graph | Time-aware     | Persistent  | Evolving facts   |

## Benchmark Performance (DMR Accuracy)

| System     | Accuracy | Approach                  |
| ---------- | -------- | ------------------------- |
| Zep        | 94.8%    | Temporal knowledge graphs |
| MemGPT     | 93.4%    | Hierarchical memory       |
| GraphRAG   | 75-85%   | Knowledge graphs          |
| Vector RAG | 60-70%   | Embedding similarity      |

## Vector Store with Metadata

```python
class MetadataVectorStore:
    def add(self, text, embedding, metadata):
        doc = {
            "text": text, "embedding": embedding,
            "entities": metadata.get("entities", []),
            "timestamp": metadata.get("timestamp")
        }
        self.index_by_entity(doc)

    def search_by_entity(self, entity, k=5):
        return self.entity_index.get(entity, [])[:k]
```

## Temporal Knowledge Graph

```python
class TemporalKnowledgeGraph:
    def add_fact(self, subject, predicate, obj, valid_from, valid_to=None):
        self.facts.append({
            "triple": (subject, predicate, obj),
            "valid_from": valid_from,
            "valid_to": valid_to or "current"
        })

    def query_at_time(self, subject, predicate, timestamp):
        for fact in self.facts:
            if (fact["triple"][0] == subject and
                fact["valid_from"] <= timestamp <= fact["valid_to"]):
                return fact["triple"][2]
```

## Memory Retrieval Patterns

| Pattern      | Query             | Use Case       |
| ------------ | ----------------- | -------------- |
| Semantic     | "Similar to X"    | General recall |
| Entity-based | "About user John" | Consistency    |
| Temporal     | "Valid on date"   | Evolving facts |
| Hybrid       | Combine above     | Production     |

## File-System-as-Memory

```
memory/
├── sessions/{id}/summary.md
├── entities/{id}.json
└── facts/{timestamp}_{id}.json
```

## Guidelines

1. Start with file-system-as-memory (simplest)
2. Add vector search for scale
3. Use entity indexing for consistency
4. Add temporal awareness for evolving facts
5. Implement consolidation for health
6. Measure retrieval accuracy

## Related

- [Context Fundamentals](./context-fundamentals.md)
- [Multi-Agent Patterns](./multi-agent-patterns.md)
