Hoppa till innehållet
AI-grafen
F· AI engineeringminnessystem· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

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:

  1. 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».
  2. Konfidens: varje faktum bär en siffra som höjs vid nytt stöd och sjunker med tiden.
  3. 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

Alla källor och licenser