Hinsides tokenmuren: derfor får AI-ledsagere kontekstforfald
De fleste AI-ledsagere begynder skarpt og bliver vage. Det er ikke modellen, der mister interessen — det er samtalen, der glider ud af det vindue, den kan se.
Hukommelsens illusion
Den første time med en typisk AI-ledsager er næsten uhyggelig. Den griber tråden, husker din søsters navn og henviser til skænderiet, I havde for to scener siden. Det føles, som om den virkelig kender dig.
Så, et sted omkring den tredivte besked, begynder den at drive. Den spørger om noget, du allerede har svaret på. En person, der forlod rummet, taler pludselig igen. Såret fra i går er helet, uden at nogen har behandlet det.
Der er ikke noget, der er gået i stykker. Du er ganske enkelt nået til kanten af det, modellen kan se.
En sprogmodel har ingen hukommelse mellem kald. Hver tur er en ny forespørgsel, der tager hele samtalen med sig, og den forespørgsel har en størrelsesgrænse — kontekstvinduet. Når du overskrider den, bliver det ældste materiale droppet. Dine første scener falder ud bagtil, og set fra modellens perspektiv er de aldrig sket.
Sådan ser kontekstforfald faktisk ud
I de fleste ledsagerapps er fejlen sjældent dramatisk. Det er et langsomt tab af detaljer, og derfor er det så let at give modellen skylden for at være "doven".
- Navne flyder sammen. To bipersoner smelter sammen til én, eller et navn bliver genbrugt til en ny person.
- Løfter fordamper. En person, der svor at møde dig ved havnen, aner ikke, hvad du taler om.
- Indsatsen nulstilles. Gælden, skaden, hemmeligheden, nogen går og gemmer på — plottet slår stille og roligt tilbage til neutral.
- Fastslåede fakta vender på hovedet. En person, der ikke kan svømme, tager ud at svømme.
Hver for sig kan man trække på skuldrene over dem. Tilsammen er de forskellen på en historie og en række hyggelige, usammenhængende scener — og det er derfor, langvarigt rollespil så ofte fuser ud i stedet for at få en afslutning.
Fire måder at holde fast i fortiden på
Fire tilgange er i brug, og de bryder sammen forskellige steder.
| Tilgang | Sådan holder den fast i fortiden | Her bryder den sammen |
|---|---|---|
| Glidevindue | De seneste N beskeder, ordret | Alt ældre er ganske enkelt væk. Perfekt genkaldelse inden for vinduet, totalt hukommelsestab udenfor. |
| Meget stort vindue | Ti- eller hundredtusindvis af tokens, ordret | Pris og svartid vokser for hver tur, og opmærksomheden bliver tyndere midt i en lang kontekst — modellen kan godt se en detalje uden at tillægge den vægt. |
| Vektorhentning (RAG) | Tidligere beskeder indlejres og søges frem efter lighed | Returnerer tekst, der lyder relevant. Den har ingen forståelse for, hvad der gælder nu, så en kendsgerning og dens senere rettelse ser lige gode ud. |
| Struktureret historietilstand | Fakta, personer, relationer og begivenheder skrives ned, efterhånden som de sker | Kræver et reelt vedligeholdelsesarbejde, og den er kun så god som det, der bliver skrevet ned — det, der ikke registreres, går tabt. |
Jeg ville have en verden, der skriver tingene ned. Når hun husker jeres tredje aften sammen, er det, fordi hun faktisk var der.
Grundlægger, projectDigo
Hvorfor et større vindue ikke er svaret
Den oplagte løsning er at gøre vinduet enormt. Det er også den dyreste — og det løser ikke det, folk håber på.
Hele konteksten sendes og læses igen ved hver eneste tur, så en samtale med hundrede tusind tokens historik betaler for dem igen ved hver besked — og venter længere på hvert svar. Værre endnu: En model, der læser en meget lang kontekst, læser den ikke med samme vægt overalt. Det, din karakter sagde for fyrre scener siden, kan være teknisk til stede og i praksis usynligt.
Et stort vindue køber tid. Det ændrer ikke problemets grundform, for problemet er ikke kapacitet — det er, at intet afgør, hvad der betyder noget.
Hvad vi gør i stedet
projectDigo fører et regnskab over historien.
Det, der betyder noget — hvem der findes, hvad der er sket mellem dem, og hvad der er sandt lige nu — gemmes som historiens egen tilstand i stedet for at være overladt til en samtale, der før eller siden ruller ud af syne. Senere scener skrives på baggrund af denne tilstand. Scene fire hundrede ved, hvad scene tre fastslog, fordi scene tre blev registreret og ikke bare sagt.
Hvordan regnskabet bygges, holdes opdateret og bringes i spil igen, er den del, vi har brugt længst tid på — og den del, vi holder for os selv. Resultatet er enkelt nok: Kontinuitet, der holder, uanset hvor længe du spiller.
Den ærlige afvejning
Det er ikke gratis. Det kræver mere arbejde pr. scene at føre et regnskab end at videresende en samtaleudskrift, og en historie kan kun huske det, der var værd at registrere — alt, der bliver overset, går tabt lige så sikkert, som et glidevindue ville have mistet det.
Til gengæld får du en historie, der vokser lag for lag. Efter ti timer har verden en fortid, du kan pege på, og personerne opfører sig som mennesker, der faktisk var til stede.
Spørgsmål, vi ofte får
Hvorfor ikke bare bruge en model med et kontekstvindue på én million tokens?
Fordi du betaler for hele konteksten ved hver tur — både i penge og svartid — og fordi opmærksomheden bliver tyndere midt i en meget lang kontekst. En detalje kan være til stede og stadig reelt blive ignoreret. Et stort vindue udskyder kontekstforfaldet i stedet for at fjerne det.
Er det det samme som RAG?
Det hænger sammen, men det er ikke det samme. Informationssøgning finder passager, der ligner forespørgslen, hvilket er nyttigt, når man skal slå noget op, men upålideligt, når man skal vide, hvad der gælder nu: En kendsgerning og dens senere rettelse ligner begge gode træffere. Et historieregnskab gemmer tilstanden — hvad der er sandt nu — i stedet for tekst, der blot lyder lignende.
Hvor langt tilbage kan en person faktisk huske?
I projectDigo helt tilbage til sessionens begyndelse. Det, der bevares, er historiens tilstand snarere end formuleringen af hver besked, så hukommelsen forringes ikke, efterhånden som sessionen bliver længere.
Modsiger modellen nogensinde sin egen hukommelse?
Det kan den — og derfor tjekker projectDigo konsistensen, før en scene når frem til dig. Det typiske resultat er en rettelse, du aldrig ser. Intet fanger alt, men fejltypen bliver et enkeltstående svipsere i stedet for en konstant afdrift.