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

Диаграмма, показывающая предварительную загрузку файлов и поисковое извлечение агентом памяти по требованию с материализацией файлов в песочнице.
Предварительная загрузка сеанса и семантическое извлечение агентом памяти загружают начальную карту файлов, которые с наибольшей вероятностью понадобятся агенту.

Такая конструкция элегантно решает проблему узкого горлышка задержки. Локальное хранение релевантных файлов гарантирует, что операции с файловой системой, необходимые для исследования, остаются быстрыми, а пакетное извлечение позволяет пулу материализованных файлов расти без необходимости отправки отдельных вызовов для каждого файла или загрузки большого количества нерелевантных файлов. Конструкция с вложенными агентами также дает Computer преимущества агентичного извлечения без необходимости для основного агента напрямую искать весь бэкенд-корпус каждый раз, сохраняя собственное окно контекста для информации наивысшей ценности.

Поддержание Brain в актуальном состоянии

Пользователи постоянно учатся на выполняемой работе и проводимых беседах, поэтому агентской памяти необходимо делать то же самое. Чтобы Brain оставалась полезной, она должна быть кратким представлением наиболее важных знаний. Новые страницы должны создаваться для важных новых сущностей, новая информация должна добавляться на соответствующие страницы Brain, а устаревший контекст должен вовремя удаляться. Например, если у пользователя меняется должность, Brain должна отражать это изменение; она должна содержать новую должность пользователя и расставлять приоритеты для информации, связанной с его новыми обязанностями и проектами.

Brain поддерживается фоновыми агентами, которые мы называем Dream. Агенты Dream работают в офлайн-режиме с файловой памятью, синтезируя новую информацию в обновления Brain. Мы тщательно определили масштаб и поведение агентов Dream для эффективного выполнения этой задачи, а также предусмотрели специфичные для Dream защитные механизмы, обеспечивающие согласованность и точность обновлений Brain.

Dream: фоновые агенты для уточнения памяти

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

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

Агент Dream получает среду и принимает решение о том, как ее исследовать, вместо того чтобы получать фиксированный ввод, объединенный в единый промпт. Он может перемещаться по памяти на основе файлов, использовать утвержденные коннекторы только для чтения для проверки фрагмента знаний и делегировать ограниченные части работы субагентам, включая агента памяти. Масштаб и обязанности агента 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 память будет улучшаться с каждым сеансом.