Core Concepts
Understanding the Memory Platform requires a shift from thinking about "chat history" to thinking about "knowledge objects."
The Four Pillarsβ
- Memories (Blocks): Discrete, atomic pieces of knowledge (facts, preferences, insights).
- Subjects: The entities (Users, Projects, Organizations) that memories are linked to.
- Knowledge Graph: The web of relationships between subjects and memories.
- Retrieval: The dual-engine process (Vector + Graph) that finds the right context for the AI.
π§ The Memory Blockβ
A Memory Block is the fundamental unit of storage. It contains:
- Kind: The classification (e.g.,
fact,preference,insight,summary). - Content: Both natural language text (for LLMs) and structured JSON (for logic).
- Scores:
- Salience: How important or "loud" this memory is.
- Stability: How likely this memory is to change (e.g., birthdays vs. current project).
- Confidence: How certain the extractor was when creating it.
- Tags: Concepts or topics (e.g.,
#budget,#ux,#urgent) used for high-level filtering.
π€ Subjects & Dimensionsβ
Every memory is about something.
- Subjects have a
typeand anid. - Primary Dimensions are the top-level categories your platform defines (e.g., "Tenants", "Cases").
- Selecting a dimension scopes the entire platform to knowledge related to that specific axis.
πΈοΈ Graph vs. Vectorβ
The platform uses a Dual-Layer Retrieval strategy:
| Vector Search (Semantic) | Graph Traversal (Relational) |
|---|---|
| Finds things that sound like your query. | Finds things that are connected to your query. |
| "Show me preferences about travel." | "Show me everyone who works at Company X." |
| Handled by Qdrant. | Handled by JanusGraph. |
π Memory Lifecycleβ
- Ingestion: Data arrives from chat, documents, or tools.
- Extraction: The Curator Worker distills raw data into structured Memory Blocks.
- Retrieval: The Engine Service finds relevant blocks for an AI response.
- Decay: Over time, less important memories lose salience if not accessed.
- Supersession: Newer, more accurate memories replace older ones via a
SUPERSEDESlink.