Memory Graph
Fact-based graph. Sub-second latency.

Memories that remember each other

A living knowledge graph that automatically extracts facts, builds relationships, and forgets what's no longer relevant. No manual tagging, no cleanup, no stale data.

THE PROBLEM

[1/5]

Triplet graphs don't scale

Traditional knowledge graphs store everything as subject-predicate-object triplets. Connecting and traversing those paths is slow, inefficient, and expensive at scale.

Supermemory takes a fundamentally different approach. Learn how it works →

Triplet overhead

Traditional graphs decompose every fact into subject-predicate-object triplets. A single piece of knowledge becomes dozens of nodes and edges that must be traversed one hop at a time.

Slow at scale

Path traversal across triplets gets exponentially slower as the graph grows. Multi-hop queries that are fast at 1K nodes become unusable at 1M.

Expensive to run

Sparse triplet storage means more nodes, more edges, and more compute per query. Infrastructure costs scale with graph complexity, not with the amount of actual knowledge.

Traditional triplet graph
Sparse storage — one fact becomes many nodes and edges
Multi-hop traversal required for every query
Latency and cost grow with graph complexity
Supermemory fact-based graph
Dense storage — each fact is a self-contained node with full context
Sub-second query and traversal latency at any scale
Better quality — denser information per node means richer results

HOW IT WORKS

[2/5]

Add content. The graph builds itself.

Your Content Conversations, docs Extract Facts Atomic memories Build Relations Update · Extend · Derive Living Graph Always current
01

Extract

From a single conversation, Supermemory extracts multiple atomic facts — each one a standalone memory.

02

Connect

Each new fact is automatically linked to existing memories through Updates, Extends, or Derives relationships.

03

Evolve

The graph stays current automatically. Outdated facts are superseded, temporary memories expire, contradictions resolve.

RELATIONSHIPS

[3/5]

Three ways memories connect

Updates

Information changes

Memory 1 "Alex works at Google as a software engineer"
Memory 2 "Alex just started at Stripe as a PM"

Memory 2 updates Memory 1. Searches return the latest information while preserving history.

Extends

Information enriches

Memory 1 "Alex works at Stripe as a PM"
Memory 2 "Alex focuses on payments infrastructure and leads a team of 5"

Memory 2 extends Memory 1. Both remain valid — searches get richer context.

Derives

Information infers

Memory 1 "Alex is a PM at Stripe"
Memory 2 "Alex frequently discusses payment APIs and fraud detection"
Derived "Alex likely works on Stripe's core payments product"

Supermemory derives new insights from patterns — surfacing knowledge you didn't explicitly state.

MEMORY TYPES

[4/5]

Every memory has a type

Supermemory classifies memories automatically. Each type has different persistence and retrieval behavior.

Facts

"Alex is a PM at Stripe"

Persists until updated

Preferences

"Alex prefers morning meetings"

Strengthens with repetition

Episodes

"Met Alex for coffee Tuesday"

Decays unless significant

Automatic forgetting, built in

memory-lifecycle
Temporary facts expire automatically:
"I have an exam tomorrow"
↓ After the exam date passes → forgotten
"Meeting with Alex at 3pm today"
↓ After today → forgotten
Contradictions resolve automatically:
"Alex works at Google" → superseded by
"Alex works at Stripe" (isLatest: true)

Zero manual work

All of this is automatic. You don't:

Define relationships
Tag memory types
Clean up old memories
Resolve contradictions

Just add content and search

example.ts
await client.add({
content: "Alex mentioned he just started at Stripe"
});
const results = await client.search({
query: "where does Alex work?"
});
→ Stripe (latest), previously Google (historical)

GET STARTED

[5/5]