Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
LLM-агента научили читать длинные структурированные документы, не разрывая связанные поля и не теряя их положение в иерархии. В нерецензированном препринте команда Zhejiang University и Alibaba Group, которая сама получила все числа, показала средний прирост качества на 3,61%. Подход можно добавить к существующему агенту с памятью без дополнительного обучения модели.
Почему плоские сегменты теряют связи внутри документа
Агент с памятью обрабатывает документ частями и после каждой части обновляет ограниченный буфер с важными фактами. Так он работает с входом, который не помещается в контекст LLM целиком.
Обычно документ режут по фиксированному числу токенов. Для обычного текста это приемлемый компромисс, но в API-ответе граница может пройти между полями одной записи. Модель увидит имя в текущем сегменте, значение — в следующем, а связь между ними должна будет восстановить сама.
Плоский сегмент также не показывает, где находился фрагмент: внутри какого объекта, массива или HTML-элемента. Поля с одинаковыми названиями из разных ветвей становятся внешне похожими, хотя относятся к разным сущностям.
Последовательное обновление памяти создаёт ещё одну проблему. Пока агент доходит до родительского узла и сравнивает несколько дочерних записей, сведения из ранних записей могут исчезнуть после промежуточных сжатий памяти. Особенно это мешает подсчётам, поиску экстремумов и сбору полей из нескольких записей.
TreeAgent сначала представляет вход как дерево. Объекты и массивы становятся внутренними узлами, а значения — листьями. Если поддерево помещается в бюджет сегмента, система оставляет его целиком; соседние небольшие поддеревья с общим родителем объединяет, сохраняя исходный порядок.
К каждому сегменту добавляется структурный путь — цепочка предков и позиция фрагмента среди соседей. Агент получает не только локальное содержимое, но и его место в полном документе. Для слишком длинного текстового листа TreeAgent всё же применяет разбиение, но сохраняет путь исходного узла.
Размер сегмента подбирается так, чтобы структурное разбиение создавало примерно столько же шагов, сколько плоское. В работе доказана граница для такого подбора: она компенсирует свободное место, которое остаётся, когда связанные поддеревья нельзя разрезать ради полного заполнения сегмента.
После обработки каждого сегмента TreeAgent сохраняет состояние памяти. Связи дерева соединяют память дочерних узлов с последним сегментом их родителя. Перед обновлением агент извлекает из этих состояний фрагменты, относящиеся к запросу, поэтому ранняя деталь может попасть прямо на уровень родителя, не проходя через всю цепочку промежуточных сжатий.
Структура помогла разным агентам, а не одной конфигурации
TreeAgent проверили с четырьмя системами: MemAgent, InfMem, MemReread и ReMemR1. Восемь задач требовали находить поля внутри записей и между ними, считать подходящие записи, определять частые значения и числовые экстремумы.
Входы были построены из прикладных данных в JSON, HTML, YAML и JavaScript. Их длина составляла от 8 тысяч до 1 миллиона токенов. Это очерчивает область результата: длинные данные уже имеют дерево, а задача сводится к поиску и агрегации по его узлам.
Для каждого агента меняли способ разбиения и доступа к прошлой памяти, но сохраняли параметры модели, процедуру обновления памяти и подготовку ответа. Все системы улучшили средний результат по наборам данных, хотя величина эффекта зависела от конкретной задачи и базового агента.
Последовательное отключение компонентов показало, что результат не сводится к одному удачному приёму. Разбиение по поддеревьям дало основной начальный эффект, структурные пути добавили улучшение, а прямой доступ к ранним состояниям памяти помог поверх первых двух механизмов.
Когда TreeAgent стоит добавить в план разработки
Подход подходит продуктам, где агент последовательно читает большие API-ответы, DOM-деревья, конфигурации или разобранный код. Если парсер уже строит дерево, TreeAgent можно испытать как слой вокруг существующего агента: заменить нарезку, передавать путь узла и хранить связи между состояниями памяти.
Это не бесплатная замена. На наборе JSON число обращений к модели выросло на 3,7–7,6%, а суммарный объём входных токенов изменился от снижения на 5,7% до роста на 4,0%. Экономия токенов поэтому не гарантирована, а при планировании нужно отдельно измерять задержку и стоимость обращений.
Практический эксперимент можно провести без переобучения: оставить прежнюю модель и логику ответа, затем сравнить плоское и структурное разбиение на запросах продукта. Основные метрики — точность связывания полей, качество агрегации, число обращений к модели и суммарный вход.
Для неструктурированной прозы и систем, которые не обновляют память последовательно, работа не даёт прямого основания менять архитектуру. Здесь дерево входа не предоставляет тех связей, на которых строится TreeAgent.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



