Průvodci

Paměť AI agentů: čtyři typy a jak je ukládat

Paměť AI agentů je víc než dlouhé kontextové okno. Čtyři druhy, které agent potřebuje, jak každý uložit a co do nich nepatří, s příkazy HotKV.

Paměť AI agentů nakreslená jako agent se čtyřmi paměťovými úložišti kolem sebe: konverzační, sémantické, pracovní a epizodické.

Paměť AI agentů je to, co agentovi umožňuje přenést něco z jednoho kroku nebo jedné relace do další. Jazykový model sám si mezi voláními nepamatuje nic. Cokoli si zdánlivě pamatuje, do promptu vrátil váš kód. To, jak tento materiál ukládáte a vyhledáváte, rozhoduje o tom, co si agent může vybavit, jak rychle a za jaké náklady na jedno kolo.

Stručně. Agenti potřebují čtyři druhy paměti: krátké okno konverzace, dlouhodobá fakta vyhledávaná podle významu, odkládací prostor pro rozpracovanou úlohu a záznam o tom, co se stalo. Každý má jiný tvar, jinou životnost a jiné vyhledávání, takže jediná paměťová tabulka nesedí žádnému z nich dobře. HotKV ukládá všechny čtyři v jednom in-memory jádru pomocí příkazů AMEM.*. Měřili jsme cachování a vektorové vyhledávání HotKV, ne paměť agentů, takže tento článek vysvětluje návrh a netvrdí žádné zrychlení.

Proč kontextové okno není paměť

Kontextové okno je text, který posíláte s každým požadavkem. Má omezenou velikost, za všechno v něm platíte vstupní tokeny v každém kole a zmizí, když relace skončí. Nelze v něm ani vyhledávat. Pokud agent potřebuje jediný fakt starý tři týdny, vložit celou historii není odpověď.

Paměť je vrstva, která rozhoduje, co půjde do okna příště. Uchovává nedávné repliky a nachází těch pár starších faktů, na kterých záleží. Drží stav aktuální úlohy a zaznamenává, co agent udělal. Výzkumníci popisují agenty podobně. Framework CoALA od Sumerse, Yaa, Narasimhana a Griffithse odděluje pracovní paměť od dlouhodobé epizodické, sémantické a procedurální paměti.

Čtyři typy paměti AI agentů

Čtyři úložiště HotKV pokrývají většinu téhož, přizpůsobenou tomu, co musí aplikace postavit. Procedurální paměť, know-how obsažené v kódu a promptech agenta, obvykle žije ve vašem repozitáři nebo v registru promptů a není samostatným úložištěm.

Konverzační paměť

Jde o krátkodobý přepis jedné relace. Zprávy nesou roli (system, user, assistant nebo tool). Leží v omezeném posuvném okně, takže nejstarší repliky vypadnou, jakmile se dosáhne limitu. Odpovídá na jedinou otázku. Co bylo řečeno nedávno? V HotKV to jsou AMEM.CONV.CREATE, AMEM.CONV.APPEND a AMEM.CONV.WINDOW.

Sémantická paměť

Sémantická paměť je dlouhodobá znalost uložená jako fakta s vektorem embeddingu. Agent si je vybavuje podle významu, ne podle klíče. Opírá se o vektorový index HNSW, stejného druhu, jaký pohání vektorové vyhledávání. AMEM.SEM.STORE uloží fakt a AMEM.SEM.RECALL vrátí nejlepší shody se skóre podobnosti. Sem patří dokumenty, uživatelské preference a naučené opravy.

Pracovní paměť

Pracovní paměť je odkládací prostor pro rozpracovanou úlohu, plochá množina klíčů a hodnot omezená na relaci. Drží aktuální krok, vyřizovaný tiket nebo dílčí výsledek. Měla by zmizet, když úloha skončí. AMEM.WORK.SET právě z toho důvodu přijímá dobu životnosti.

Epizodická paměť

Epizodická paměť je append-only log událostí s časovými značkami, například provedená akce, učiněné pozorování nebo dosažené rozhodnutí. Umožňuje agentovi, nebo člověku, který ho kontroluje, zeptat se, co se stalo a kdy. AMEM.EPIS.LOG zapíše událost a AMEM.EPIS.QUERY je čte zpět podle typu a časového rozsahu.

Paměť AI agentů v praxi

V praxi záleží na dvou věcech. Jak do paměti zapisujete a co z ní čtete zpět v každém kole.

Ukládání paměti příkazy

Tady je agent podpory, který vyřizuje jednu konverzaci. Fiktivní text zásad a třímístné vektory slouží jen pro ilustraci. Skutečný model pro embeddingy vytváří vektory o 768 nebo 1 536 číslech a jmenný prostor vytvoříte s touto dimenzí.

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

V každém kole agent přečte nedávné okno a vybaví si těch pár faktů, které odpovídají otázce. Zkontroluje svou pracovní poznámku a z těchto částí sestaví prompt. Poté, co jedná, zaloguje událost. Nic v této smyčce nepotřebuje celou historii.

Čtení paměti v každém kole

Jedno kolo paměti agenta. Před promptem agent přečte okno konverzace, vybavená fakta a pracovní poznámku. Po odpovědi připojí repliku, zaloguje událost a aktualizuje poznámku.
Jedno kolo paměti agenta. Před promptem několik věcí přečíst a po odpovědi zapsat zpět.

Ukládání paměti je ta snadná polovina. Umění spočívá v rozhodnutí, co číst zpět, protože všechno, co přečtete, jde do promptu a stojí vstupní tokeny. Rozumná smyčka čte hrstku věcí v pevném pořadí. Nejdřív nedávné repliky, pak těch pár faktů, které odpovídají otázce, pak stav úlohy. Zde je s oficiálním klientem pro Python, s vaší vlastní funkcí pro embeddingy a šablonou promptu.

import hotkv

r = hotkv.from_url("hotkv://localhost:6379")
MIN_SIMILARITY = 0.8          # laďte na vlastních datech

def start_session(session: str) -> None:
    r.amem_conv_create(session, window=50, ttl=86400)   # vytvořit jednou, před prvním připojením

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)      # vaše šablona promptu

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")

Hranici podobnosti si musíte vyladit sami. Hodnota, která vyhovuje jednomu modelu pro embeddingy a jedné sadě faktů, bude špatná pro jiný, proto ověřte vybavování na otázkách, u kterých znáte odpovědi. Vyřazování slabých shod je důležitější, než se zdá, protože špatný fakt v promptu je horší než žádný fakt.

Stabilní části tohoto promptu, například systémové instrukce, jsou zároveň tou částí, kterou cachování promptů u poskytovatele zlevňuje. Paměť, kterou čtete, dejte na konec, za stabilní text, aby její změna tuto cache neznehodnotila.

Souhrny místo stále delších oken

Okno staré repliky zahazuje úplně. U smalltalku to nevadí, u dlouhé úlohy ano, kde může replika 3 ještě záležet při replice 300. Obvyklá odpověď je průběžný souhrn. Po každém úseku konverzace agent, nebo levnější model, zapíše, co se zjistilo, a souhrn v promptu nahradí staré repliky.

HotKV uchovává jeden souhrn na agenta pomocí AMEM.SUMMARY.SET, AMEM.SUMMARY.APPEND a AMEM.SUMMARY.GET. SET nahradí text a APPEND přidá řádek. Každá aktualizace zvýší číslo verze, takže jiná komponenta může levně zjistit, že se souhrn změnil a kdy.

Souhrn je ztrátový a shrnutí souhrnu ztrácí pokaždé víc. Přesné hodnoty, například identifikátory, částky a data, držte mimo prózu, v pracovní paměti nebo sémantických faktech, kde přežijí. Souhrn použijte pro tvar práce, tedy preference, učiněná rozhodnutí a to, co zbývá.

Pravidla návrhu a retence

Paměť roste bez omezení, dokud ji nezastavíte, proto nastavte limity před prvním zápisem.

Pravidla, která udržují paměť užitečnou

  • Omezte všechno. Nastavte WINDOW u konverzací a TTL u relací a pracovních hodnot. U konverzací, pracovních hodnot a faktů HotKV zaznamenává čas expirace pro append-only soubor a repliky, takže položka, která vypršela, se nevrátí, když se soubor po restartu přehraje.
  • Ukládejte fakta, ne přepisy. Před zápisem do sémantické paměti shrňte. Fakt se vybavuje snáze než stránka dialogu.
  • Držte agenty odděleně. Používejte samostatný identifikátor nebo jmenný prostor pro každého agenta a každého tenanta, aby se paměť jednoho zákazníka nikdy nevybavila pro jiného.
  • Vybavujte pár, ne mnoho. Vezměte tři až pět nejlepších shod a slabé vyřaďte podle skóre podobnosti, než se dostanou do promptu.
  • Nepouštějte dovnitř tajemství. Paměť se čte zpět do promptů, proto nikdy neukládejte hesla, klíče ani data, která byste modelu neukázali.

Jak dlouho uchovávat jednotlivé typy

Tyto životnosti jsou naše doporučení, ne výchozí hodnoty. Vyberte si je podle toho, jak rychle se podkladová fakta mění a co smíte uchovávat.

Typ pamětiDoporučená životnostOvládání v HotKV
KonverzačníRelace nebo pevné období, například denWINDOW a TTL u AMEM.CONV.CREATE
PracovníÚloha, poté vymazáníTTL u AMEM.WORK.SET a AMEM.WORK.CLEAR
SémantickáDokud fakt platíTTL u AMEM.SEM.STORE a AMEM.SEM.FORGET
EpizodickáTak dlouho, jak vyžadují potřeby auditu nebo podporyAMEM.EPIS.QUERY podle časového rozsahu a AMEM.EPIS.CLEAR (události nemají dobu životnosti)

Retence je také otázka soukromí. Pokud paměť obsahuje cokoli o člověku, zvolená životnost je součástí toho, co mu slibujete, proto ji zapište.

Jak se paměť agentů pokazí

Většina chyb paměti je pomalá. Agent týden funguje dobře a pak se začne zhoršovat. To jsou selhání, proti kterým je třeba navrhovat.

Běžná selhání

  • Zastaralá fakta. Fakt, který platil v březnu, se vybaví v říjnu. Dejte faktům dobu životnosti, nebo je ukládejte pod klíč pro každou entitu, aby nová hodnota přepsala starou.
  • Rozpory. Dvě uložená fakta si odporují a agent jedno vybere náhodně. Preferujte jeden fakt na klíč před připojováním nových poznámek vedle starých.
  • Přehnané vybavování. Příliš mnoho shod zaplní prompt volně souvisejícím textem. Vybavujte málo a slabé shody vyřazujte.
  • Úniky mezi uživateli. Paměť jednoho zákazníka se vybaví pro jiného. Oddělené identifikátory nebo jmenné prostory pro každého tenanta, kontrolované v kódu před každým čtením.
  • Neomezený růst. Nic nikdy nevyprší, takže vyhledávání zpomalují a náklady rostou. Každý typ potřebuje životnost. Tam, kde HotKV dobu životnosti nemá, jako u epizodického logu, naplánujte vymazání nebo export sami.
  • Posun souhrnu. Souhrn souhrnu se pomalu přestává shodovat s tím, co se stalo. Za zdroj pravdy považujte log událostí a souhrny z něj znovu generujte.

Ukládaný text berte jako nedůvěryhodný

Poslední bod si zaslouží větší pozornost. Cokoli, co agent zapíše do paměti, lze později načíst do promptu. To zahrnuje text, který pocházel z webové stránky, e-mailu nebo od uživatele. To je nepřímá forma prompt injection, kterou OWASP uvádí jako LLM01. Ke každému faktu ukládejte zdroj. Paměti zapsané z vnějšího obsahu důvěřujte méně a nikdy nenechte vybavenou poznámku přebít váš systémový prompt.

Co jsme změřili a co ne

Publikované benchmarky HotKV pokrývají propustnost příkazů, vektorové vyhledávání a úspory tokenů při cachování odpovědí. Paměť agentů zatím vlastní benchmark nemá. O její latenci ani o tom, jak moc zlepšuje kvalitu agenta, žádné tvrzení neuvádíme. Co říct můžeme, je architektonické. Čtyři úložiště běží ve stejném procesu jako cache a vektorový index. Vyhledání v paměti je jedno volání systému, který už provozujete.

Benchmark úspor tokenů a srovnání cachování promptů a sémantického cachování ukazují změřenou stránku. Případ použití paměti agentů ukazuje příkazy v úplném scénáři.

Použití paměti agentů z Claude Code nebo Cursoru

Asistent, který podporuje Model Context Protocol, může použít část této paměti bez vlastního kódu. Open-source server hotkv-mcp zpřístupňuje konverzační paměť, pracovní poznámky, log událostí a průběžný souhrn jako nástroje. Má režim jen pro čtení a jmenný prostor, který agenta omezuje. Nezpřístupňuje sémantickou paměť a jeho nástroje nemohou nastavit okno ani dobu životnosti, proto pro ně použijte klientskou knihovnu. Další článek, server MCP pro paměť agentů, ukazuje, jak ho připojit a co jeho ochranná opatření pokrývají.

Často kladené otázky

Co je paměť AI agentů?

Paměť AI agentů je vrstva ukládání a vyhledávání, která agentovi umožňuje uchovat informace napříč kroky a relacemi. Obvykle kombinuje okno nedávné konverzace, dlouhodobá fakta vyhledávaná podle významu, odkládací prostor pro aktuální úlohu a log událostí.

Jaký je rozdíl mezi krátkodobou a dlouhodobou pamětí agenta?

Krátkodobá paměť drží, co se děje teď, například nedávné repliky a stav úlohy, a je omezená a dočasná. Dlouhodobá paměť drží znalosti, které mají přežít relaci, například fakta, preference a minulé události, a vyhledává se v ní podle potřeby.

Co je průběžný souhrn v paměti agenta?

Průběžný souhrn je krátký neustále aktualizovaný popis toho, co se agent dosud naučil nebo rozhodl, aktualizovaný, jak práce pokračuje. V promptu nahrazuje staré repliky, aby prompt nepřestal růst. HotKV uchovává jeden na agenta a při každé aktualizaci zvýší číslo verze.

Potřebuji pro paměť agentů vektorovou databázi?

Jen pro sémantickou paměť, kde se fakta hledají podle významu. Okna konverzace, pracovní stav a logy událostí vektory nepotřebují. HotKV drží všechny čtyři v jednom jádru, takže vektorový index a ostatní úložiště nejsou samostatné systémy.

Jak dlouho by se měla paměť agenta uchovávat?

Záleží na typu. Pracovní paměť by měla vypršet, když úloha skončí, konverzace po relaci nebo po stanoveném období a epizodické logy tak dlouho, jak vyžadují potřeby auditu. Fakta v sémantické paměti by se měla kontrolovat a odstraňovat, když přestanou platit.

Lze paměť agenta napadnout?

Ano. Text zapsaný do paměti se později čte do promptů, takže otrávená poznámka může agenta navést. Zaznamenávejte, odkud každý fakt pochází, vnějšímu obsahu důvěřujte méně a vybavenou paměť držte v autoritě pod svým systémovým promptem.

Ukládá HotKV paměť agentů v RAM?

HotKV je in-memory jádro, takže čtení se obsluhují z paměti. Zápisy do čtyř úložišť se podle dokumentace produktu zaznamenávají pro append-only soubor a pro repliky, s přenesenými časy expirace.

Přišel vám článek k užitku?

Sdílejte článek

Pokračujte v diskusi

Komentáře

Máte otázky k metodě? Na vašem hardwaru vám vyšel jiný výsledek? Podělte se o to, co jste zjistili. Komentáře se před zveřejněním kontrolují.

Přidat komentář

Vaše zobrazované jméno a komentář se po schválení stanou veřejnými. Vaši e-mailovou adresu používáme jen pro výše uvedená oznámení a nikdy se nezobrazuje. Jakmile začnete psát, Cloudflare Turnstile kontroluje spam. Podrobnosti o ochraně soukromí.