Útmutatók

AI-ügynökmemória: négy típus és hogyan tárolja őket

Az AI-ügynökmemória több egy hosszú kontextusablaknál. Az ügynök által igényelt négy típus, hogyan tárolja őket, és mi nem való beléjük, HotKV-parancsokkal.

Az AI-ügynökmemória egy ügynökként ábrázolva, körülötte négy memóriatárral: beszélgetési, szemantikus, munka- és epizodikus.

Az AI-ügynökmemória az, ami lehetővé teszi, hogy egy ügynök átvigyen valamit egyik lépésből, vagy egyik munkamenetből a következőbe. Egy nyelvi modell önmagában semmire nem emlékszik két hívás között. Amire emlékezni látszik, azt a kódja írta vissza a promptba. Az dönti el, hogy az ügynök mire emlékezhet, milyen gyorsan és fordulónként mekkora költséggel, hogyan tárolja és keresi vissza ezt az anyagot.

Röviden. Az ügynököknek négy fajta memóriára van szükségük: egy rövid beszélgetési ablakra, jelentés alapján megtalált hosszú távú tényekre, egy vázlatfüzetre a folyamatban lévő feladathoz és egy naplóra arról, mi történt. Mindegyiknek más az alakja, élettartama és keresése, ezért egyetlen memóriatábla egyikhez sem illik jól. A HotKV mind a négyet egyetlen memóriabeli motorban tárolja az AMEM.* parancsokkal. A HotKV gyorsítótárazását és vektorkeresését benchmarkoltuk, az ügynökmemóriát nem, ezért ez a cikk a kialakítást magyarázza, és nem állít gyorsulást.

Miért nem memória a kontextusablak

A kontextusablak az a szöveg, amelyet minden kéréssel elküld. Mérethatára van, a benne lévő mindenért minden fordulóban bemeneti tokeneket fizet, és a munkamenet végén eltűnik. Keresni sem lehet benne. Ha egy ügynöknek egyetlen tényre van szüksége három héttel ezelőttről, a teljes előzmény beillesztése nem válasz.

A memória az a réteg, amely eldönti, mi kerül legközelebb az ablakba. Megtartja a legutóbbi fordulókat, és megtalálja azt a néhány régebbi tényt, amely számít. Őrzi a jelenlegi feladat állapotát, és rögzíti, mit tett az ügynök. A kutatók hasonló fogalmakkal írják le az ügynököket. A Sumers, Yao, Narasimhan és Griffiths által írt CoALA-keretrendszer elválasztja a munkamemóriát a hosszú távú epizodikus, szemantikus és procedurális memóriától.

Az AI-ügynökmemória négy típusa

A HotKV négy tárolója ugyanennek a területnek a nagy részét lefedi, ahhoz igazítva, amit egy alkalmazásnak fel kell építenie. A procedurális memória, az ügynök kódjában és promptjaiban rejlő tudás, általában a tárolójában vagy egy prompt-nyilvántartásban él, és nem önálló tároló.

Beszélgetési memória

Ez egy munkamenet rövid távú átirata. Az üzeneteknek szerepük van (system, user, assistant vagy tool). Korlátos csúszóablakban ülnek, így a legrégebbi fordulók kiesnek, ha a korlátot elérik. Egyetlen kérdésre válaszol. Mi hangzott el nemrég? A HotKV-ban ez az AMEM.CONV.CREATE, az AMEM.CONV.APPEND és az AMEM.CONV.WINDOW.

Szemantikus memória

A szemantikus memória hosszú távú tudás, embedding-vektorral rendelkező tényekként tárolva. Az ügynök jelentés alapján idézi fel őket, nem kulcs szerint. HNSW-vektorindex áll mögötte, ugyanaz a fajta, amely a vektorkeresést működteti. Az AMEM.SEM.STORE elment egy tényt, az AMEM.SEM.RECALL pedig a legjobb találatokat adja vissza hasonlósági ponttal. Ide tartoznak a dokumentumok, a felhasználói beállítások és a megtanult korrekciók.

Munkamemória

A munkamemória a folyamatban lévő feladat vázlatfüzete, egy munkamenetre korlátozott, lapos kulcs-érték készlet. A jelenlegi lépést, a kezelt jegyet vagy egy részeredményt tartalmazza. A feladat végén el kell tűnnie. Az AMEM.WORK.SET éppen ezért fogad el élettartamot (TTL).

Epizodikus memória

Az epizodikus memória időbélyeges események hozzáfűzéses naplója, például egy megtett művelet, egy megfigyelés vagy egy meghozott döntés. Lehetővé teszi, hogy egy ügynök, vagy az őt felülvizsgáló személy megkérdezze, mi történt és mikor. Az AMEM.EPIS.LOG ír egy eseményt, az AMEM.EPIS.QUERY pedig típus és időtartomány szerint olvassa vissza őket.

AI-ügynökmemória a gyakorlatban

A gyakorlatban két dolog számít. Hogyan ír a memóriába, és mit olvas vissza minden fordulóban.

A memória tárolása parancsokkal

Íme egy támogatási ügynök, amely egy beszélgetést kezel. A kitalált szabályzatszöveg és a háromszámos vektorok csak szemléltetésre szolgálnak. Egy valódi embedding modell 768 vagy 1536 számból álló vektorokat állít elő, és a névteret ezzel a dimenzióval hozza létre.

AMEM.CONV.CREATE session-42 WINDOW 50 TTL 86400
AMEM.CONV.APPEND session-42 user "My invoice shows the wrong VAT number."
AMEM.WORK.SET session-42 ticket "INV-1932" TTL 3600
AMEM.EPIS.LOG agent-support action "Looked up invoice INV-1932"

AMEM.SEM.CREATE support-kb 3
AMEM.SEM.STORE support-kb vat-policy "VAT details can be corrected within 30 days." 0.1 0.2 0.3
AMEM.SEM.RECALL support-kb 3 0.1 0.2 0.3
AMEM.CONV.WINDOW session-42 10

Minden fordulóban az ügynök elolvassa a legutóbbi ablakot, és felidézi a kérdéshez illő néhány tényt. Megnézi a munkajegyzetét, és ezekből a darabokból építi fel a promptot. Miután cselekedett, naplózza az eseményt. Ebben a ciklusban semmihez nincs szükség a teljes előzményre.

A memória olvasása minden fordulóban

Az ügynökmemória egy fordulója. A prompt előtt az ügynök elolvassa a beszélgetési ablakot, a felidézett tényeket és egy munkajegyzetet. A válasz után hozzáfűzi a fordulót, naplóz egy eseményt, és frissíti a jegyzetet.
Az ügynökmemória egy fordulója. A prompt előtt olvas néhány dolgot, a válasz után visszaír.

A memória tárolása a könnyebb fele. A tudás abban rejlik, mit olvas vissza, mert minden, amit beolvas, bekerül a promptba, és bemeneti tokeneket fogyaszt. Egy ésszerű ciklus néhány dolgot olvas rögzített sorrendben. Először a legutóbbi fordulók jönnek, aztán a kérdéshez illő néhány tény, végül a feladat állapota. Itt van a hivatalos Python-klienssel, a saját embedding függvényével és prompt-sablonjával.

import hotkv

r = hotkv.from_url("hotkv://localhost:6379")
MIN_SIMILARITY = 0.8          # hangolja a saját adatain

def start_session(session: str) -> None:
    r.amem_conv_create(session, window=50, ttl=86400)   # egyszer hozza létre, az első hozzáfűzés előtt

def build_context(session: str, question: str) -> str:
    r.amem_conv_append(session, "user", question)
    turns = r.amem_conv_window(session, 10)
    facts = r.amem_sem_recall("support-kb", 3, embed(question))
    facts = [f for f in facts if f["similarity"] >= MIN_SIMILARITY]
    ticket = r.amem_work_get(session, "ticket")
    return render(turns, facts, ticket)      # az Ön prompt-sablonja

def finish_turn(session: str, agent: str, reply: str) -> None:
    r.amem_conv_append(session, "assistant", reply)
    r.amem_epis_log(agent, "action", "Answered a billing question")
    r.amem_work_set(session, "last_step", "answered")

A hasonlósági küszöböt Ön hangolja. Az az érték, amely egy embedding modellhez és egy tényhalmazhoz illik, egy másikhoz rossz lesz, ezért ellenőrizze a recallt olyan kérdéseken, amelyek válaszát ismeri. A gyenge találatok elhagyása fontosabb, mint amilyennek látszik, mert egy rossz tény a promptban rosszabb, mint egy sem.

A prompt stabil részeit, például a rendszerutasításokat, a szolgáltatói oldali prompt-gyorsítótárazás is olcsóbbá teszi. Tegye a beolvasott memóriát a végére, a stabil szöveg után, hogy megváltozása ne érvénytelenítse ezt a gyorsítótárat.

Összefoglalók az egyre hosszabb ablakok helyett

Az ablak teljesen eldobja a régi fordulókat. Ez csevegéshez jó, hosszú feladathoz rossz, ahol a 3. forduló még a 300.-nál is számíthat. A szokásos válasz a gördülő összefoglaló. A beszélgetés minden szakasza után az ügynök, vagy egy olcsóbb modell leírja, mit tanultak, és az összefoglaló a régi fordulók helyére lép a promptban.

A HotKV ügynökönként egy összefoglalót tart az AMEM.SUMMARY.SET, az AMEM.SUMMARY.APPEND és az AMEM.SUMMARY.GET segítségével. A SET lecseréli a szöveget, az APPEND egy sort fűz hozzá. Minden frissítés növeli a verziószámot, így egy másik összetevő olcsón megállapíthatja, hogy az összefoglaló megváltozott, és mikor.

Az összefoglaló veszteséges, és egy összefoglaló összefoglalása minden alkalommal többet veszít. A pontos értékeket, például azonosítókat, összegeket és dátumokat tartsa ki a próza szövegéből, és tárolja a munkamemóriában vagy szemantikus tényekként, ahol megmaradnak. Az összefoglalót a munka alakjára használja, például beállításokra, meghozott döntésekre és arra, ami hátra van.

Tervezési szabályok és megőrzés

A memória korlátlanul nő, ha nem állítja meg, ezért az első írás előtt állítsa be a korlátokat.

Szabályok, amelyek hasznosan tartják a memóriát

  • Korlátozzon mindent. Állítson be WINDOW értéket a beszélgetéseken, és TTL értéket a munkameneteken és a munkaértékeken. A beszélgetéseknél, a munkaértékeknél és a tényeknél a HotKV rögzíti a lejárati időt a hozzáfűzéses fájlhoz és a replikákhoz, így egy lejárt bejegyzés nem jön vissza, amikor a fájlt újraindítás után újrajátsszák.
  • Tényeket tároljon, ne átiratokat. Összegezzen, mielőtt a szemantikus memóriába ír. Egy tényt könnyebb felidézni, mint egy oldalnyi párbeszédet.
  • Tartsa külön az ügynököket. Használjon külön azonosítót vagy névteret ügynökönként és bérlőnként, hogy az egyik ügyfél memóriáját soha ne idézzék fel egy másiknak.
  • Keveset idézzen fel, ne sokat. Vegye a három-öt legjobb találatot, és hasonlósági pontszám alapján dobja el a gyengéket, mielőtt belépnének a promptba.
  • Tartsa távol a titkokat. A memóriát visszaolvassák a promptokba, ezért soha ne tároljon jelszavakat, kulcsokat vagy olyan adatot, amelyet nem mutatna meg a modellnek.

Meddig tartsa meg az egyes típusokat

Ezek az élettartamok a mi javaslataink, nem alapértelmezések. A sajátját aszerint válassza, milyen gyorsan változnak az alapul szolgáló tények, és mit szabad megtartania.

MemóriatípusJavasolt élettartamVezérlők a HotKV-ban
BeszélgetésA munkamenet, vagy egy rögzített időszak, például egy napWINDOW és TTL az AMEM.CONV.CREATE-en
MunkaA feladat, majd törölveTTL az AMEM.WORK.SET-en, és az AMEM.WORK.CLEAR
SzemantikusAmíg a tény igaz maradTTL az AMEM.SEM.STORE-on, és az AMEM.SEM.FORGET
EpizodikusAmeddig az auditja vagy támogatási igényei megkívánjákAMEM.EPIS.QUERY időtartomány szerint, és az AMEM.EPIS.CLEAR (az eseményeknek nincs élettartamuk)

A megőrzés adatvédelmi kérdés is. Ha a memória bármit tartalmaz egy személyről, az Ön által választott élettartam része annak, amit neki ígér, ezért írja le.

Hogyan romlik el az ügynökmemória

A legtöbb memóriahiba lassú. Az ügynök egy hétig jól működik, aztán egyre rosszabb lesz. Ezek azok a hibák, amelyek ellen tervezni kell.

Gyakori hibák

  • Elavult tények. A márciusban igaz tényt októberben idézik fel. Adjon a tényeknek élettartamot, vagy tárolja őket entitásonként egy kulcs alatt, hogy az új érték felülírja a régit.
  • Ellentmondások. Két tárolt tény ellentmond egymásnak, és az ügynök találomra az egyiket választja. Részesítse előnyben a kulcsonkénti egy tényt ahelyett, hogy új jegyzeteket fűzne a régiek mellé.
  • Túlzott felidézés. Túl sok találat lazán kapcsolódó szöveggel tölti meg a promptot. Keveset idézzen fel, és dobja el a gyenge találatokat.
  • Szivárgás felhasználók között. Az egyik ügyfél memóriáját felidézik egy másiknak. Külön azonosítók vagy névterek minden bérlőnek, minden olvasás előtt a kódban ellenőrizve.
  • Korlátlan növekedés. Semmi nem jár le, ezért a keresések lassulnak, és a költségek kúsznak felfelé. Minden típusnak kell élettartam. Ahol a HotKV-nak nincs élettartama, mint az epizodikus naplónál, ütemezzen magának törlést vagy exportot.
  • Összefoglaló-sodródás. Egy összefoglaló összefoglalása lassan eltér attól, ami történt. Az eseménynapló maradjon az igazság forrása, és az összefoglalókat abból generálja újra.

Kezelje a tárolt szöveget megbízhatatlanként

Az utolsó pont több figyelmet érdemel. Bármit, amit egy ügynök a memóriába ír, később beolvashatnak egy promptba. Ez magában foglalja a weboldalról, e-mailből vagy felhasználótól származó szöveget is. Ez a prompt injection közvetett formája, amelyet az OWASP LLM01-ként sorol fel. Tárolja minden ténnyel a forrását. Kevésbé bízzon a külső tartalomból írt memóriában, és soha ne engedje, hogy egy felidézett jegyzet felülírja a rendszerpromptját.

Mit mértünk és mit nem

A HotKV közzétett benchmarkjai a parancsok áteresztőképességét, a vektorkeresést és a válasz-gyorsítótárazás tokenmegtakarítását fedik le. Az ügynökmemóriának még nincs saját benchmarkja. A késleltetéséről vagy arról, mennyivel javítja az ügynök minőségét, nem állítunk semmit. Amit mondhatunk, az építészeti. A négy tároló ugyanabban a folyamatban fut, mint a gyorsítótár és a vektorindex. Egy memóriakeresés egyetlen hívás egy már üzemeltetett rendszerhez.

A tokenmegtakarítási benchmark és a prompt-gyorsítótárazás és szemantikus gyorsítótárazás összehasonlítása a mért oldalt mutatja. Az ügynökmemória felhasználási esete a parancsokat egy teljes forgatókönyvben mutatja.

Ügynökmemória használata a Claude Code-ból vagy a Cursorból

A Model Context Protocolt támogató asszisztens egyedi kód nélkül is használhatja ennek a memóriának egy részét. A nyílt forráskódú hotkv-mcp szerver eszközként teszi elérhetővé a beszélgetési memóriát, a munkajegyzeteket, egy eseménynaplót és egy gördülő összefoglalót. Csak olvasható módja van, és egy névtere, amely korlátok között tartja az ügynököt. Nem teszi elérhetővé a szemantikus memóriát, és az eszközei nem tudnak ablakot vagy élettartamot beállítani, ezekhez használja a klienskönyvtárat. A következő cikk, az MCP-szerver ügynökmemóriához megmutatja, hogyan csatlakoztassa, és mire terjednek ki a védelmei.

Gyakran ismételt kérdések

Mi az az AI-ügynökmemória?

Az AI-ügynökmemória az a tárolási és visszakeresési réteg, amely lehetővé teszi, hogy egy ügynök lépéseken és munkameneteken át megőrizzen információt. Általában egy legutóbbi beszélgetési ablakot, jelentés alapján megtalált hosszú távú tényeket, egy vázlatfüzetet a jelenlegi feladathoz és egy eseménynaplót kombinál.

Mi a különbség a rövid és a hosszú távú ügynökmemória között?

A rövid távú memória azt tartja, ami éppen történik, például a legutóbbi fordulókat és a feladat állapotát, és korlátos és átmeneti. A hosszú távú memória azt a tudást tartja, amelynek túl kell élnie egy munkamenetet, például tényeket, beállításokat és múltbeli eseményeket, és szükség esetén keresnek benne.

Mi az a gördülő összefoglaló az ügynökmemóriában?

A gördülő összefoglaló egy rövid, futó leírás arról, mit tanult vagy döntött eddig egy ügynök, a munka folytatásával frissítve. A promptban a régi fordulók helyére lép, hogy a prompt ne nőjön tovább. A HotKV ügynökönként egyet tárol, és minden frissítéskor növeli a verziószámot.

Kell vektoradatbázis az ügynökmemóriához?

Csak a szemantikus memóriához, ahol a tényeket jelentés alapján találják meg. A beszélgetési ablakokhoz, a munkaállapothoz és az eseménynaplókhoz nem kellenek vektorok. A HotKV mind a négyet egy motorban tartja, így a vektorindex és a többi tároló nem különálló rendszer.

Meddig kell megőrizni az ügynökmemóriát?

A típustól függ. A munkamemóriának le kell járnia, amikor a feladat véget ér, a beszélgetéseknek a munkamenet vagy egy meghatározott időszak után, az epizodikus naplóknak pedig ameddig az audit igényei megkívánják. A szemantikus memória tényeit felül kell vizsgálni, és el kell távolítani, ha már nem igazak.

Támadható az ügynökmemória?

Igen. A memóriába írt szöveget később beolvassák a promptokba, így egy megmérgezett jegyzet irányíthatja az ügynököt. Jegyezze fel, honnan származik minden tény, bízzon kevésbé a külső tartalomban, és a felidézett memória tekintélye maradjon a rendszerprompté alatt.

RAM-ban tárolja a HotKV az ügynökmemóriát?

A HotKV memóriabeli motor, így az olvasásokat a memóriából szolgálja ki. A négy tárolóba írásokat a termékdokumentáció szerint rögzíti a hozzáfűzéses fájlhoz és a replikákhoz, a lejárati idők átvitelével.

Hasznosnak találta?

Cikk megosztása

Folytassa a beszélgetést

Hozzászólások

Kérdése van a módszerről? Más eredményt kapott a saját hardverén? Ossza meg, mit talált. A hozzászólások megjelenés előtt ellenőrzésen esnek át.

Hozzászólás írása

A megjelenítendő neve és a hozzászólása jóváhagyás után nyilvánossá válik. Az e-mail-címét kizárólag a fenti értesítésekhez használjuk, és soha nem jelenik meg. A Cloudflare Turnstile az írás megkezdése után ellenőrzi a spamet. Adatvédelmi részletek.