Памяць AI-агента — не база даных: што захоўваць, знаходзіць і забываць
Чаму памяць агента — гэта задача рэлевантнасці: чым адрозніваюцца кантэкст, памяць, стан і RAG, што захоўваць, як абмяжоўваць, старыць і правяраць памяць і чаму забыванне — гэта функцыя.
Крыніцы: AI Agent Memory Is Not a Database
Памяць для агентаў AI зазвычай прастаўляецца як функцыя, якая робіць іх розумнейшымі: пам’ятваць праўяныя раней чаты, праганяткі корыстувальніка, пакрытку паперовых процэсаў, тое, што працавало ў пярэдні раз, факты з дасягліх. Мечта — агент, які ведае все, што калі-небудзь бачыў. Сяродзе тут і пачынаецца плутанне, адтуды што агенту не трэба пам’ятваць усё, і памяць — гэта не тое ж самае, што зберагчык дадзеных.
База дадзеных можа хаваць мільйоны запісаў, пры чым ні аднаго з іх не трэба хаваць у памяці агента. Інжынерныя запытанні іншыя: што трэба пам’ятваць і на які час? Дзе гэта знаходзіцца, калі гэта запрашваецца, калі гэта адхоўляецца? І чы ўзагалі гэта памяць? Аднойчы так абмовіўшыся, памяць — меньш проблема зберагчыка, чым проблема рэлевантнасі.
Чаму падход «зберагчыць усё» не працуе
Уявіце агента, які віканае дзейнасць, якая трывае працоўна. У першым кроку ён вывучае мету карыстальніка, выбраны дакумент, калькі выкарыстоўваных значэнняў, рэзультат інструмента, прычыннае рашэнне і рэзультат паўтарной пераканання. Потым прыходзіць наступны крок, а потым ўжо іншы, і колькасць інформацыі продовжвае растаць.
Найпростыяй спосаб рэалізацыі — зберагчы всю інформацыю: дадаваць кожную паведамленне, зберагчы кожны рэзультат інструмента, перадаць усё занова праз наступны вызыв. Цэе працуе якое-такое час. Але праз час кантэкст стае занадта вялікім, адпаведзі сповольняюцца, вітраты растуць, застарэлая інформацыя пачынае вплываць на новыя рашэнні, а тыя даныя, якія важнае ўжо не маюць, застаюцца ў запытанні. Фактычна ад модэлю патрабуецца выбраць, калі з пяцідзесятых рэчаў зараз мае значэнне якая. У такі момент памяць ператвараецца на шум.
Чатыры тэрміны, якія плутаюцца
Этыя концэпцыі рашаюць разныя проблемы, і дызайн агентаў павышаецца, калі іх раздзеляюць.
Кантэкст — гэта тое, што мадэль павінна ведаць у даны момент: чырговая запатэчка, выбраныя доказы, калькі ранейшых рашэнняў, рэлевантныя рэзультаты працы інструментоў. Гэта тымчасовая інфармацыя, якая служыць для нынешняго крока аналізу.
Памяць — гэта інфармацыя, якую сістэма можа захацець знову пазней, такая як прыямлівасць корыстувальніка, рашэнне, якое хтось падтвердзіў, корыстны апіс або рэзультат пярэдней задачы. Яна можа застацца пасля адной толькі вызову модэлі.
Стан — гэта інформацыя пра тое, на якім ўзроўе знаходзіцца рабочы працэс. Гэта можа быць статус у фармаце QUEUED, RUNNING, WAITING_FOR_TOOL, RETRYING або COMPLETED, або болей дзеякія флагі, такія як document_extracted = true, analysis_completed = true і report_generated = false. Стан дазволяе сістэме продаваць працу; гэта не ўсё тое, што ёй трэба ведаць.
RAG — гэта запошук ведчыння з зусімных выканаў, калі яго трэба: дакументы, базы дадзеных, правілы, адчытыны, внутранія вікі, сховішчы вектараў. Гэтая інфармацыя ўжо знаходзіцца дзеіндзе. Агент не павінен яе назаўсёды запамяцваць, а толькі знаходзіць, калі ёй патрэбна, і гэта — адныя з іншых прыемаў.
Кораткапрацэсавая памяць
Кораткапрацэсавая памяць — гэта рабочы набор. Людзі, якія рашаюць проблему, зберагаюць у сваймых галавах певныя факты і адкідаюць большасць з іх пасля таго, як завершаюць работу, і агенты маюць тую ж патрэбу. У рамках аднаго працэсу агент можа выкорыстоўваць тэкушчую запрос, выбраны дакумент, няўжоныя рэзультаты інструментаў, проміжныя вылічэння, пакананыя рашэнні і працэс выпалення задання. Усё гэта мае значэнне зараз, але завтра можа стаць майжэ безцэнным. Хорашая дэфініцыя — гэта найменшы набор інфармацыі, неабходны для продажчэння тэкушчага задання, а не усё, што здарылася з моменту яго пачатку.
Довгострокова памяць мусіць заслужыты свое місце
Довгострокова памяць – гэта тыя, што ві навмісно зберыгаеце, тому што гэта можа статы корыснім у будучым. Прыкладамі ёсць вказана перэвага, напрыклад „віддаю перэвагу стыслім звітам“, підтверджэній бізнес-вібір, напрыклад „вікорыстовуваты гэты фармат звітносты для будучага аналізу“, або підтверджэній факт, напрыклад „гэты праект розглядае Сістэму А як джэрэло істыні“.
Тут стандарт мае буты вішчым. Перш ніж шчось зберыгаты, запітайце себе, чы гэта можа покрашчыты майбутне рышэння. Калі ні, залішце гэта без увагі, тому што довгострокова памяць мае свою вартысць окрым самого зберыгання: кожэн елемент можа згодом віявітыся неправільнім, несправнім або потрэбуваты корэкціі.
RAG – гэта не довгострокова памяць
Спадзяймо, што ў вектарным індэксе ёсць 20 000 внутршняях дакументаў, і агент можа іх шукаць. Гэта не ўсё тое, што являе сабою памяць агента. Дакументы — гэта веда, а RAG — спосаб яе выявлення. Агент не павінен зберагаць усе дакументы ў сваім “галавным” месцы памяці, яму проста трэба ведаць, як знайсці правільны. Здаровы прайсупутак — калі агенту трэбна інформацыя, ён шукае ў вучальным істочніку, выявляе стосунечныя доказы і ўжоў яны. Нездаровы прайсупутак — калі агент копіюе весь запас веды ў сваю памяць. Веда можа быць вельмі велікай, тады як рабочая памяць должна заставацца маленькай.
Стан часта мае большое значэнне, чым памяць
Большая частка таго, што называецца памяцю агента, на самай працо ёсць станом рабочага практыку. Падазроўцуймо, што агент завершыў выкарыстоўванне дакумента, запрашанне доказаў і ўжо аналізаваў іх, а адчынак яшчэ не створаны. Калі працоўнік зламаецца прычынай таго, што адчынак не готавы, сістэма павінна ведаць, дзе продаваць працу. Гэта і ёсць стан. Модэлю не трэба памяцаць, што крок аналізу завершыўся, адколі прыкладнае програмае павінна гэта ведаць.
Статус задання, колькасць праказаў, пункты контролю, ID заданняў, завершаныя крокі і застаўленыя дзеянні зазвычай належаць да дэтэрміністычнага стану прыкладнай програмы, а не да размовы з LLM. Хорашая правіла: калі програма можа точна ведаць кашто-небудзь, нехай яна і зберагае гэта точна. Модэлю не трэба быць адпаведальным за памяць пра правду рабочага практыку.
Не кожнае здарэнне заслуговае на месца
Уявіце сабое, калі інструмент вяртае JSON-даныя дужа 500 ліній. Чы гэтаму наступны крок патрабуюць усія 500 ліній? Ў большынстве случаў яму патрабуюцца толькі адна-две запоўненыя, такія як account_status = ACTIVE, total_balance = 120000 або document_found = true. Неапрануты выходны матэрыял можа застацца ў журналах або сховішчы, а памяць можа хаваць толькі тые часткі, якія маюць значэнне.
Размовы працуюць так сама. Якшчо корыстнік і агент пасвяцілі дзесят кантэкстаў на выявленне патрабавак, то кантрацэпты на кшталт "корыстнік хоча, каб звятыны былі групаваны па катэгорыях і сортаваны за ступенем значамасці" прыносяць большае практычнае значэнне, чым ўсёвылучна пераглядаць усю размову ў кожны раз.
Што варта запамятаць
Няма ўніверсальнай адпаведзі для кожной сістэмы, але існуе калькі катэгарыяў, якія зазвычай ёсць хорашымі варухамі:
- Стабільныя прагаперы: фармат выходных даных, мова, стыль атрыбутавання інформацыі.
Чаго трэба ўважна старацца зберагчы
- Кожны адказ модэлі. Большасць промежуточных выважанняў пазней не ёсць корыстнымі.
- Кожны вылаз меркаводства, які можа быць вялікім, застарэлым або спецыфічным для певнага моманту.
- Тымчасовыя адказвы. Вчорашні таймааут не павінен стаць завтрашняй кантэкстам.
- Непараболеныя прыязды модэлі — гэта сама большая небяспека. Калі модэлі стварытае заключэнне, што дакумент «здаецца аднасоўваецца з Компаніяй А», а ніхто гэта не параболе, то яго зберагачыце можа ператворыць слабкую догадку на стойкі факт, на які пазней будзе адважвацца.
- Чуліватыя даныя, для якіх нэма чыстай прычыны іх зберагачыць. Памяць павінна мець свою мэту.
Памяць можа быць некорэктной
Гэта адна з найбольшых проблем дзейневай памяці. Агент зберагачыце, што валюта звятынакоў кліента — USD, а чырэх месцацоў пазней яго прывярыба зменілася, а стары запіс застаўся. Калі ж выканаць? Памяць павінна мець паняву пра свежасць. Дзеянні застаюцца чыннымі гадамі, а іншыя — хвілінамі, і хорашая сістэма розразняе іх.
Жыцёвы цыкл, а не проста зберагачыце і забудзьце
Памяць не должна працаваць за прынцыпам зберагчэння і вечнага хранення даных. Болей рэалістычны цыкл включае захопленне, параболкаванне, зберагчэнне, выявленне, выкарыстоўванне, а пасля — апдэйт, заканчыцца тэрміну дзейнасці або выдаленне. Чырабець гэтага ціклу кожны элемент магчымае неабходнасць наявнасці часу стварэння, месца паходжання, флага прызнаценага чы не прызнаценага, часу последньяго выкарыстоўвання, правіла заканчыцца тэрміну дзейнасці і супакоўкі на будзь-яе новэйшае значэнне, якое заменіла яго. Запіс — толькі палова задачы; аднае з іншых — тэкстурацыя.
Важнае значэнне выхадных даных
Падзеймім, што існуе два запам’ятоввання. Адна з яых кажае, што паветраны фармат — PDF, і корыстнік яшчэ вчора чыстаючы падтвердзіў гэта. Іншая кажае, што паветраны фармат можа быць Excel, што LLM вывяліў прыблізна шэсць месцаў таму. Яны не павінны маты роўную вагу, і самэ гэта ўчыняе неабходным, каб запам’ятовванне ідэальна фіксавала паходжэнне інфармацыі: чы рухала яе корыстнік, створыў сістэма, вывяліў мадэль, была запрашана з дакумента, вярнулася з інструмента чы скопіювана з іншага месца? Гэты кантэкст паведамляе сістэме, насколькі ёй можна даверыць.
Доверлівас таксама мае значэнне
Фраза "Здаецца, кантракт выгорае ў чырвені" — гэта іншы тып заявы, чым "Дата выгорання кантракта: 30 чырвеня 2027 года", якая паводзіцца з структураванага поля. Адну можна спрыяць як з высокай доверымасцю, а другую — як такую, якая трэбуе параболкі, таму нечыстыя выводы не ператвараюцца таямніча ў факты. Корыстны давялеглі запіс часта мае больш, чым проста значэнне; ён таксама можа містыць source, confidence, timestamp, scope і status, што робіць пазнейшыя пошукі набагато безпечнейшымі.
Апুсткі ўсё-такі ёсць інтэрпрэтацыямі
Апавяданні ўваходзяць у чысле найкрашчых спосабоў зменшыць розмер рабочай памяці. Зберагаюце фразу „паўтарач хочаць канкрэтнае тэхнічнае адказаў з прыкладамі“ заместо цэлага дыялогу, або „тры нараджэнні падтвердзеныя, адна нерашаная“ заместо кожнага крока аналізу. Проблема ў тым, што апавяданне ўособлівае рэальнасць і можа прыховаць важлівы даклад. Для важлівых процэсаў работы супараднюйце апавяданне з паўзамком на адпаведныя первынныя доказы. Апавяданне дапамагае агенту працаваць эфектыва, а первынныя даклады застаюцца доступныя, калі трэба чыгуча пераканацца ў чым-небудзь.
Не ствараюце другага істочніка правды
Калі дакументы кліента ужо знаходзяцца ў галоўной базе дакументаў кліента, іх копіюванне ў дзейнаўучую памяць агента зазвычай ёсць памылкой. Незабоўна две копіі стануць несусветнымі, і ніхто не будзе ведаць, якая з іх правільная. Лепшая выкорыстоўваць автарытатную сістэму як істочнік дакументаў, калі гэта неабходна, і вносіць рэзультат у кантэкст агента. Не ствараць дублікаты сістэмы зберагання дакументаў без вельмі чыстай прычыны. Крытэрыям являецца можлівасць надзейна адзыскання інформацыі з ўсходнага істочніка, а не яе запамятованне. Калі такая можлівасць існуе, адзысканне дакументаў можа быць лепшым за запамятованне.
Зона дзеяння
Калі калькі корыстувачы, арганізацыі чыста рабочыя практыкі дзелююць адной інфраструктурой агента, патрабуецца наявнасць меж для памяці. Памяць аднаго корыстувача не павінна з’яўляцца ў кантэксце іншага, адна арганізацыя не павінна запрашваць дадзеныя іншай, адна рабочая практыка можа не патрабаваць проміжных рэзультатаў іншай. Памяць, як правіло, патрабуецца з чыстаю мерой дасягнення — напрыклад, глобальная, арганізацыйная, корыстувачоўская, кантактная, рабочая практыкавая чыста задачовая. Чым вужэй мера дасягнення, тым меньша верага таго, што нерэлевантныя мяркі затрапляць у нерэлевантную рашынку.
Адзыскванне памяці — гэта проблема пошуку
З урачунку 500 збераганых спогадоў ніхто не павінен кладзіць іх усе ў кожны запіт. Мы знову сталі пры проблеме кантэкста, таму для выкарыстання спогадоў патрэбна сае ланцюговая структура: трэба разглядаць тэкушчую задачу, выявляць, які тып спогадоў ёсць рэлевантным, фільтруваць яны за корыстнікам, працэсам работы і структурой організацыі, шукаты, ранжаваць, выбіраць і дадзягаць найлепшыя спогады да рабочага кантэксту. Самэльга таму інжынерыя спогадоў і кантэкста так скарыстанае. Спагады вялікай меры вабяць, што можа быць доступна пазней, а інжынерыя кантэкста вялікай меры вабяць, што выкарыстоўваецца зараз.
Пішыце меней, выкарыстоўвайце лепшая
Уместа таго, каб спытацца, што ўсё можна зберагчы, трэба спытацца, якая інфармацыя мае достатню будучую цэннасць, каб практычна было яе зберагчы. Уместа таго, каб спытацца, сколькі спогадоў паспелае ў запіт, трэба спытацца, якія спогады ёсць рэлевантнымі для данага рашэння. Хорашая архітэктура спогадоў зазвычай должна дазваляць агенту бачыць меней, адтолькі што нерэлевантныя спогады ёсць проста нерэлевантным кантэкстам.
Возможнае аналізаванне
Падзейце, калі агент дае странна адказ. Зявлены дакумент выглядае правільна, а вызов інструмента успеў, пры тым адказ не той, і в канцы канцоў хтось з’ясоўвае, што на рашэнне паўплыў стары спамяр. Без можлівасці адразу бачыць, якія спамяры былі запрашаны, гэта вельмі складна дыбагаваць. Для кожнага запуску корыстна фіксаваць, якія спамяры былі выкарыстаны і чаму, якія ў іхах паходжэнне і вік, які статус, чыяць яны потрапілі ў фінальны кантэкст і чыяць яны змянілі выходны рэзультат. Гэта ператварае спамяры з закрытага элемента на ўсё, што можна аналізаваць.
Болей рэалістычная архітэктура
У замен на тое, каб усё траплялася ў спамяр, а потым да агента, уявіце ся так: прыходзіць корыстнік або задача, пераглядаецца стан рабочага прайсупутку, і сістэма вяршыць рашэнне, якія мяркаванні неабходны. Потым яна берае інфармацыю з розных джэрэл:
- Кантэкст работы для таго, што зараз патрэбнае: ныяньшая запрос, апошняе рэзультаты інструменту і ныяньшая рашэнне.
- Короткатэрміная памяць для таго, што патрэбна ў цым рабочым працэсе: аптака задання, прызначныя нарадкі і няўжоўнія рашэнні.
- Даўгатэрміная памяць для таго, што можа быць корыстным у будучых рабочых працэсах: стабільныя прагантаванні, падтверджаныя факты чы історычныя рэзультаты.
- Знанні і RAG для інфармацыі, якая існуе ў іншых месцах: дакументы, правілы, атласы і базы дадзеных.
- Стан прыкладнення для аднаковаўпаведных правядзіб: статус, пункты контролю, колькасць пракушэнняў і завершаныя крокі.
Пасля чаго неабходна фільтрацыя, класыфікацыя, аб’еднанне ныяньшага кантэксту і даўедзенне можлівасці агенту прааналізаваць сітуацыю. Аднаўленне всіх гэтых элементаў пад назвай простая памяць закрывае структуру.
Пытанні, якія трэба задаць пры дадаванні функцыі памяці
- Чы гэта будзе корыстным для будучага задання? Калі ні, то не зберагаць гэта.
Адказы на гэтыя пытанні зазвычай маюць большое значэнне, чым выбор базы дадзеных спамяці.
Забыванне — гэта функцыя
Хорашая памяць не значыць можлівасць запам’ятаваць усё. Корыстны агент павінен забываць багато: тымчасовыя дэталі, рэзультаты поперадніх вычынкаў, непарабяжаныя прыпускі, застарэлыя факты і логіку, якая больш не мае значэння. Большая памяць не прымусова робіць сістэму розумнейшай, а інодзе проста дае модэлю больш шансоў з’яеднаць некарэктныя элементы. У практыцы гэта значыць: зберагаць толькі тое, што будзе корыстна пазней, хаваць стан рабочага працэсу ў простым, дэтэрміністычным кодзе, запрашваць ведомасці з таго месца, дзе яны знаходзяцься, дазваляць толькі актуальным спомненням прайсці ў запрошэнне, фіксаваць канец кожнага з іх і апдэйтаваць чы ўыводзіць з рэўістры інформацыю, калі факты зміняюцца.
Базы дадзенаў існуюць для зберагання дадзеных. Памяць агента мае іншую мэту: ставіць правільныя факты перад модэлем, калі яны патрэбны, не дазволяючы старым непатрэбным дадзеным ператворыцца на непарабяжныя істыні пазней.