Konsolidering och glömska i minnessystem
Kunna implementera regler för när episoder blir fakta och när fakta ska glömmas.
Förkunskaper
Intuition
Episodiskt minne växer obegränsat. Utan konsolidering blir det en hög med händelser som ingen kan använda.
Konsolidering är jobbet som periodiskt läser nya episoder och uppdaterar en kort lista med fakta: «föredrar kodexempel», «arbetar mot LoRA-projektet till december», «kan linjär algebra».
Tre regler som avgör kvaliteten:
- Stöd: ett faktum kräver minst k episoder (eller ett uttryckligt påstående från användaren). Annars blir enstaka tillfälligheter till «sanningar».
- Konfidens: varje faktum bär en siffra som höjs vid nytt stöd och sjunker med tiden.
- Giltighet: fakta som är tidsbundna («pluggar inför tentan i maj») får ett utgångsdatum.
Glömska är inte en brist — det är det som håller listan användbar.
Kod
import time, math
HALVERINGSTID_DAGAR = {"preferens": 180, "kunskap": 365, "mal": 90, "tillfallig": 14}
MIN_KONFIDENS, MIN_STOD = 0.3, 2
def konsolidera(fakta: list[dict], nya_episoder: list[dict], llm) -> list[dict]:
kandidater = llm.extrahera_fakta(nya_episoder) # [{text, typ, kallor}]
index = {f["text"].lower(): f for f in fakta}
nu = time.time()
for k in kandidater:
nyckel = k["text"].lower()
if nyckel in index: # förstärk befintligt
f = index[nyckel]
f["kallor"] = sorted(set(f["kallor"]) | set(k["kallor"]))
f["konfidens"] = min(1.0, f["konfidens"] + 0.25)
f["senast_stodd"] = nu
elif len(k["kallor"]) >= MIN_STOD: # nytt faktum kräver stöd
index[nyckel] = {**k, "konfidens": 0.5, "senast_stodd": nu}
return glom(list(index.values()), nu)
def glom(fakta, nu):
kvar = []
for f in fakta:
alder_d = (nu - f["senast_stodd"]) / 86400
ht = HALVERINGSTID_DAGAR.get(f.get("typ", "preferens"), 180)
f["konfidens"] *= 0.5 ** (alder_d / ht)
if f["konfidens"] >= MIN_KONFIDENS:
kvar.append(f)
return sorted(kvar, key=lambda f: -f["konfidens"])[:50] # hårt tak
Mät faktalistans precision: ta ett stickprov på 30 fakta och låt en människa (eller användaren själv) markera stämmer / stämmer inte / inaktuellt. Under 90 % precision gör minnet mer skada än nytta — då ska trösklarna höjas.
Behärskning innebär
- Implementerar regler för när episoder blir fakta
- Inför glömska med konfidens och tid
- Mäter faktalistans precision
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — MemGPT: Towards LLMs as Operating Systems — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Generative Agents: Interactive Simulacra of Human Behavior — arXiv (öppen åtkomst; licens per artikel)