Angyal
Kapcsolat

Miért nem bízom az AI memóriájában, és hogyan oldottam meg saját hot/warm/cold rendszerrel

Néhány hónapja pontosan ugyanazt a kört futottam be minden nagyobb AI-modellel, amit valószínűleg te is ismersz. Beállítom a ChatGPT Memoryt, elmesélem neki, hogy milyen projekteken dolgozom, aztán…

Néhány hónapja pontosan ugyanazt a kört futottam be minden nagyobb AI-modellel, amit valószínűleg te is ismersz. Beállítom a ChatGPT Memoryt, elmesélem neki, hogy milyen projekteken dolgozom, aztán két hét múlva rákérdezek valamire, és vagy nem emlékszik rá, vagy éppen olyasmit von be a válaszba, amit soha nem akartam volna, hogy megjegyezzen. A Claude Projects és a Gemini Personalization is hasonló érzést hagyott bennem: az ígéret szép, hogy "tanul rólad az AI", a valóság viszont az, hogy fogalmam sincs, mi alapján dönt arról, mi számít fontosnak, és mikor dobja ki, amit fontosnak gondoltam.

A háttérben zajló fejlesztés is erről szólt idén: miközben a modellek kontextusablaka egyre nagyobb lesz, és a piac ezt kezeli a "memória" szinonimájaként, a kettő valójában két teljesen más dolog. A hosszú kontextusablak azt jelenti, hogy egy beszélgetésen belül sok mindenre tud hivatkozni a modell. A memória azt jelenti, hogy beszélgetések között is megmarad valami. Ez a különbség pont ott csúszik el, ahol a legtöbb felhasználó (és mellesleg a legtöbb terméklap is) összemossa a kettőt.

Amikor a saját AI-asszisztens rendszeremet (Dexter) elkezdtem építeni, ez volt az első pont, ahol tudtam, hogy nem bízhatom egy beépített, fekete dobozos memória-funkcióra. Nem azért, mert rossz szándékú lenne, hanem mert nem kontrollálom, mit tanul meg, mennyi ideig tartja meg, és hogyan súlyozza a régi meg az új infót egymáshoz képest. Egy magyar kisvállalkozónak, aki ügyféladatot, árajánlatot, szerződéses részleteket visz be egy ilyen rendszerbe, ez nem apróság, hanem adatvédelmi és üzleti kockázat.

Mi a baj a beépített AI memóriával

Három konkrét dolog zavart a piacon lévő megoldásokban.

Az első az átláthatatlanság. Amikor a ChatGPT vagy a Gemini eldönti, hogy egy mondatod "megjegyzésre érdemes", nem látom, milyen szabály alapján történt ez. Nincs tier, nincs prioritás, nincs magyarázat arra, hogy egy fél évvel ezelőtti beszélgetés-töredék miért bukkan fel most egy teljesen más kontextusban.

A második a szelektálás hiánya. A legtöbb rendszer mindent egy kalapba tesz: azt, hogy szereted a fekete kávét, ugyanabba a rétegbe, mint azt, hogy melyik bankszámlaszámra kell utalni egy visszatérő kifizetést. Nincs különbség aközött, ami triviális preferencia, és aközött, ami tényleg kritikus, visszakereshető tudás kellene, hogy legyen.

A harmadik pedig a megosztás kérdése. Ha több AI-asszisztensed van (nálam ez konkrét valóság: Dexter mellett külön szakterületi ágensek futnak), a beépített memória-funkciók jellemzően egy fiókhoz, egy modellhez vannak kötve. Nincs fogalmuk arról, hogy "ezt minden ágensemnek tudnia kell", szemben azzal, hogy "ez csak az egyik specialistának releváns".

A saját rendszerem: hot, warm, cold és egy megosztott réteg

Ahelyett, hogy egy homogén memória-tárolót építettem volna, négy réteget vezettem be, mindegyiket más élettartamra és célra szánva.

A hot réteg az, ami most aktuális: folyamatban lévő feladat, függő döntés, amire a következő pár napban vissza kell térni. Ez a réteg tudatosan efemer. Amikor egy feladat lezárul, a hot rétegből törlődik, és csak a napi naplóba kerül át, mint történelmi tény, nem mint aktív memória.

A warm réteg a stabil, de nem örök infó: konfigurációk, preferenciák, projektkontextus, ami ritkán változik, de amikor lekérdezésre kerül, releváns kell, hogy legyen. Ide megy például, hogy melyik szolgáltatót használom egy adott feladathoz, vagy hogy egy adott projektnél milyen technikai döntést hoztunk.

A cold réteg a hosszú távú archívum: lezárt tanulságok, korábbi döntések indoklása, olyan kontextus, amire ritkán, de fontos pillanatokban szükség lehet. Ez az a réteg, ahol a "miért csináltuk így" válaszok laknak, nem csak a "mit csináltunk".

A negyedik, és szerintem a legfontosabb tervezési döntés a shared réteg volt. Ez kifejezetten kereszt-ágens láthatóságra való: olyan tényekre, amik minden AI-specialistámnak kellenek, függetlenül attól, melyikkel épp beszélek. Egy konkrét példa: ha eldöntöm, hogy egy adott email-folyamatban mindig BCC-znem kell magamat, azt nem akarom külön megtanítani mind a hat ágensemnek. Egyszer mentődik be, sharedbe, és onnantól mindegyik tudja.

Ez a négyrétegű felosztás direkt válasz arra, amit a nagy szereplőknél hiányoltam: explicit szabály van arra, mi hova kerül, nem egy tanuló algoritmus dönti el helyettem.

SQLite plusz embedding plusz FTS: miért hibrid

A tárolás technikai oldalán tudatosan nem mentem full-text keresés vagy tisztán vektoros embedding-keresés egyik szélsőséges változata felé sem.

A tiszta full-text search (FTS) kiváló, ha pontosan tudod, milyen szót keresel, de béna, ha a kérdésed más szavakkal fogalmazódik meg, mint amivel a memória rögzítve lett. A tiszta embedding-alapú (szemantikus) keresés pont fordítva: jó a jelentésbeli hasonlóságban, de gyakran elcsúszik pontos neveknél, azonosítóknál, dátumoknál, ahol a szó szerinti egyezés számítana.

Ezért a rendszerem hibrid módban keres: SQLite-ban tárolt strukturált adat, mellette FTS-index a szó szerinti kereséshez, és embedding-alapú hasonlósági keresés a szemantikus találatokhoz. A kettő eredményét összefésülöm, és ez sokkal megbízhatóbb visszakeresést ad, mint bármelyik módszer önmagában. Amikor rákérdezek egy régi döntésre, és nem emlékszem pontosan, hogy fogalmaztam meg annak idején, a szemantikus rész megtalálja. Amikor egy konkrét projektnévre vagy azonosítóra van szükségem, az FTS rész pontosan hoz vissza.

Fontos, hogy ez a keresés nem fut le automatikusan minden egyes megszólalásnál. Ez volt az egyik legtudatosabb döntésem: a memória-visszahívásnak van saját trigger-logikája (korábbi témára hivatkozás, ismeretlen név vagy projekt említése, élő adatra vonatkozó kérdés), és ezen kívül nem terheli feleslegesen a beszélgetést. Egy AI, ami minden mondatnál teljes memóriát betölt, nem intelligensebb lesz, csak lassabb és zajosabb.

A legnehezebb kérdés: mit szabad egyáltalán megjegyezni

Ha az elmúlt hónapokban egy dolgot megtanultam, az az, hogy a memória-rendszer tervezésének legnehezebb része nem a tárolás technikája, hanem annak eldöntése, mi ne kerüljön be egyáltalán.

A csábítás nagy, hogy mindent elmentsünk, "hátha kell még". Ez pontosan az a hiba, amit a nagy AI-szolgáltatóknál látok: a memória feltöltődik triviális, kontextusfüggő részletekkel, amik két hét múlva már csak zajt jelentenek, és elnyomják a tényleg fontos infót a keresési találatok között.

Nálam szigorú szabály van arra, mi NEM kerülhet be memóriaként: olyasmi, ami a kódból vagy a git historyból direkt kiolvasható, konkrét beszélgetés-részlet érzelmi kontextussal, olyan state, ami csak az adott pillanatban releváns. Ehelyett a memória arra való, ami sehonnan máshonnan nem derül ki: miért hoztunk egy adott döntést, mi a felhasználó preferenciája, milyen visszajelzést adott korábban egy megközelítésre.

Ez a szűrés az, ami miatt a saját rendszerem hetek múlva is releváns marad, nem pedig egy egyre nehezebben kereshető szemétdomb. A "ne jegyezz meg mindent" ugyanolyan fontos tervezési döntés, mint az, hogy mit jegyezz meg.

Mit hozott ez a gyakorlatban

A legnagyobb különbség nem az, hogy "okosabb" lett az asszisztensem, hanem hogy kiszámíthatóbb. Tudom, hogy ha valamit warmbe mentettem, az stabil infóként fog visszajönni. Tudom, hogy a hot réteg automatikusan kiürül, amint egy feladat lezárul, szóval nem gyűlik fel benne a régi, irreleváns sürgősség. És tudom, hogy amikor egy döntést az egyik specialista ágensemnek megtanítok, a shared rétegen keresztül a többi is hozzáfér, anélkül, hogy külön kellene magyaráznom mindegyiknek.

Ez pont az, amit a piaci megoldásoktól nem kaptam meg: nem "jobb" memóriát, hanem olyan memóriát, aminek a szabályait én határozom meg, nem egy black-box algoritmus optimalizál valamilyen, számomra ismeretlen célfüggvény szerint.

Van egy tanulság ebben azok számára is, akik nem akarnak ilyen mélységig belemenni a saját AI-rendszerük építésébe: amikor a beépített AI memóriát használod, tedd fel magadnak a kérdést, hogy tudod-e, mi kerül bele, meddig marad ott, és ki fér hozzá. Ha a válasz "nem tudom", az nem feltétlenül baj egy privát, személyes használatnál, de üzleti kontextusban, ügyféladattal, szerződéses részletekkel megérné tudatosabban kezelni, mint egy alapértelmezett kapcsolót, amit bekapcsoltál, és nem nézett rá senki azóta.

← Vissza a blogra