Агентам, работающим с корпоративными регламентами, инструкциями, вики-страницами, тикетами и кодом, приходится иметь дело с разрозненными по разным системам и командам знаниями. Найти подходящий фрагмент текста — это лишь начало. Им также необходимо определить, какие правила действуют, что изменилось и как один источник влияет на другой.
Уровень персистентной памяти сохраняет знания и связи, чтобы агенты могли повторно использовать их в различных задачах. Без этого агентам часто приходится заново восстанавливать понимание при каждом вопросе, что делает их работу дорогостоящей и чрестой ошибок. С этим особенно сложно столкнуться в сфере банкинга и страхования, где правила и руководства часто дополняют или заменяют друг друга.
Мы протестировали OpenWiki, наш компилятор вики с открытым исходным кодом, в качестве такого слоя памяти. При решении вопросов, требующих установления связей между источниками, вики повысила точность агента примерно в 5 раз по сравнению с простым поиском. Добавление графа фактов, который связывает утверждения вики с подтверждающими фрагментами и связывает родственные источники, повысило точность еще на 27% и удвоило согласованность цитирования.
Зачем нужна скомпилированная вики?
Пайплайны RAG часто используют семантический или гибридный поиск для извлечения изолированных фрагментов, оставляя агентам задачу самостоятельной сборки взаимосвязей между ними. Мы изучали возможности улучшения поиска с помощью агентского RAG и фильтрации метаданных на основе графов, но поиск релевантных отрывков — это лишь часть работы. Вопросы, затрагивающие несколько источников, требуют отслеживания перекрестных ссылок, разрешения противоречивых правил и понимания зависимостей. Память сохраняет это понимание, избавляя агентов от необходимости воссоздавать его для каждого вопроса.
Скомпилированная вики обеспечивает этот уровень памяти, синтезируя исходный материал в связанные страницы, которые объясняют ключевые концепции и связи между ними. Вики обновляется по мере изменения источников, предоставляя агентам контекст, который они могут использовать повторно.
OpenWiki, наш инструмент командной строки с открытым исходным кодом, созданный на базе Deep Agents, генерирует такие вики со ссылками на первоисточники. Изначально мы создали его для того, чтобы агентам по программированию не приходилось заново открывать архитектуру и поведение кода для каждой задачи.
Каждое утверждение в OpenWiki опирается на тезис — утверждение, связанное со строками исходного текста и их хэшем. Когда эти строки меняются, хэш меняется, что позволяет OpenWiki помечать затронутые утверждения без обращения к модели, экономя токены и делая обнаружение устаревших данных более детерминированным. Только эти утверждения отправляются модели для подтверждения, доработки или отзыва, что позволяет слою памяти кэшировать и исправлять самого себя по мере изменения источников. Мы подробно описываем это в статье Building self-correcting memory in OpenWiki.
Создание тестовой библиотеки документов
Мы создали синтетическую библиотеку страховых документов, состоящую из 111 объемных файлов. Мы выбрали страхование, потому что полисы и приложения к ним часто ссылаются друг на друга, вносят изменения и отменяют друг друга; это именно та междокументная зависимость, которая затрудняет поиск.
Для оценки бенчмарка мы создали реестр из 972 фактов и контролировали, где именно должен появиться каждый факт, как документы ссылаются друг на друга и что изменилось между версиями. Окружающий текст мы сгенерировали с помощью языковой модели и провели автоматические проверки, чтобы убедиться в наличии необходимых фактов.
Наконец, мы намеренно сделали корпус документов хаотичным, смешав устаревшие версии, противоречия, цепочки непрямых ссылок, различную формулировку и очень длинные документы, чтобы точнее воспроизвести условия, с которыми агенты сталкиваются в реальных корпоративных базах знаний.
Как мы настраивали наш эксперимент
Мы оценили работу одного и того же агента поиска в двух условиях: Поиск (поиск по ключевым словам в исходных документах) и Вики (тот же агент с доступом к скомпилированной OpenWiki и связанной с источниками вики). Базовая модель, инструкции, документы и вопросы оставались неизменными — менялся только доступ агента к скомпилированной памяти.
Мы протестировали 80 простых вопросов для поиска и 50 связанных вопросов, требующих отслеживания зависимостей между документами (например, определение того, что зависит от какого-либо положения или затрагивается при его изменении). Мы задавали каждый вопрос три раза, чтобы измерить разброс результатов от запуска к запуску.
Метрики (что означает «лучше»):
- Точность (0–1): проверяющий оценивал ответы и цитируемые доказательства по контрольному списку из реестра 972 фактов (начисляя баллы за необходимые факты и штрафуя за противоречия).
- Согласованность (0–1): совпадение цитируемых доказательств в трех запусках (среднее попарное сходство Жаккара для наборов цитат). Эта метрика измеряет, насколько надежно агент обосновывает свои ответы одними и теми же источниками, а не правильность самих ответов.
- Стоимость и задержка (Cost + latency): расходы на модель (в долларах США) и реальное время выполнения (wall-clock time) на один вопрос.
В чем вики помогла, а с чем возникли трудности
OpenWiki скомпилировала библиотеку из 111 документов в вики размером примерно в одну десятую от исходного объема за $4.15. Последующее добавление 17 документов обошлось примерно в $0.09 за каждый. Приведенный ниже анализ исключает затраты на компиляцию и обновление, отражая только расходы на поиск и генерацию ответов.
Мы использовали простые запросы в качестве контроля. Эти вопросы, требующие обращения лишь к одному фрагменту текста, почти не задействуют контекст страхования по нескольким документам, поэтому мы не ожидали, что вики сильно поможет. Результаты поиска и вики оказались схожими (точность 0.84 против 0.83; пересечение цитат 0.72 против 0.74; $0.020 против $0.021 за правильный ответ), в то время как время отклика увеличилось с 9 до 12 секунд.
Связанные вопросы требовали логического вывода на основе нескольких источников с использованием доменно-специфичных связей. Здесь вики увеличила точность примерно в 5 раз: с 0.10 при обычном поиске до 0.52. Скомпилированный контекст помог агенту применить предметные знания и найти релевантные связи за меньшее количество вызовов инструментов, снизив стоимость правильного ответа примерно с $0.55 до $0.19.
Несмотря на рост точности и снижение затрат, извлечение доказательств агентом вики оставалось несогласованным. Пересечение цитат снизилось с 0.74 на простых запросах до 0.25 на связанных вопросах. Стабильность цитирования не измеряет правильность ответа, но изменение доказательств может изменить сам ответ, особенно когда источники противоречат друг другу. Для критически важных бизнес-процессов командам нужны воспроизводимые и проверяемые ответы, а не просто более высокая средняя точность.
Вики помогла агенту применять предметные знания при работе с разными источниками. Оставшейся задачей было сделать путь к подтверждающим доказательствам более повторяемым.
Добавление графа фактов
Чтобы сделать поиск более стабильным, мы добавили легковесный граф фактов: карту, которая превращает цитаты вики в явные типизированные связи между утверждениями, страницами вики, абзацами и темами. Цитаты в OpenWiki — это текстовые ссылки в файлах Markdown. Граф делает их надежными, материализуя в виде типизированных связей. Это дает агенту стабильный путь, по которому можно идти, вместо того чтобы заново находить те же ссылки с помощью поиска.
Мы построили этот граф в два этапа:
- Сохранение каждого абзаца как нового примитива. Детерминированный процесс разбивает каждый документ на абзацы и присваивает каждому уникальный идентификатор. Эти абзацы становятся атомарными единицами информации, связывая утверждения с точными поддерживающими фрагментами, а не с целыми документами.
- Соединяйте отрезки текста типизированными связями. Мы связали абзацы, утверждения и страницы вики типизированными связями: утверждения ссылаются на абзацы, более новые документы заменяют старые, а разделы указывают на другие документы (relates_to). Каждая связь определяет отношение, а не просто соединение. Мы создавали связи двумя способами. Некоторые из них извлекаются детерминированно из ссылок в документах. Поскольку утверждения в вики уже содержат текстовые цитаты, мы можем материализовать типизированные связи, такие как relates_to и supersedes, без дополнительных вызовов моделей.
Граф был построен менее чем за секунду и разрешил каждую явную перекрестную ссылку в тестовой библиотеке, поэтому агент мог следовать по ссылкам, а не заново находить связи при каждом вопросе.
Задача графа — навигация по доказательствам, а не моделирование всего, что знает организация. Вики по-прежнему обеспечивает синтез. В отличие от конвейера графов знаний с интенсивным извлечением, этот слой повторно использует существующие ссылки и цитаты, а не извлекает и согласовывает сущности с помощью модели. Создание не требует дополнительных вызовов моделей, хотя связи, полученные из вики, все же зависят от точности ее цитат, сгенерированных моделью.
Два инструмента позволяют агенту ориентироваться на карте: locate находит начальную точку, соответствующую вопросу, а expand следует по ее соединениям к поддерживающим отрезкам и связанным документам. Там, где есть только один путь, expand следует по нему автоматически; там, где путь разветвляется, агент выбирает, куда двигаться дальше. Этот паттерн поиска релевантных узлов и сбора связанного контекста также встречается в системах GraphRAG, таких как Microsoft’s GraphRAG.
Выше точность, ниже затраты, быстрее ответы
Добавление явных путей доказательств улучшило все показатели по сравнению с использованием одной лишь вики. Точность выросла на 27%, согласованность цитирования удвоилась, среднее время ответа сократилось на 40%, а стоимость правильного ответа снизилась на 58%. Граф доказательств дополнил контекст вики более целенаправленным поиском, повысив как точность, так и согласованность, не делая агента полностью детерминированным.
Когда добавление памяти оправдывает затраты?
Самый весомый аргумент в пользу скомпилированной вики — это многократное рассуждение по разным источникам. В нашем эксперименте вики помогла агенту применять доменные отношения, а не воссоздавать их с помощью поиска. Но один лишь слой памяти не сделал поиск доказательств стабильным. Добавление явных связей графа повысило согласованность цитирования и точность, одновременно снизив объем работы по поиску.
Вики обеспечила надежную основу для легковесного графа доказательств, полученного детерминированно из существующих цитат и ссылок на документы. Это позволило нам добавить явные пути доказательств без дополнительных вызовов моделей или необходимости моделировать все, что знает организация.
Стоит ли вики инвестиций, зависит от повторного использования. Указанные нами затраты на ответы не включают компиляцию, а добавление документов стоило около 0,09 доллара за каждый. Поглощение данных и текущее обслуживание могут перевесить экономию на поиске для простых запросов, где чистый поиск работал так же точно и быстрее, особенно в масштабах предприятия.
Баланс меняется, когда несколько агентов многократно отвечают на вопросы, охватывающие одни и те же несвязанные источники. Общая вики сохраняет связи между этими источниками, в то время как связи графа направляют агентов к подтверждающим доказательствам. В наших тестах эта комбинация давала более точные ответы при меньшей стоимости правильного ответа. При достаточной частоте повторного использования экономия на избежании повторного восстановления контекста может компенсировать затраты на создание и поддержание памяти.
Что дальше
В дальнейшем мы хотим создавать вики более динамично, компилируя и сохраняя только тот контекст, который нужен агентам для вопросов по нескольким источникам, а не целые репозитории.
Мы также хотим исследовать утверждения и типизированные связи в качестве основы для других видов памяти агентов. Связывание знаний с доказательствами и обнаружение их изменений может помочь заземлить семантическую память (факты), эпизодическую память (что произошло) и процедурную память (как делать вещи).
Хотите добавить вики в своих агентов? Ознакомьтесь с нашими ресурсами OpenWiki:
Благодарности
Спасибо Колину Фрэнсису (Colin Francis) и Нику Холлону (Nick Hollon) за их мысли об OpenWiki и оценках!

.png)








