3,583 papers
arXiv:2610.36308 74 26 окт. 2026 г. FREE

Устаревшие факты в памяти агента: старая версия рядом с новой ломает ответ даже тогда, когда новая найдена

КЛЮЧЕВАЯ СУТЬ
Парадокс: агент нашёл свежий факт в 100% случаев, но всё равно ответил по старому. Поиск тут ни при чём. Чистка памяти до модели позволяет не заставлять её выбирать между старой и новой версией одной цены, одного дедлайна или одного контакта. Не проси модель понять, что новое отменяет старое. Убери старое из рабочего набора. Если заменить одну посторонюю заметку на устаревшую версию того же факта, малая модель (Qwen2.5 7B) падает со 100% до 44,6%. Это находка, а не готовый метод: лекарство авторы не проверяли.
Адаптировать под запрос
⚡

TL;DR

Исследование показывает: если в контекст попали и старая, и новая версия одного факта, модель нередко отвечает по старой. Новая версия при этом лежит прямо перед глазами, а в промпте написано, что выше номер — новее. Авторы проверили это на агентной памяти: нумерованные заметки, поиск по ним (BM25) и замер, какой вариант выберет модель.

Главная боль: агент нашёл правильное обновление, и всё равно ответил по прежним данным. Обычно винят поиск. Здесь поиск отработал идеально: свежий факт был в подборке в 100% случаев. Когда в подборку добавили заметки, ответы стали хуже: на 6K-истории точность упала с 45% до 32%. Ошибки сосредоточились на вопросах, где в подборке была и устаревшая версия. Если заменить одну посторонних заметку на устаревшую версию того же факта, точность маленькой модели падает со 100% до 44,6%. Посторонняя заметка того же размера такого вреда не делает. Устаревший факт вредит сильнее, чем просто мусор.

Практический вывод: не полагайся на фразу «новее — выше номер». Надёжнее убрать из рабочего контекста то, что устарело. Авторы советуют списывать в архив, понижать в выдаче или явно помечать замещённые факты. Сами они эти меры не проверяли.

🔬

Схема метода

Это не метод, а находка. Эксперимент построен так:

УСЛОВИЕ A: [свежий факт] + 3 посторонних факта      → точность 100%
УСЛОВИЕ B: [свежий факт] + [старая версия] + 2 посторонних → точность 44,6% (малая модель)
                                                           → 87,8% (более сильная)
Всё остальное одинаково: промпт, модель, размер контекста (4 заметки).

Правило для практики:

ПАМЯТЬ/БАЗА ЗНАНИЙ → найти пары «старое / новое» → старое убрать из рабочего набора (в архив) или пометить «НЕАКТУАЛЬНО» → только потом отдавать модели
🚀

Пример применения

Задача: Вы руководите отделом продаж в онлайн-школе и ведёте ассистента на заметках по сделкам. За три месяца файл памяти разросся. Там лежит и «цена курса 49 900 ₽», и «с 1 марта цена 59 900 ₽». Дедлайн оплаты менялся дважды. Менеджеры жалуются, что ассистент иногда называет клиентам прошлогоднюю цену. Сначала вы чистите память, и только потом даёте её агенту.

Промпт:

Ты — аудитор памяти ассистента отдела продаж.

Ниже нумерованные заметки. Чем больше номер, тем новее запись.

1. Курс «Продакт-менеджер»: цена 49 900 ₽, рассрочка 6 месяцев.
2. Основной контакт по сделке «Школа Т»: Ирина Соколова, HR-директор.
3. Дедлайн оплаты по сделке «Школа Т»: 15 февраля.
4. Курс «Продакт-менеджер»: цена 59 900 ₽ с 1 марта, рассрочка 12 месяцев.
5. Дедлайн оплаты по сделке «Школа Т» перенесён на 1 марта.
6. Основной контакт по сделке «Школа Т»: Алексей Громов, финдиректор (Ирина ушла в декрет).
7. Дедлайн оплаты по сделке «Школа Т» перенесён на 20 марта.

Задача:
1. Найди группы заметок, которые описывают один и тот же факт в разных версиях.
2. Для каждой группы укажи номер актуальной заметки и номера устаревших.
3. Выдай чистый список «АКТУАЛЬНО» — только действующие факты, без дублей по теме.
4. Отдельно выдай список «АРХИВ» — устаревшие заметки со ссылкой на заменившую их запись.
5. Если не уверен, что две заметки про один факт, не объединяй — перечисли их в блоке «СПОРНОЕ».

Результат: Модель выдаст три блока. «АКТУАЛЬНО» — действующие цена, контакт и дедлайн. «АРХИВ» — старые версии с указанием, какая запись их заменила. «СПОРНОЕ» — заметки, где связь неочевидна. В рабочую память агента кладёте только первый блок. Архив хранится отдельно, чтобы не потерять историю. Просмотрите результат глазами: это самое ненадёжное место процесса.

🧠

Почему это работает

Слабость. Модель не «читает по порядку» и не применяет правило о том, что новое отменяет старое. Она подбирает ответ по тому, что подходит вопросу. Старая версия подходит вопросу так же хорошо, как новая, а иногда лучше: в исследовании старые значения часто совпадали с тем, что модель и так знала о мире. Приписка «выше номер = новее» не гарантирует, что она сработает.

Сильная сторона. Если в контексте остался только один вариант факта, модель отвечает почти безошибочно. В контрольном условии у обеих моделей было 100%. А 97% было при подаче одной точечной заметки.

Как метод это использует. Конфликт убирается до модели, а не разрешается внутри неё. Вы не просите модель выбрать версию, а даёте ей одну версию.

Рычаги: - Размер подборки. Меньше заметок значит меньше шансов, что рядом окажется старая версия. В исследовании подборка из 64 токенов обгоняла 512 на обеих историях. - Пометки статуса. Добавьте в каждую заметку дату и статус «актуально / заменено». Это мера, которую авторы рекомендуют, но не тестировали. - Архив отдельно от рабочей памяти. Историю не теряем, но агент её не видит, пока не спросите. - Проверка перед выдачей. Перед ответом на критичный вопрос (цена, дедлайн, юридические условия) попросите агента процитировать заметку, на которую он опирается.

📋

Шаблон промпта

Ниже дословная логика «замороженного» промпта из исследования в переводе. Он сообщает модели правила хронологии. Важно: в исследовании именно с этим промптом модели ошибались, пока в контексте была старая версия. Поэтому шаблон нужен как «хороший минимум», а главная защита — чистка памяти.

Используй только приведённые ниже нумерованные записи памяти как источник истины, даже если они противоречат общеизвестным фактам.
Записи идут по порядку времени: чем больше номер, тем новее запись, и она заменяет более старые записи о том же факте.
Верни только самую короткую формулировку ответа. Не объясняй.

ПАМЯТЬ:
{нумерованные_записи}

ВОПРОС: {вопрос}

Что подставлять: {нумерованные_записи} — заметки из вашей базы или файла памяти в хронологическом порядке, по возможности без устаревших версий. {вопрос} — запрос пользователя или агента.

⚠️

Ограничения

⚠️ Только две небольшие модели: проверяли Qwen2.5 (7B) и Qwen3 (14B). Для ChatGPT, Claude и Gemini такого замера нет. Более сильная модель из пары ошибалась заметно реже (потеря 12%, а не 55%), так что на топовых моделях эффект, скорее всего, слабее. Но это предположение, а не результат.

⚠️ Синтетический бенчмарк: факты придуманы и противоречат реальности (например, «автор „Женитьбы Фигаро“ — Томас Кид»). Старые значения часто совпадали с тем, что модель знала из обучения. Поэтому нельзя сказать, что вредит именно «устарелость». Возможно, вредит «знакомое значение». Авторы прямо пишут, что механизм не доказан.

⚠️ Лекарство не проверено: вывод «помечать или архивировать устаревшее» — это рекомендация авторов. Сам эффект пометок они не измеряли.

⚠️ Узкий класс задач: одношаговые вопросы, цепочки обновлений не длиннее двух, лексический поиск. Для многошаговых вопросов, векторного поиска и готовых систем памяти вроде Mem0 результат не проверен.

⚠️ Не «меньше контекста всегда лучше»: в эксперименте нужный факт был в подборке всегда. Если резать контекст вслепую, можно потерять нужное.

🔍

Как исследовали

Исследователи взяли задачу FactConsolidation из бенчмарка MemoryAgentBench. Там есть история из сотен нумерованных заметок. Более поздняя заметка заменяет раннюю: например, сначала «автор — Бомарше», потом «автор — Томас Кид». Сначала они меняли размер подборки: брали от 64 до 512 токенов найденных заметок. Точность на 6K-истории падала монотонно, с 45% до 32%. При этом аудит с подсказкой (по правильному ответу) показал: свежая заметка была в каждой подборке. Значит, дело не в поиске. Потом разобрали вопросы: ошибки собирались там, где рядом лежала и старая версия (на вопросах без конфликта точность оставалась 88,5–100%).

Чтобы доказать вину именно старого факта, поставили аккуратный опыт на 74 вопросах с конфликтом. В условии A — свежая заметка и три посторонних. В условии B — свежая, старая версия и две посторонних. Размер тот же, промпт тот же. Qwen2.5 в A отвечал верно на все 74, в B — на 33. Все 41 ухудшение были «выбрал старое». У Qwen3 — 100% против 87,8%, девять ухудшений, все по старой версии. Повтор на 32K-истории дал ту же картину: 69% с малой подборкой против 58% с большой.

Что удивило: хронология была прописана в промпте, а модель всё равно хваталась за старое. Слабое место исследования — один бенчмарк и два Qwen. Выборка маленькая, и те же 74 вопроса использовали при разработке промпта.

💡

Адаптации и экстраполяции

🔧 Техника: добавить «правило отбора» в файл инструкций агента → агент сам не тянет старое

Для CLAUDE.md или системного промпта агента с памятью (это моя адаптация, авторы её не тестировали):

Правила работы с памятью:
- Если в памяти есть две записи об одном и том же (цена, дедлайн, контакт, решение), используй только запись с более поздней датой.
- Если не можешь определить, какая из двух новее, не выбирай сам: спроси пользователя.
- Когда узнаёшь новый факт, который заменяет старый, не добавляй вторую запись: перепиши прежнюю или перенеси старую в раздел «Архив».
- Записи из раздела «Архив» не используй для ответов, пока пользователь не спросит про историю.

🔧 Техника: перед ответом попросить показать опору → поймать «залипание» на старом

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

Эта проверка тоже не из исследования. Она ловит случаи, когда в контексте два конфликтующих значения.

🔗

Ресурсы

  • Работа: When Retrieval Is Not Enough: Obsolete Facts in Agent Memory (NeurIPS 2026, Workshop PALM: Personalized, Aligned, Long-Term Memory for AI Systems)
  • Код и данные: https://github.com/oleeviyababu/Memory_Conflict
  • Бенчмарк: MemoryAgentBench (Hu, Wang, McAuley, ICLR 2026), задача FactConsolidation
  • Близкие работы: Reddy & Challaram, «Don't ask the LLM to track freshness» (2026); Kurfali & Östling, «Conflicting needles in a haystack» (EMNLP 2025); Shi et al., «LLMs can be easily distracted by irrelevant context» (ICML 2023)
  • Авторы: Oleeviya Babu Poikarayil, Tony Basil Babu, Abdulrahman Nahhas, Het Darshan Mehta, Jawid Ahmad Baktash, Ernesto William De Luca, Klaus Turowski. Университет Отто-фон-Герике, Магдебург; Университет Кералы; Технический университет Мюнхена.

📋 Дайджест исследования

Ключевая суть

Парадокс: агент нашёл свежий факт в 100% случаев, но всё равно ответил по старому. Поиск тут ни при чём. Чистка памяти до модели позволяет не заставлять её выбирать между старой и новой версией одной цены, одного дедлайна или одного контакта. Не проси модель понять, что новое отменяет старое. Убери старое из рабочего набора. Если заменить одну посторонюю заметку на устаревшую версию того же факта, малая модель (Qwen2.5 7B) падает со 100% до 44,6%. Это находка, а не готовый метод: лекарство авторы не проверяли.

Принцип работы

Процесс из трёх шагов: найти пары «старое / новое», убрать старое в архив, отдать модели только живые факты. Почему приписка «выше номер = новее» не спасает? Модель не читает заметки по порядку. Она ищет запись, которая подходит вопросу по смыслу. Старая версия подходит так же хорошо, как новая. Конфликт надо убирать до модели, а не разруливать внутри неё. Представь бухгалтера, у которого на столе два прайса: старый и новый. Сколько ни пиши на новом «актуально», старый лежит рядом и тянет руку. Лучше сразу убрать его в шкаф. Архив хранится отдельно, историю мы не теряем.

Почему работает

Один вариант факта в контексте — и модель почти не ошибается. В контрольном условии у обеих моделей 100%. Одна точечная заметка давала 97%. Добавь в подборку ещё заметки, и ответы портятся. На истории в 6K точность упала с 45% до 32%. Ошибки сидят там, где рядом оказалась устаревшая версия. Жесть: устаревший факт вредит сильнее, чем просто мусор того же размера. Посторонняя заметка такого вреда не делает. Более сильная модель держится лучше: она теряет 12%, а не 55% (87,8% вместо 100%). Честно: механизм не доказан. Факты в тесте выдуманы и противоречат реальности. Старые значения часто совпадали с тем, что модель знала из обучения. Возможно, вредит не «устарелость», а «знакомое значение». Меньше контекста — обычно лучше: подборка из 64 токенов обгоняла 512 на обеих историях. Но резать вслепую нельзя. В тесте нужный факт был в подборке всегда.

Когда применять

Память агента и базы знаний → конкретно для фактов, которые меняются: цены, дедлайны, контакты, условия договора, статусы сделок. Особенно когда файл памяти разросся за месяцы, а ассистент иногда называет клиентам прошлогоднюю цену. НЕ подходит как гарантия для топовых моделей (ChatGPT, Claude, Gemini): их не проверяли. Тестировали только Qwen2.5 (7B) и Qwen3 (14B). Для многошаговых вопросов, векторного поиска и готовых систем памяти вроде Mem0 результат тоже неизвестен. И нельзя резать контекст вслепую: можно выкинуть нужное.

Мини-рецепт

1. Собери пары: найди заметки об одном факте в разных версиях (цена, дедлайн, контакт). Дай это сделать модели, а потом проверь глазами.
2. Выбери живую версию: по каждой паре определи актуальную заметку и устаревшие.
3. Убери старьё: устаревшее переезжает в архив со ссылкой на заменившую запись. В рабочую память идёт только список «АКТУАЛЬНО».
4. Не угадывай: сомнительные пары не склеивай. Вынеси их в блок «СПОРНОЕ» и реши сам.
5. Пометь статус: добавь к каждой заметке дату и статус «актуально / заменено». Авторы это советуют, но не тестировали.
6. Проверь на важном: перед ответом про цену или юридические условия проси агента процитировать заметку, на которую он опирается.

Контрольный вопрос: если в рабочем наборе осталось две версии одного факта, значит, чистка не закончена.

Примеры

[ПЛОХО]: `Используй заметки ниже. Чем больше номер, тем новее запись. Какая цена курса? 1. Цена 49 900 ₽. 2. Контакт: Ирина. 3. Цена 59 900 ₽ с 1 марта.` Старая и новая цена лежат рядом, и модель может ответить 49 900. [ХОРОШО]: `Ты — аудитор памяти ассистента отдела продаж. Ниже нумерованные заметки, чем больше номер, тем новее. Найди группы заметок об одном факте в разных версиях. Для каждой группы укажи номер актуальной заметки и номера устаревших. Выдай список АКТУАЛЬНО без дублей. Отдельно выдай АРХИВ со ссылкой на заменившую запись. Если не уверен, что заметки про один факт, не объединяй, а перечисли в блоке СПОРНОЕ.` В рабочую память идёт только блок «АКТУАЛЬНО». [ПЛОХО]: `Какой дедлайн оплаты по сделке «Школа Т»?` Ответ принимается на веру, а в памяти три разных даты. [ХОРОШО]: `Какой дедлайн оплаты по сделке «Школа Т»? Ответь коротко и процитируй заметку, на которую опираешься.` Рабочая память уже очищена, а цитата позволяет быстро проверить ответ.
Источник: When Retrieval Is Not Enough: Obsolete Facts in Agent Memory
ArXiv ID: 2610.36308 | Сгенерировано: 2026-10-28 13:20

Проблемы LLM

ПроблемаСутьКак обойти
Модель отвечает по старой версии факта, если рядом лежит новаяВ контексте две версии одного факта: цена, дедлайн, контакт. Ты написал: «выше номер — новее». Модель всё равно нередко берёт старую. Поиск при этом отработал идеально, свежий факт в подборке есть. У небольших моделей точность может падать в разы. Сильные модели ошибаются реже, но не исключены. Это касается любой памяти агента, базы знаний или набора документов с правкамиНе проси модель выбирать между версиями. Убери старую версию до запроса. Если нельзя убрать, пометь её явно: [ЗАМЕНЕНО → №4]. Для критичных ответов (цена, сроки, условия) проси процитировать запись, на которую она опирается

Методы

МетодСуть
Чистка конфликтов до модели — одна версия факта в контекстеНайди в памяти или базе пары «старое / новое» про один факт. Старое убери из рабочего набора и положи в архив. Можно дать модели-аудитору список заметок и попросить: «сгруппируй заметки об одном факте, укажи актуальную и устаревшие, спорные выдели отдельно». В рабочий контекст идёт только список актуального. Почему работает: когда в контексте один вариант факта, модель отвечает почти без ошибок. Конфликт снимается до неё, а не внутри неё. Когда применять: долгоживущая память агента, заметки по сделкам, регламенты, прайсы, любые данные, которые правят со временем. Когда не работает или рискованно: автоматическая чистка сама может ошибаться. Просматривай результат глазами, особенно «спорное». Архив храни отдельно, чтобы не потерять историю. Не режь контекст вслепую: можно выбросить нужное. Эффект пометок вместо удаления не проверен, архив надёжнее

Тезисы

ТезисКомментарий
Близкая по теме устаревшая версия вредит сильнее, чем посторонний шумЗамени в контексте одну лишнюю заметку на старую версию нужного факта, не меняя объём. Точность упадёт резко. Посторонняя заметка того же размера почти не вредит. Вероятная причина: старая версия так же подходит вопросу, как новая. Иногда она ещё и совпадает с тем, что модель знала раньше. Модель отбирает ответ по совпадению с вопросом, а не по правилу «новое отменяет старое». Механизм не доказан, но следствие практичное. Применяй: при сокращении контекста сначала ищи дубли и конфликтующие версии. Длина вторична
📖 Простыми словами

When Retrieval Is Not Enough: Obsolete Facts in Agent Memory

arXiv: 2610.36308

Большинство думает, что нейросеть умная: скорми ей свежие данные, и она легко забудет старые. Ни фига подобного. Модели плевать на хронологию событий — она не умеет «перезаписывать» факты в голове на лету. Когда поиск вытаскивает в контекст две версии одной инфы, LLM не включает логику замещения, а тупо выбирает то, что семантически ближе к запросу или к её базовым весам из обучения. В итоге устаревшие факты побеждают, а свежая инфа летит в мусорку прямо на твоих глазах.

Это как наклеить на холодильник стикер с новым паролем от домофона прямо поверх старого, но домашние всё равно упорно тыкают комбинацию трёхлетней давности. Почему? Потому что она уже въелась в подкорку. С моделями тот же цирк: ты можешь прямо в промпте разжевать, что «заметка номер пять отменяет заметку номер два», но если старый факт звучит привычнее, сетка выберет протухшие данные.

Авторы протестировали классическую связку: агентная память, поиск через BM25 и строгое правило «выше номер — факт свежее». В результате случился полный провал. Инструкция не сработала: модель видела обе версии, но с бараньим упрямством отдавала неактуальную инфу. Механизму внимания плевать на дату: обе строчки релевантны вопросу, а понимание времени в архитектуру трансформеров просто не зашито.

Эта грабля бьёт по лбу везде, где агент живёт дольше одного диалога: в RAG-системах, саппорт-ботах и CRM. Представь: курс стоил 49 900 ₽, а с марта стал 59 900 ₽. Если файл памяти разросся и ты не вычистил мусор, твой бот будет продавать услугу по прошлогодней цене со скидкой, свято веря в свою правоту. Умный ассистент в один клик превращается в генератор убытков для бизнеса.

Главный вывод: надеяться, что LLM сама разберётся в версиях — детская наивность. Бесполезно писать капсом «используй только последнее обновление», это чистый самообман. Единственное рабочее решение — жёсткая инвалидация данных на уровне кода: тупо удаляй устаревшие записи из базы до того, как они попадут в контекст. Иначе твой агент так и останется уверенным в себе склеротиком.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с