Знаете, в мире ИИ постоянно происходят какие-то подвижки. И вот очередная новость, которая заставляет задуматься: исследователи из Национального университета Сингапура представили MRAgent – фреймворк, который кардинально меняет представление о том, как большие языковые модели (LLM) работают с памятью.
Проблема, которую они решают, стара как мир (в контексте ИИ, конечно): при выполнении сложных, долгосрочных задач контекстное окно LLM забивается так быстро, что модель начинает выдавать шум вместо полезной информации. Классический подход "нашел – подумал" (retrieve-then-reason) просто не справляется. Это как пытаться построить небоскреб, используя только молоток и гвозди – рано или поздно упрешься в потолок.
Основные проблемы пассивного поиска
В традиционных системах ИИ сначала ищут нужные документы (через векторный поиск или обход графов), а затем передают их LLM для анализа. Но это пассивное извлечение имеет три ключевых недостатка:
- Невозможность корректировки: Если ИИ нашел документ, но понял, что там не хватает какой-то важной детали (например, даты или имени), он не может тут же сформулировать новый, более точный запрос. Все, поезд ушел.
- Поверхностные совпадения: Фиксированные показатели схожести и предопределенные структуры графов часто приводят к тому, что в контекстное окно LLM попадает много нерелевантной "воды", что ухудшает качество анализа.
- Жесткость систем: Текущие системы сильно полагаются на заранее построенные структуры, такие как топ-k результатов и статические функции релевантности. Это ограничивает гибкость, необходимую для взаимодействия с пользователем в долгосрочных и непредсказуемых сценариях.
Исследователи утверждают, что для преодоления этих ограничений нужно переходить к "активному и ассоциативному процессу реконструкции" памяти, вдохновленному когнитивной нейронаукой. Идея в том, что воспоминание должно разворачиваться последовательно, а не быть пассивным считыванием из статичной базы данных. Система стартует с мелких, конкретных триггеров из запроса пользователя (имя, действие, место) и, следуя по "метаданным-камням", собирает крошечные кусочки информации, каждый из которых направляет следующий шаг, пока не сложится полная картина.
Как MRAgent воплощает активную реконструкцию памяти
MRAgent (Memory Reasoning Architecture for LLM Agents) рассматривает память не как статичную базу, а как интерактивную среду. При обработке сложного запроса, LLM использует свои способности к рассуждению, чтобы исследовать множество потенциальных путей поиска по структурированному графу памяти. На каждом шаге LLM оценивает собранные промежуточные данные и итеративно оптимизирует свой поиск: он выводит новые ограничения для поиска, идет по наиболее перспективным путям и отсекает нерелевантные ветки. Это позволяет MRAgent находить глубоко спрятанную информацию, не забивая контекст LLM ненужным мусором.
Чтобы сделать такое активное исследование эффективным и масштабируемым, фреймворк использует механизм "Cue-Tag-Content" (Подсказка-Метка-Содержание). Это многоуровневый ассоциативный граф с тремя типами узлов:
- Cues (Подсказки): Мелкие ключевые слова, такие как сущности или атрибуты контекста, извлеченные из взаимодействия с пользователем.
- Content (Содержание): Собственно, блоки памяти. Они разделены на многоуровневые слои: эпизодическая память для конкретных событий и семантическая память для устойчивых фактов и предпочтений пользователя.
- Tags (Метки): Семантические "мостики", суммирующие реляционные ассоциации между конкретными Подсказками и Содержанием.
Эта структура обеспечивает высокоэффективный двухэтапный процесс извлечения. Сначала LLM переходит от Подсказок к кандидатам на Метки. Поскольку Метки явно показывают семантические отношения и структурные ассоциации данных, агент оценивает эти краткие сводки, чтобы определить их релевантность. LLM идентифицирует перспективные пути и отбрасывает нерелевантные ветки, прежде чем тратить вычислительные ресурсы и токены на доступ к детальному, "тяжелому" содержимому памяти.
Представим пример: пользователь спрашивает ИИ: "Как Нейт использовал призовые деньги, когда выиграл свой третий турнир по видеоиграм?". MRAgent сначала извлекает из запроса мелкие подсказки: "Нейт", "турнир по видеоиграм", "выиграл". Затем агент сопоставляет эти подсказки с графом памяти и смотрит на доступные связанные метки. Например, он видит метки "Победа в турнире" и "Участие в турнире". Поскольку его интересует только то, что произошло после победы, MRAgent отбрасывает метку "Участие" и идет по пути "Победа".
Далее агент извлекает эпизодическое содержание, связанное с выбранной парой "Подсказка-Метка". В данном случае это будут три разных эпизода, где Нейт выигрывал турнир. MRAgent просматривает эти три воспоминания, определяет наиболее релевантное для запроса и отбрасывает остальные два. Затем он обновляет свои подсказки и начинает новый раунд поиска и отсева. Из нового эпизодического воспоминания агент добавляет "призовые деньги с турнира" к своим подсказкам и использует их для поиска новых меток и, в конечном итоге, новых воспоминаний. Этот процесс повторяется до тех пор, пока не будет собрано достаточно информации для ответа на запрос, например: "Нейт сохранил деньги".
Производительность MRAgent на отраслевых бенчмарках
MRAgent работает в одной нише с несколькими другими фреймворками для построения памяти ИИ. Среди конкурентов – A-MEM, графовый фреймворк, и MemoryOS, иерархический фреймворк. Другие системы с постоянной памятью включают LangMem и Mem0.
Исследователи протестировали MRAgent на отраслевых бенчмарках LoCoMo и LongMemEval. Эти тесты проверяют способности агентов решать запросы в долгосрочных задачах и диалогах, охватывающих десятки сессий и сотни реплик. В качестве базовых моделей использовались Gemini 2.5 Flash и Claude Sonnet 4.5. Система тестировалась против стандартного RAG, A-MEM, MemoryOS, LangMem и Mem0. MRAgent стабильно превосходил все базовые модели по обоим типам моделей и всем типам вопросов со значительным отрывом.
Однако для корпоративных разработчиков, пожалуй, самым важным показателем является вычислительная стоимость. В тестах LongMemEval MRAgent сократил потребление токенов в запросах всего до 118 тысяч на образец. Для сравнения, A-Mem потреблял 632 тысячи токенов, а LangMem "сжигал" до 3.26 миллиона токенов на запрос. MRAgent также фактически вдвое сократил время выполнения по сравнению с A-Mem, снизив его с 1122 секунд до 586 секунд.
Что делает MRAgent таким эффективным на практике, так это его поведение "по требованию". Оценка меток и отсеивание нерелевантных путей перед извлечением данных экономит деньги и пространство в контексте. Более того, система автономно оценивает накопленный контекст и сама знает, когда прекратить поиск, полностью избегая избыточного исследования данных.
Реализация и подводные камни разработки
Хотя MRAgent чрезвычайно эффективен, структура "Cue-Tag-Content" должна быть подготовлена до того, как агент сможет ее запрашивать. Разработчикам предстоит продумать архитектуру базовой базы данных памяти, чтобы LLM могла эффективно перемещаться по ассоциативным элементам и отсеивать нерелевантные пути без взрывного роста вычислительных затрат. К счастью, разработчикам не придется вручную маркировать или структурировать эти данные. Авторы разработали MRAgent с конвейером автоматической дистилляции, который использует LLM для обработки сырых историй взаимодействий и автоматического заполнения графа памяти. Задача разработчика – реализовать и оркестрировать этот автоматизированный конвейер ввода, а не вручную маркировать данные.
Вам нужно будет настроить фоновую задачу или потоковый конвейер, который будет передавать сырые взаимодействия пользователя через шаблоны запросов для извлечения этих метаданных перед их сохранением в вашей графовой базе данных. Однако авторы подчеркивают, что это фаза легкой конструкции, и MRAgent намеренно поддерживает простоту ввода данных. Код уже доступен на GitHub.