← Back to Blog
Research

Memory Decay, Conflict Detection, and Temporal Knowledge Graphs

Why we modeled Knol's memory system after human cognition — with decay scoring, conflict resolution, and bi-temporal knowledge graphs.

The Forgetting Curve is a Feature

Human memory isn't permanent. Old facts fade. This isn't a bug — it's how we stay grounded in the present while maintaining historical context. Knol implements memory decay.

Each fact stored in semantic memory has an age-based decay score. Recent information is weighted heavily. Information older than 90 days gets exponentially lower weight. This prevents ancient preferences from drowning out current reality.

decay_score(fact) = 1 / (1 + 0.05 * days_old)

Day 1: score = 1.0 (full weight) Day 30: score = 0.60 (60% weight) Day 90: score = 0.17 (17% weight) ```

Applications can customize decay rates. Some facts (like "customer is in Japan") decay slowly. Others (like "preferred payment method") decay quickly.

Conflict Detection and Resolution

People change their minds. A user says "I prefer red" then six months later says "I prefer blue." Which is true? Both are, at different times.

Knol detects conflicts when new facts contradict stored facts with high confidence scores. Instead of overwriting, it marks both as valid with temporal validity windows.

Fact A: "Prefers red" (confidence: 0.92, valid: 2025-01-01 to 2025-07-01)
Fact B: "Prefers blue" (confidence: 0.88, valid: 2025-07-01 to present)

The retrieval engine understands temporal context. If the current date is in the blue preference window, blue gets weight. If you're querying historical context, red is used instead.

Bi-Temporal Knowledge Graphs

Facts in Knol's knowledge graph have two timestamps:

**Valid Time**: When the fact was true in the real world (user moved to NYC in 2023) **Transaction Time**: When we learned or updated the fact (we extracted this yesterday)

This distinction matters. A user might tell you today about a move that happened three months ago. Transaction time is when you learned it. Valid time is when it actually happened.

-- A graph fact with bi-temporal semantics
INSERT INTO graph_facts (subject, predicate, object, valid_from, valid_to, created_at, updated_at)
VALUES ('user_123', 'worksAt', 'company_456', '2024-01-15', NULL, '2026-02-18', '2026-02-18');

Decay in Graphs

Decay isn't just for isolated facts. In the knowledge graph, edge weight decays over time. A relationship that was strong five years ago matters less now, unless it's been reinforced recently.

This prevents the graph from becoming cluttered with stale relationships while preserving the full history if needed.

Practical Applications

These techniques solve real problems:

- **Customer churn prevention**: Detect when preferences change significantly (decay scores show shifting patterns) - **Multi-agent systems**: Agents can query "what was user's position 6 months ago?" vs "current preference" - **Audit compliance**: Full temporal history is preserved; decay is for inference only - **Accuracy improvement**: Conflict detection flags contradictions for human review

The result is a memory system that's both grounded in present reality and respectful of history. It works the way human memory actually works.