Brain: Агентна памет като уики за знания

Структурирана, проследима, самоподобряваща се файлова система с Markdown, компилирана офлайн и навигирана при поискване.

АвториPerplexity Engineering

Потребителите на Computer вършат работа, която обхваща месеци и стотици сесии. До десетата сесия системата трябва да бъде много по-продуктивна, отколкото при първата. Тя трябва да натрупва контекст за потребителя, неговите предпочитания и работата, която вече е свършена.

Например, когато бъде помолен да нарича диаграма на работен процес, който потребителят е обяснил преди това, Computer трябва да си спомни детайлите и да ги използва за създаване и извеждане на фигура в предпочитания от потребителя стил. Потребителят не трябва да обяснява отново детайлите на работния процес или да повтаря предпочитанието си към артефакти във формат PDF пред PNG; системата трябва да може точно да възстанови този контекст от минали сесии и да го приложи автоматично.

Паметта е основата за продължаващото подобряване на агентите. Ефективната система за памет трябва да бъде структурирана, проследима и адаптивна, като позволява на агентите да търсят с подходяща ширина и дълбочина за всяка задача, като същевременно обосновава всяко решение с най-актуалната информация.

Въведение

Вграждането на съответния контекст в агентите е многостранен проблем. Първо, агентите трябва да знаят какво съществува и как да получат достъп до него. Второ, когато намерят полезна част от информацията, те трябва да са сигурни, че тя е пълна, точна и актуална. Един изолиран факт е с ограничена стойност, освен ако агентът не може да намери свързана информация, да провери дали тя идва от доверен източник и да се увери, че не е необходимо да бъде актуализирана с по-ново наблюдение.

Натъпкването на статични файлове с памет директно в контекста на модела максимизира достъпността за агентите, но представя класически компромис между точност и извличане (precision-recall tradeoff). Прекалено много информация ще насити прозореца на контекста на агента с елементи с все по-малка релевантност, докато твърде малко ще влоши качеството на отговора поради липса на релевантен контекст. За разлика от това, достъпът до външни бази данни при поискване е по-гъвкав, но прехвърля тежестта на навигацията върху агента. Векторните бази данни често съхраняват разединени фрагменти, а графовите бази данни изискват агентите да знаят как да правят ефективни заявки.

Наскоро представихме Brain – основен компонент на системата за памет на Computer, който предоставя най-доброто от двата свята. Brain е структурирано уики за знания, разположено върху статични файлове с памет и доказателства. Цитатите свързват твърденията с техните източници, а свързаните късове информация са свързани странично. Организираното уики прави контекста навигируем при поискване, докато детайлните артефакти се запазват в слоя под него.

Уикито за знания Brain, представено като граф, с обекти като възли и връзки, свързващи свързани теми.
Пример за Brain, базиран на синтетична персона.

Brain се свързва с изчерпателна система за памет с три ключови компонента: трайно съхранение на паметта, фонови агенти, които използват паметта за отговор на заявки, и фонови агенти, които актуализират и подобряват паметта. Следната фигура илюстрира тези компоненти, разположени в цялостната системна архитектура на Brain.

Архитектурна диаграма, показваща трайно съхранение на паметта, фонови агенти, които четат паметта, и фонови агенти, които актуализират паметта.
Системата за памет се състои от споделена трайна памет, фонови агенти, които използват паметта, и фонови агенти, които актуализират паметта.

В тази статия описваме задълбочено всеки слой, обяснявайки как Brain организира паметта, как агентите я използват и как фоновите процеси я поддържат актуална. Представяме и резултати от вътрешни оценки, които валидират дизайна на Brain, демонстрирайки, че той подобрява производителността на агентите при по-ниска цена.

Организация и съхранение на паметта

Паметта се нуждае от представяне, което се мащабира до пълната история на потребителя, без да принуждава всяка част от контекста да влезе в промпта. Системата за памет на Computer представя постоянния контекст като файлова система. Brain синтезира знания от сурови източници, свързвайки свързани теми и свързвайки твърденията обратно към сесиите и файловете, които ги поддържат. Тази структура, описана по-подробно по-долу, ни позволява да организираме паметта в изключително подходяща за агентите форма.

Памет, базирана на файлова система

Сесиите на Computer вече съществуват в пясъчна кутия (sandbox) с файлова система, обвивка (shell) и помощни програми за I/O. При проектирането на Brain искахме да въведем възможно най-малко нови механизми в интерфейса между модела и паметта на агента. Ето защо изградихме Brain върху файлов слой за контекст, роден във файловата система. Паметта се материализира като файлове в пясъчната кутия в директорията memory/, а агентът просто използва същите инструменти за файловете с памет, които вече използва за всичко останало.

В основата на дървото на паметта стоят три директории от най-високо ниво, които поддържат контекст на различни нива на абстракция. knowledge/ е самият Brain – синтезирано уики за знания, което свързва субекти, концепции, активни проекти и минали знания; notes/ съдържа дестилирани фрагменти, организирани като тематични папки; а sessions/ съдържа индекси, резюмета и пълни транскрипции като сурови истории. Фигурата по-долу показва опростен изглед на оформлението.

Дърво на директориите, показващо memory/ с подпапки knowledge/, notes/ и sessions/.
Примерен изглед на оформлението на файловата система за памет.

Повърхностите умишлено се дублират. За прости въпроси с едно прескачане често е достатъчно да се търсят фрагменти в /notes за ключова дума, докато слойят /knowledge е най-полезен за въпроси, които изискват съвкупност от доказателства в рамките на седмици или месеци сесии на Computer.

Brain: Уикито за знания

Brain е форматиран като LLM уики – система от свързани Markdown файлове. Тази форма на леко структуриран Markdown предоставя холистичен изглед на съществуващия контекст, така че агентите да могат лесно да разберат какви записи са налични, как са свързани и къде да ги намерят. Всяка страница е поддържан изглед на една тема; тя трябва да остане полезна, когато се чете самостоятелно, като същевременно улеснява по-нататъшното изследване чрез връзки.

Връзките биват два вида. [[wikilinks]] са контекстни ръбове. Те свързват страниците странично; даден проект може да се свърже със своя собственик, клиент или концепциите, от които зависи. Следването им отговоря на въпроса „какво още трябва да знам?“. [cite:N] препратките са доказателствени ръбове. Те свързват твърденията надолу към суровите сесии или източниците на конектори, които ги поддържат. Следването им отговоря на въпроса „откъде знам, че това е вярно?“

Фигурите по-долу илюстрират как би изглеждала част от Brain за синтетична персона – изследователка на достъпността на име Надя. Нейният Brain включва страница за примерен проект, спринт за универсален дизайн в Япония, синтезиране на знания от сесии и конектори. Изгледът на графа демонстрира как контекстът и доказателствените ръбове, присъстващи в страницата, свързват свързани субекти и източници.

Примерна уики страница на Brain, визуализирана като Markdown, показваща вътрешно wikilinks и цитатни ръбове.
Brain е система от Markdown файлове.
Подграф от примерна уики страница на Brain, визуализиран като граф от свързани субекти и източници.
Вграденият контекст и доказателствените ръбове образуват графова структура за лесна навигация.

Brain се поддържа от Git с цел запазване на историята на версиите, което поддържа неговата постоянно еволюираща природа. Страниците могат да се редактират с течение на времето, докато дневниците на промените (changelogs) записват ключови актуализации и позволяват на агентите лесно да проверяват минали версии и разлики (diffs). Това поддържа и координацията между агентите, което е от критично значение, тъй като множество агенти могат да използват и актуализират Brain едновременно.

Използване на Brain

Когато отговарят на заявка на потребителя, агентите трябва да могат да намерят правилния контекст на правилното ниво на детайлност. Структурата на Brain улеснява агентите при изследването на паметта. Агентите могат да избират между действени стъпки, като например следване на контекстни връзки за намиране на свързана информация, следване на доказателствени връзки за проверка на твърдения или извикване на субагент за получаване и синтезиране на допълнителен контекст. Ние насочваме процеса на агентно изследване по редица начини, насочени към максимизиране на лекотата на достъп на агентите до съответната информация.

Стратегия за изследване

Включваме компактен индекс на Brain в първото потребителско съобщение, така че агентът да започне с работещи знания за това какво вече съществува. След това агентът взаимодейства с Brain, използвайки познати операции: четене на конкретни елементи, посочени от индекса, използване на grep за търсене в страниците, следване на връзки и инспектиране на цитати, сравняване на ревизии в Git и спускане в сесии или сурови траектории. Блокът с код по-долу илюстрира примерни команди за синтетична персона.

bash
# 1. Orient: the index is a map of everything known cat memory/knowledge/index.md # 2. Target: find pages that touch the question grep -Ril "kyoto\|sendai" memory/knowledge/ # 3. Read the page; follow context edges as needed cat memory/knowledge/projects/japan-universal-design-sprint.md cat memory/knowledge/entities/sora-city-laboratory.md # via [[wikilink]] cat memory/knowledge/entities/sapphir-mobility-coop.md # via [[wikilink]] # 4. Only if the claim must be verified: resolve evidence # city bases → [cite:1], [cite:10] → pplx://sessions/<id> # # Example (pseudo, replace with your real tool): # pplx-session-fetch 1eaf53d4-09e0-5823-bb96-c8662f582708 --slice <slice-id> # 5. Some evidence lives outside the sessions # meeting slots → [cite:15] → connector://google-calendar # # pplx-connector-fetch google-calendar --query "japan-sprint"

Агентите изследват този контекст чрез самонасочващ се цикъл, вместо чрез фиксиран тръбопровод. Следователно агентът може да продължи да търси, докато не бъде удовлетворен от намерените контексти. Агентът може също да избере кога да инспектира цитати и доказателства за намиране или проверка на детайли. Малък въпрос на предпочитание може да бъде приет директно от една страница на Brain, докато важно решение или конфликт между източници може да оправдае следването на цитата и четенето на оригиналния запис. Структурата, базирана на граф, позволява на агента да избира между конкретни следващи стъпки, вместо да търси безцелно свързана информация.

Блок-схема на агент, който изследва прогресивно Brain, като следва връзки между страници и цитати към сурови източници.
Агентът може да следва връзките в Brain към нови страници или източници на доказателства в Brain, докато се увери, че разполага с достатъчно контекст за задачата.

Материализиране на файлове

За да работи агентното изследване, агентът трябва да има достъп до цялото дърво memory/ чрез файловата система на пясъчната кутия. Копирането на цялото дърво локално при всяко зареждане на пясъчна кутия е скъпо и излишно, тъй като агентът няма да докосне преобладаващата част от тези файлове. Друга възможност би била да се използва отдалечена файлова система, така че агентите да имат достъп до всеки файл, без да го копират локално. Въпреки това агентите често извършват хиляди операции с файловата система в рамките на една единствена команда; ако всяка от тях се превърне в мрежова заявка, цената на двупосочния път започва да доминира в цикъла на изследване. При вътрешно тестване простите работни натоварвания на grep върху път, поддържан от отдалечен FUSE, бяха приблизително 400 до 500 пъти по-бавни от еквивалентните операции върху локални файлове.

Вместо това изграждаме локален работен набор от материализирани файлове, докато по-големият корпус остава зад система за извличане на памет. Computer зарежда първоначална карта (взета от скорошни спомени, сесии, резюмета и налично знание) в пясъчната кутия при зареждане. Агентите на Computer имат достъп до Memory Agent – субагент, който може да извършва семантично търсене и да зарежда нов набор от файлове. Когато необходимият контекст липсва, Computer може да извика Memory Agent с описание на необходимата информация. Memory Agent търси във файловете, като връща незабавен текстов синтез и материализира поддържащите записи като файлове под дървото на паметта. По този начин работният набор се разширява естествено и постепенно с течение на времето, запазвайки стабилни пътища и отношения на източниците за вече наличните доказателства.

Диаграма, показваща първоначалното зареждане на файлове заедно с извличането от Memory Agent при поискване, материализиращо файлове в пясъчната кутия.
Предварителното зареждане на сесии и семантичното извличане от Memory Agent зареждат първоначална карта на файловете, от които агентът най-вероятно ще се нуждае.

Този дизайн чисто решава проблема с тесното място на латентността. Съхраняването на съответните файлове локално гарантира, че операциите с файловата система, необходими за изследване, остават бързи, а пакетното извличане позволява на пула от материализирани файлове да расте, без да изисква отделни извиквания за всеки файл или зареждане на голям брой нерелевантни файлове. Дизайнът с вложени агенти също така дава на Computer предимствата на агентното извличане, без да изисква от главния агент да търси директно в пълния бекенд корпус всеки път, запазвайки собствения му прозорец на контекст за информацията с най-висока стойност.

Поддържане на Brain

Потребителите непрекъснато се учат от работата, която вършат, и разговорите, които водят, така че агентната памет трябва да прави същото. За да остане Brain полезен, той трябва да бъде кратко представяне на най-важните знания. Трябва да се създават нови страници за важни нови субекти, нова информация да се добавя към съответните страници на Brain, а остарелият контекст да се отстранява своевременно. Например, ако работата на потребителя се промени, Brain трябва да отрази тази промяна; той трябва да съдържа новата работа на потребителя и да дава приоритет на информацията, свързана с неговите нови отговорности и проекти.

Brain се поддържа от фонови агенти, които наричаме Dream. Агентите Dream работят офлайн върху паметта на базата на файлове, синтезирайки нова информация в актуализации на Brain. Внимателно дефинирахме обхвата и поведението на агентите Dream, за да изпълняват тази задача ефективно, заедно със специфични за Dream предпазни мерки (guardrails), за да се гарантира, че актуализациите на Brain са последователни и точни.

Dream: Фонови агенти за усъвършенстване на паметта

Агентите Dream работят в пясъчни кутии с достъп до същата файлова система и инструменти за четене, каквито би имала интерактивна сесия на Computer, но тяхната единствена цел е да подобрят контекста за бъдещи сесии. Всяко изпълнение започва от Brain, произведен от предишни изпълнения, вместо да възстановява контекста на потребителя от нулата. След това той използва този текущ Brain, за да се ориентира и произвежда актуализиран Brain, който да се използва при бъдещи изпълнения.

Диаграма на цикъла: интерактивните сесии захранват Dream, който актуализира Brain, което подобрява бъдещите сесии.
Агентите Dream работят във фонов режим, за да актуализират Brain, образувайки цикъл на самоусъвършенстване.

Агентът Dream получава среда и решава как да я изследва, вместо да получава фиксиран вход, изгладен в един единствен промпт. Той може да навигира във файлова памет, да използва одобрени инструменти за конектори само за четене, за да провери част от знанието, и да делегира ограничени части от работата на субагенти, включително Memory Agent. Обхватът и отговорностите на агента Dream са зададени като умение.

Най-общо казано, едно изпълнение на Dream се състои от 4 фази:

  1. Ориентиране: Агентът завършва подредена процедура за ориентиране. Той идентифицира авторитетния обхват, постоянните инструкции, дневника за изтриване, допълнителните входове и условията за спиране.
  2. О обобщаване на сесиите: За всяка сесия, която е нова (или има нови обръщения) от последната актуализация, агентът пише (или актуализира) кратко резюме на сесията.
  3. Прикрепване на факти към субекти: Агентът добавя всяко наблюдение, което счита за значимо, към неговото правилно място, което обикновено е уики страница. Той проверява и отправя заявки към автентифицирани конектори, когато има такива.
  4. Актуализиране на уикито за знания: Агентът актуализира уикито въз основа на своите открития. Той може да създава нови страници за трайни субекти, да ревизира страници, когато текущият синтез се е променил, или да добавя нови връзки или цитати, подкрепящи фактологично твърдение. Той може също така да избере да не прави промени, когато текущият граф вече е верен.

За да се гарантира, че всички актуализации на Brain са пълни и последователни, агентите пишат предложено състояние в подготвено изходно дърво. Никакви постоянни промени не се правят, докато агентът не направи всички актуализации, които счита за необходими. Координирането на тези решения в един единствен агентен процес прави възможно актуализирането на графа като цяло, а не като несвързани страници.

Диаграма на коридорите (swimlane) на изпълнение на Dream, произвеждащо предложени актуализации на страниците на Brain.
Агентите Dream използват съществуващия Brain и нова информация, за да предлагат и пишат актуализации.

Всички промени трябва да преминат два типа проверки за валидиране. Детерминистичните проверки за валидиране гарантират, че страниците са добре форматирани и отговарят на обективни критерии, като задължителен frontmatter и формат на цитиране. Проверките за семантична верификация гарантират, че предложеният синтез се поддържа от събраните доказателства и остава последователен с останалата част от графа. След като агентът приключи успешно, контролирана стъпка на синхронизация сравнява подготвения изход с предишното състояние и прилага промените в хранилището. Когато стъпката на синхронизация приключи, крайният набор от редакции може да се инспектира чрез историята на версиите в Git.

Валидиране на Brain

Една полезна система за памет трябва да запазва съответните доказателства, да ги извежда на повърхността при необходимост и да помага на агента да преобразува тези доказателства в точен отговор. Поради това оценяваме Brain на множество нива: контролирани офлайн аблации, непрекъснато свързано възпроизвеждане (paired replay) и рандомизирани производствени експерименти.

Офлайн оценки

Нашата основна офлайн оценка използва вътрешен набор от данни от 640 въпроса за 44 синтетични персони. Персоните възпроизвеждат получени от производството модели в каденцата на сесиите, броя на обръщенията, комбинацията от теми и плътността на фактите, като същевременно не съдържат текст на производствени заявки с цел запазване на поверителността на потребителите. Всеки акаунт се попълва чрез производствения тръбопровод за памет, включително извличане на памет, резюмета на разговори и компилирането на уикито за знания от Dream. За всеки въпрос правилният отговор е механично обвързан с конкретни доказателства, присъстващи в историята на акаунта.

Например за Надя – въведената по-рано синтетична персона на изследовател на достъпността, наборът от данни включва въпроса: „С кои организации се срещам в Киото и Сендай?“. Отговорът (Sora City Lab в Киото и Sapphir Mobility Coop в Сендай) се появява директно на съответната уики страница.

Сравняваме едни и същи въпроси и акаунти с активирано спрямо изключено компилирано уики за знания. Другите повърхности на паметта остават достъпни и при двете условия. Това изолира инкременталния принос на Brain, вместо да сравнява паметта с липса на памет. Като цяло Brain увеличи точността на отговорите от 0.600 на 0.661, което е ръст от 6.1 процентни пункта, а извличането на доказателства – от 0.573 на 0.625, което е ръст от 5.2 процентни пункта. Ефектът беше най-голям при въпросите относно предпочитанията (+10.2 пр. п.), времевото разсъждение (+8.6 пр. п.) и извличането на детайли от предишна активност (+6.9 пр. п.). При 84% от въпросите агентът доказуемо е докоснал източник, обвързан с точните доказателства.

Лентова диаграма, сравняваща точността на отговорите и извличането на доказателства със и без Brain по категории въпроси.
Brain подобрява производителността спрямо нашия вътрешен бенчмарк.

Проведохме също съпоставени аблации на Brain върху подмножества от два обществени бенчмарка. В LoCoMo премахването на уикито намали точността на отговорите средно с 4.6 процентни пункта при три изпълнения с различни модели. В LongMemEval-S то не доведе до статистически значима промяна. Този резултат е в съответствие с предназначената роля на Brain. LongMemEval-S тества предимно възстановяването на факти от отделни сесии, където основните транскрипции предоставят излишeн (redundant) път към отговора. LoCoMo поставя по-голям акцент върху доказателствата, разпръснати из разговори, говорители и дати, създавайки повече възможности за принос на междусесийния синтез на уикито.

Като цяло, с активиран Brain, производственият агент постигна 0.91 точност на отговорите в LongMemEval-S и 0.83 в LoCoMo. Тъй като тези експерименти използват подмножества от бенчмаркове, те не са окончателни резултати от бенчмаркове. Въпреки това аблациите все пак дават силен сигнал, че уикито подобрява производителността, особено когато доказателствата трябва да бъдат интегрирани между разговорите. Тъй като Brain е част от Computer, а не оптимизирана за конкретен бенчмарк система за извличане, вярваме, че конкурентоспособността само ще се увеличава с задачи, които повече приличат на производствени работни процеси.

Онлайн оценки

Офлайн наборите от данни не могат да уловят всяка характеристика на реалните потребителски истории, затова провеждаме и ежедневна съпоставена оценка върху пресни кохорти, получени от производството. На едни и същи фиксирани въпроси се отговаря спрямо съпоставено потребителско състояние с активиран и деактивиран Brain, след което се оценяват за точност, актуалност и извличане.

Предварителните резултати, докладвани на 18 юни, демонстрираха, че Brain увеличава точността на отговорите с 25% и извличането с 16%. Тези показатели на производителност продължават да се запазват; през последните 30 дни сесиите с активиран Brain надминаха контролните при всяко изпълнение и всяко оценено измерение. В абсолютни стойности потребителите на Computer се радват на подобрения от 9.3 пункта в точността, 8.0 пункта в актуалността и 8.9 пункта в извличането. Траекториите с активиран Brain също така използват приблизително 15% по-малко токени, струват с 10% по-малко и завършват генерирането с 10% по-бързо.

Графика на резултатите от онлайн свързаната оценка, показваща подобрения в точността, актуалността и извличането наред с намаленията на токените, разходите и латентността.
Brain повишава качеството на отговорите и намалява разходите.

Непрекъснато подобрение

Продължаваме да усъвършенстваме Brain, за да предоставим най-доброто изживяване с паметта на потребителите. Една скорошна промяна поставя компактния индекс на Brain директно в първоначалния контекст на агента, вместо да изисква от агента да го открие и прочете по-късно. В рандомизиран експеримент това третиране с предварително запълване увеличи използването на Brain и намали неудовлетворението, свързано с паметта, с 6.9%.

Инструментът за офлайн оценка също така служи като част от тръбопровод за автономно подобряване. Предложените промени в субагента за памет на Brain, уменията за извличане и промптите се изпълняват чрез съпоставени аблации върху нашия вътрешен набор от данни и обществени бенчмаркове. Агентите на Computer могат да итерират върху резултатите автономно, запазвайки промяната, делтата и цената на всяка итерация като траен запис и запазвайки само промените, които местят числата. Резултатът е система, в която оценителите на Brain са и неговите оптимизатори, стимулиращи бъдещи подобрения.

Заключение

Непрекъснатото обучение е едно от определящите предизвикателства за изграждането на агентни системи, които работят с седмици и месеци. Вярваме, че архитектурите на паметта се излагат най-добре като среди, които агентите могат директно да изследват, използвайки обичайните си комплекти от инструменти. Излагането на паметта като файлова система, с Brain като структурирано уики за знания отгоре, прави контекста ефективно навигируем чрез прости и познати инструменти.

Brain е проектиран за самоусъвършенстване, така че системата за памет да продължава да се подобрява с нарастването на употребата. Фоновите агенти Dream дестилират прясна информация в актуализации на Brain, което гарантира, че фоновите агенти винаги започват нова сесия с организиран изглед на най-новия контекст. Инструментът за оценка служи и като изпитателна площадка за цикли на автоизследване на основната архитектура на паметта и интерфейсите, ориентирани към агентите.

Brain вече доведе до по-точни и ефективни сесии на агентите, като същевременно намали изразходваните токени. Нашето внимателно съвместно проектиране на Brain със стека за производство на Computer гарантира, че тези печалби се превръщат директно в реални ползи за потребителите.

Продължаваме да изграждаме повече възможности за подобряване на качеството на паметта на Computer. Междувременно за потребителите с активиран Brain паметта ще се подобрява с всяка сесия.