A tokenfalon túl: miért romlik az AI-társak kontextusa?
Minden AI-társ élesen kezd, aztán egyre homályosabbá válik. Nem arról van szó, hogy a modell elveszti az érdeklődését — egyszerűen kicsúszik a beszélgetés abból az ablakból, amelyet még lát.
A memória illúziója
Az első óra egy AI-társsal zavarba ejtően hiteles. Felveszi a fonalat, emlékszik a testvéred nevére, visszautal a két jelenettel korábbi vitátokra. Olyan érzés, mintha ismerne téged.
Aztán úgy a harmincadik üzenet környékén elkezd sodródni. Olyasmire kérdez rá, amire már válaszoltál. Egy szereplő, aki elhagyta a szobát, hirtelen megszólal. A tegnapi seb magától begyógyul, anélkül hogy bárki ellátta volna.
Semmi sem romlott el. Egyszerűen elérted annak a határát, amit a modell még látni képes.
A nyelvi modellnek nincs hívások közötti memóriája. Minden forduló új kérés, amely magával viszi az egész beszélgetést, ennek pedig méretkorlátja van — ez a kontextusablak. Amikor a beszélgetés túlnő rajta, valaminek ki kell esnie, és mindig a legrégebbi anyag távozik. Az ablak előrecsúszik. Az első jeleneteid lepotyognak a hátulján, és a modell szemszögéből úgy tűnik, mintha soha meg sem történtek volna.
Így néz ki valójában a kontextusromlás
A hiba ritkán látványos. A részletek lassú elvesztéséről van szó, ezért olyan könnyű azt mondani a modellre, hogy „lusta”.
- Összemosódnak a nevek. Két mellékszereplő eggyé olvad, vagy egy már használt nevet kap valaki új.
- Elpárolognak az ígéretek. A szereplő, aki megesküdött, hogy találkozik veled a kikötőben, fogalma sincs, miről beszélsz.
- Lenullázódik a tét. Az adósság, a sérülés, a titok, amelyet valaki őriz — a történet csendben visszalazul a semleges állapotba.
- Megfordulnak a rögzített tények. A szereplő, aki nem tud úszni, elmegy úszni.
Külön-külön mindegyikre csak legyintene az ember. Együtt azonban ezek jelentik a különbséget egy történet és kellemes, egymástól elszigetelt jelenetek sora között — és ezért fullad ki olyan gyakran a hosszú szerepjáték ahelyett, hogy véget érne.
Három módszer egy beszélgetés megtartására
Nagy vonalakban három megközelítés terjedt el, és mindegyik máshol vall kudarcot.
| Megközelítés | Hogyan őrzi meg a múltat? | Hol törik el? |
|---|---|---|
| Csúszó ablak | Az utolsó N üzenet szó szerint | Minden régebbi egyszerűen eltűnik. Tökéletes felidézés az ablakon belül, teljes amnézia azon kívül. |
| Nagyon nagy ablak | Tízezres vagy százezres nagyságrendű tokenmennyiség, szó szerint | A költség és a késleltetés minden fordulóval nő, a figyelem pedig elvékonyodik egy hosszú kontextus közepén — a modell láthat egy részletet, mégsem tulajdonít neki kellő súlyt. |
| Vektoros visszakeresés (RAG) | A korábbi üzenetek beágyazása és hasonlóság szerinti keresése | Olyan szöveget ad vissza, amely relevánsnak hangzik. Nem tudja, mi érvényes jelenleg, ezért egy tény és annak későbbi helyesbítése egyformán jó találatnak tűnik. |
| Strukturált történetállapot | A tények, szereplők, kapcsolatok és események menet közbeni rögzítése | Fordulónként egy külön lépésbe kerül a karbantartása, és csak annyira jó, amennyire az adatkinyerő hajlandó feljegyezni. |
A harmadik napon elfelejtette a nevemet. Nem a szereplő — a történet.
Egy zárt bétateszt játékosa
Miért nem a nagyobb ablak a megoldás?
Az elsőként kínálkozó megoldás az ablak óriásira növelése. Ez egyben a legdrágább megoldás is, és nem azt nyújtja, amiben sokan reménykednek.
Először is ott az ár és a sebesség. A teljes kontextust minden egyes fordulóban újra el kell küldeni és újra kell olvasni. Egy beszélgetés, amely százezer tokennyi előzményt cipel, minden új üzenettel ismét kifizeti ezeknek a tokeneknek az árát, és minden válaszra tovább kell várni. Egy olyan történetben, ahol minden forduló számít, ezt megérzed.
Másodszor — és ez makacsabb probléma — a modell nem egyenletesen figyel egy nagyon hosszú kontextus minden részére. Az elején és a végén lévő anyag jobban célba ér, mint ami középen van. Így az a döntő mondat, amelyet a szereplőd negyven jelenettel korábban ejtett el, technikailag jelen lehet, a gyakorlatban mégis láthatatlanná válik.
A nagy ablak időt vesz. A probléma alakján azonban nem változtat, mert nem a kapacitás a gond — hanem az, hogy semmi sem dönti el, mi számít.
Mi mást csinálunk?
A projectDigo nem a teljes leiratot próbálja magával cipelni. Nyilvántartást vezet.
Minden forduló után egy külön feldolgozási lépés elolvassa, mi történt, és rögzíti a változásokat: ki volt jelen, mi vált biztossá, mit tud vagy akar most valaki, mi sérült meg, mennyi az idő. Ezek a bejegyzések csak hozzáfűzhetők — egy későbbi tény nem törli a korábbit, hanem felülírja annak érvényességét, így egy kapcsolat története követhető marad ahelyett, hogy egyszerűen felülíródna.
Mielőtt megszületik a következő forduló, a nyilvántartásból újra összeáll egy rövid eligazítás: mennyi az idő, hol vagyunk, ki van a szobában, mi maradt rendezetlen, minek kell továbbra is igaznak maradnia. A narrátormodell a történet jelenlegi állapotát tényekként kapja meg, nem pedig arra kérjük, hogy egy olyan leiratból következtesse ki, amelyből ezek a részletek már kikoptak.
Így a folytonosság többé nem attól függ, milyen hosszú a beszélgetés. A négyszázadik jelenet tudja, mit rögzített a harmadik, mert a harmadik le lett írva.
Az őszinte kompromisszum
Ennek ára van. Fordulónként egy további modellhívást igényel, és csak azt tudja megjegyezni, amit az adatkinyerési lépés érdemesnek tartott rögzíteni — ha az adatkinyerő elsiklik egy részlet fölött, az éppúgy elveszik, mintha egy csúszó ablak ejtette volna ki.
Amit cserébe ad, az egy felhalmozódó történet. Tíz óra elteltével a világnak már van története, amelyre rá tudsz mutatni, a szereplők pedig úgy viselkednek, mint akik valóban ott voltak mindennek a közepén.
Gyakori kérdések
Miért nem használunk egyszerűen egy egymillió tokenes kontextusablakkal rendelkező modellt?
Mert minden fordulóban a teljes kontextusért fizetsz — pénzben és késleltetésben egyaránt —, és mert a figyelem egy nagyon hosszú kontextus közepén elvékonyodik: egy részlet jelen lehet, mégis gyakorlatilag figyelmen kívül maradhat. A nagy ablak csak elodázza a kontextusromlást, nem szünteti meg.
Ez ugyanaz, mint a RAG?
Kapcsolódó, de nem azonos megoldás. A visszakeresés olyan részleteket talál, amelyek hasonlítanak a kérdésre. Ez hasznos, ha valamire rá akarsz keresni, de megbízhatatlan annak megállapításában, mi érvényes jelenleg: egy tény és annak későbbi helyesbítése egyaránt jó találatnak tűnik. A történetnyilvántartás állapotot tárol — ez most igaz, az pedig felülírta ezt —, nem pedig hasonlóan hangzó szövegeket.
Meddig tud ténylegesen visszaemlékezni egy szereplő?
Az ülés kezdetéig. Nem minden üzenet szó szerinti megfogalmazása marad meg, hanem a rögzített állapot — tények, kapcsolatok, események, sérülések és ígéretek —, ezért az emlékezet nem romlik a munkamenet hosszával.
Előfordulhat, hogy a modell ellentmond a saját emlékeinek?
Igen, és éppen ezért vannak a generálás utáni ellenőrzések: ha egy válasz megszeg egy rögzített tényt, a rendszer elkapja és újraíratja, mielőtt megjelenne. Egyetlen rendszer sem szűr ki mindent, de a hiba ritka korrekcióvá válik az állandó sodródás helyett.