Brain: агентична пам'ять як база знань у форматі вікі

Структурована файлова система Markdown із можливістю відстеження та самовдосконалення, яка компілюється в автономному режимі та використовується за запитом.

АвториPerplexity Engineering

Користувачі Computer виконують роботу, яка охоплює місяці та сотні сеансів. До десятого сеансу система має бути значно продуктивнішою, ніж на першому. Вона повинна накопичувати контекст про користувача, його вподобання та вже виконану роботу.

Наприклад, коли Computer просять намалювати діаграму робочого процесу, який користувач пояснював раніше, він має згаритися деталей і використати їх для створення та виведення фігури в улюбленому стилі користувача. Користувачеві не потрібно повторно пояснювати деталі робочого процесу або підтверджувати свою перевагу PDF-формату над артефактами PNG; система повинна вміти точно відновити цей контекст із минулих сеансів і застосувати його автоматично.

Пам'ять є основою безперервного вдосконалення агентів. Ефективна система пам'яті має бути структурованою, такою, що піддається відстеженню, і адаптивною, дозволяючи агентам здійснювати пошук із належною повнотою й глибиною для кожного завдання, ґрунтуючись на найактуальнішій інформації в кожному рішенні.

Вступ

Наділення агентів релевантним контекстом — багатогранна проблема. По-перше, агенти повинні знати, що існує і як до цього отримати доступ. По-друге, коли вони знаходять корисну інформацію, вони повинні бути впевнені, що вона є повною, точною та актуальною. Ізольований факт має обмежену цінність, якщо агент не може знайти пов'язану інформацію, перевірити, чи походить вона з надійного джерела, і переконатися, що її не потрібно оновлювати свіжішим спостереженням.

Пряме завантаження статичних файлів пам'яті в контекст моделі максимізує доступність для агентів, але створює класичний компроміс між точністю та повнотою. Занадто велика кількість інформації наситить вікно контексту агента елементами з дедалі меншою актуальністю, тоді як занадто мала погіршить якість відповідей через нестачу релевантного контексту. Натомість доступ до зовнішніх баз даних за запитом є більш гнучким, але перекладає тягар навігації на агента. Векторні бази даних часто зберігають роз'єднані фрагменти, а графові бази даних вимагають від агентів знання того, як ефективно робити запити.

Нещодавно ми представили Brain — ключовий компонент системи пам'яті Computer, який поєднує найкращі переваги обох підходів. Brain — це структурована база знань у форматі вікі, яка розташована поверх статичних файлів пам'яті та доказів. Цитати пов'язують твердження з їх джерелами, а пов'язані шматочки інформації з'єднані латерально. Організована вікі робить контекст доступним для навігації на вимогу, тоді як детальні артефакти зберігаються у шарі під нею.

База знань Brain у форматі вікі, представлена у вигляді графа, де сутності є вузлами, а ребра з'єднують пов'язані теми.
Приклад системи Brain на основі синтетичної персони.

Brain підключається до комплексної системи пам'яті з трьома ключовими компонентами: сховище постійної пам'яті, агенти переднього плану, які використовують пам'ять для відповіді на запити, та фонові агенти, які оновлюють і вдосконалюють пам'ять. Наступна ілюстрація зображує ці компоненти, розташовані в загальній архітектурі системи Brain.

Архітектурна діаграма, що показує постійне сховище пам'яті, агенти переднього плану, які читають пам'ять, і фонові агенти, які оновлюють пам'ять.
Система пам'яті складається зі спільної постійної пам'яті, агентів переднього плану, які використовують пам'ять, і фонових агентів, які оновлюють пам'ять.

У цій статті ми детально описуємо кожен рівень, пояснюючи, як Brain організовує пам'ять, як її використовують агенти та як фонові процеси підтримують її в актуальному стані. Ми також представляємо результати внутрішніх оцінювань, які підтверджують ефективність дизайну Brain і демонструють, що він покращує продуктивність агентів із меншими витратами.

Організація та зберігання пам'яті

Пам'ять потребує подання, яке масштабується до повної історії користувача, не змушуючи вміщувати кожен фрагмент контексту в промпт. Система пам'яті Computer представляє постійний контекст як файлову систему. Brain синтезує знання з першоджерел, поєднуючи пов'язані теми та зв'язуючи твердження із сеансами й файлами, які їх підтримують. Ця структура, детально описана нижче, дозволяє нам організувати пам'ять у формі, яка особливо добре підходить для агентів.

Пам'ять на основі файлової системи

Сеанси Computer вже виконуються в пісочниці з файловою системою, оболонкою та утилітами вводу-виводу. Розробляючи 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 із вбудованими вікі-посиланнями та ребрами цитування.
Brain — це система файлів Markdown.
Підграф із прикладу вікі-сторінки Brain, візуалізований як граф пов'язаних сутностей і джерел.
Вбудований контекст і ребра доказів утворюють структуру графа для зручної навігації.

Brain підтримує систему Git для збереження історії версій, що відповідає її постійному розвитку. Сторінки можна редагувати з часом, тоді як журнали змін фіксують ключові оновлення та дозволяють агентам легко переглядати попередні версії й відмінності (diff). Це також сприяє координації агентів, що є критично важливим, оскільки кілька агентів можуть одночасно використовувати та оновлювати 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 мають доступ до агента пам'яті — субагента, який може виконувати семантичний пошук і завантажувати новий набір файлів. Коли потрібний контекст відсутній, Computer може викликати агента пам'яті з описом необхідної інформації. Агент пам'яті здійснює пошук по файлах, повертаючи миттєвий текстовий синтез і матеріалізуючи підтримуючі записи як файли в дереві пам'яті. У такий спосіб робочий набір розширюється природно й поступово з часом, зберігаючи стабільні шляхи та зв'язки джерел для вже наявних доказів.

Діаграма, що показує попереднє завантаження файлів плюс отримання даних агентом пам'яті (Memory Agent) за запитом із матеріалізацією файлів у пісочниці.
Попереднє завантаження сеансів і семантичне пошукове отримання за допомогою агента пам'яті завантажують початкову карту файлів, які найімовірніше знадобляться агенту.

Цей дизайн чудово вирішує проблему вузького місця затримки. Зберігання релевантних файлів локально гарантує, що операції з файловою системою, необхідні для дослідження, залишаються швидкими, а пакетне отримання дозволяє пулу матеріалізованих файлів зростати без необхідності окремих викликів для кожного файлу або завантаження великої кількості нерелевантних файлів. Дизайн із вкладеними агентами також надає Computer переваги агентського пошуку без необхідності для основного агента щоразу безпосередньо шукати в повному бекенд-корпусі, зберігаючи власне вікно контексту для найціннішої інформації.

Підтримка Brain

Користувачі постійно навчаються на роботі, яку вони виконують, і розмовах, які вони ведуть, тому агентична пам'ять повинна робити те саме. Щоб Brain залишалася корисною, вона має бути лаконічним поданням найважливіших знань. Слід створювати нові сторінки для важливих нових сутностей, додавати нову інформацію до відповідних сторінок Brain і вчасно видаляти застарілий контекст. Наприклад, якщо робота користувача змінюється, Brain має відображати цю зміну; вона повинна містити нову роботу користувача та надавати пріоритет інформації, пов'язаній із його новими обов'язками та проєктами.

Brain підтримується фоновими агентами, яких ми називаємо Dream. Агенти Dream працюють в автономному режимі на основі файлової пам'яті, синтезуючи нову інформацію в оновлення Brain. Ми ретельно визначили сферу застосування та поведінку агентів Dream для ефективного виконання цього завдання разом із засобами захисту (guardrails), специфічними для Dream, щоб забезпечити узгодженість і точність оновлень Brain.

Dream: фонові агенти для вдосконалення пам'яті

Агенти Dream працюють у пісочницях із доступом до тієї самої файлової системи та інструментів лише для читання, які мав би інтерактивний сеанс Computer, але їхня єдина мета — покращити контекст для майбутніх сеансів. Кожен запуск починається з Brain, створеної попередніми запусками, замість того щоб відновлювати контекст користувача з нуля. Потім вона використовує цю поточну Brain для орієнтації та створює оновлену Brain для використання в наступних запусках.

Діаграма циклу: інтерактивні сеанси живлять Dream, який оновлює Brain, що покращує майбутні сеанси.
Агенти Dream працюють у фоновому режимі, щоб оновлювати Brain, утворюючи цикл самовдосконалення.

Агент Dream отримує середовище та приймає рішення про те, як його досліджувати, замість того щоб отримувати фіксований вхідний рядок, зведений до одного промпту. Він може орієнтуватися у файловій пам'яті, використовувати затверджені інструменти-конектори лише для читання для перевірки певного знання та делегувати обмежені частини роботи субагентам, зокрема агенту пам'яті (Memory Agent). Масштаб і обов'язки агента Dream визначено як навичку.

Загалом запуск Dream складається з 4 етапів:

  1. Орієнтація: Агент виконує впорядковану процедуру орієнтації. Він визначає авторитетну область застосування, постійні інструкції, журнал видалення, додаткові вхідні дані та умови зупинки.
  2. Підсумок сеансів: Для кожного нового сеансу (або сеансу з новими ходами) з моменту останнього оновлення агент пише (або оновлює) короткий підсумок сеансу.
  3. Прив'язка фактів до тем: Агент додає кожне спостереження, яке він вважає значущим, до відповідного місця призначення, яким зазвичай є вікі-сторінка. Він опитує автентифіковані конектори, коли вони доступні.
  4. Оновлення бази знань у форматі вікі: Агент оновлює вікі на основі своїх висновків. Він може створювати нові сторінки для довгострокових тем, переглядати сторінки, коли поточний синтез змінився, або додавати нові посилання чи цитати на підтримку фактичного твердження. Він також може не вносити жодних змін, якщо поточний граф уже правильний.

Щоб будь-які оновлення Brain були повними та узгодженими, агенти записують запропонований стан у проміжне вихідне дерево. Жодні постійні зміни не вносяться, доки агент не зробить усі оновлення, які вважає за потрібне. Координація цих рішень в одному агентичному процесі дає змогу оновлювати граф у цілому, а не як непов'язані сторінки.

Діаграма послідовностей запусків Dream, що створює пропоновані оновлення для сторінок Brain.
Агенти Dream використовують наявну Brain та нову інформацію, щоб пропонувати й писати оновлення.

Будь-які зміни мають пройти два типи перевірок. Перевірки детермінованої валідації гарантують, що сторінки добре сформовані та відповідають об'єктивним критеріям, таким як обов'язковий блок метаданих (frontmatter) та формат цитування. Семантичні перевірки підтверджують, що запропонований синтез підкріплений зібраними доказами та залишається узгодженим із рештою графа. Після успішного завершення роботи агента етап контрольованої синхронізації порівнює поетапний вихідний стан із попереднім і застосовує зміни до репозиторію. Після завершення етапу синхронізації остаточний набір змін можна перевірити через історію версій Git.

Перевірка Brain

Корисна система пам'яті має зберігати релевантні докази, надавати їх у разі потреби та допомагати агенту перетворювати ці докази на правильну відповідь. Тому ми оцінюємо Brain на кількох рівнях: контрольовані автономні абляції, безперервне парне відтворення та рандомізовані експерименти в продакшні.

Автономні оцінювання

Наше основне автономне оцінювання використовує внутрішній набір даних із 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 переважно тестує відновлення фактів із окремих сеансів, де базові стенограми забезпечують резервний шлях до відповіді. 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 пам'ять покращуватиметься з кожним сеансом.