What exactly is a “memory”?
A memory is a typed, versioned statement linked to an entity.type
:fact | event | document | note | profile | chunk
entity_id
(optional): the focal entity this memory belongs to
subject
,predicate
,object_text | object_num | object_entity
,object_type
,unit
,valid_from
,valid_to
,confidence
,keys[]
actor
,verb
,target
,timestamp
namespace
,tags[]
,metadata
,status
(active | superseded | disputed
),sensitivity
(auto | pii
),provenance
,created_at
,updated_at
memory_id
: unique id (UUID/ULID)
Indexing & retrieval
Text and structured fields are embedded and indexed with Postgres + pgvector (HNSW) and full‑text search. Retrieval blends:- semantic similarity, keyword/BM25, recency, predicate/entity priors, confidence, and optional graph proximity.
/v0/context/assemble
packs the highest‑value items under a token budget, emits a summary, and can extract+ingest new facts from the current turn.
Supersession
Usekeys[]
(for example, ["{subject}|{predicate}"]
) to ensure only one active fact per key. New writes supersede prior ones:
- previous rows are marked
status: superseded
valid_to
is set to now
status=active
and your namespace
/entity_id
.