TL;DR
Исследователи обнаружили, что модели работают с двумя уровнями памяти в диалогах. Factual memory (Level-1) — вспомнить факт, который прямо упоминался: "Как зовут мою кошку?" → "Мурка". Cognitive memory (Level-2) — удержать неявное ограничение и применить его позже: в начале диалога ты сказал "готовлюсь к экзамену, хочу минимум отвлечений", через 50 сообщений спросил "начать смотреть новый сериал?" → правильный ответ учитывает твою цель, хотя она не упоминается в вопросе напрямую.
Модели резко проваливаются на cognitive memory. Разрыв между производительностью на factual и cognitive задачах составляет 30-40 пунктов у всех моделей — от GPT-4o до Qwen. Cognitive memory деградирует экспоненциально с ростом длины диалога: чем больше сообщений между "целью в начале" и "вопросом сейчас", тем выше вероятность, что модель проигнорирует контекст. При этом object memory (локальные факты) остаётся стабильной даже в длинных диалогах.
Исследование выделяет четыре типа неявных ограничений, которые модели должны удерживать: причинно-следственный контекст (causal), состояние пользователя (state), цели (goal) и ценности (value). Когда между упоминанием ограничения и триггерным вопросом нет семантического пересечения (авторы называют это "cue-trigger semantic disconnect"), модели теряют контекст и отвечают как будто видят вопрос в вакууме.
Типы памяти и их деградация
Level-1: Factual Memory - Object memory — локальные факты ("моя кошка Мурка") - Episodic memory — события во времени ("вчера ходил к врачу") - Стабильна даже в длинных диалогах
Level-2: Cognitive Memory - Causal — причинно-следственный контекст - State — текущее состояние пользователя - Goal — цели и намерения - Value — ценности и предпочтения - Резко деградирует с ростом длины диалога
Ключевое отличие: factual memory тестируется вопросами с семантическим пересечением с ответом ("Как зовут кошку?" → ищи слово "кошка" в истории). Cognitive memory требует вывода из контекста без прямого пересечения слов.
Пример применения инсайта
Ситуация: Ты консультируешься с AI по бизнес-задачам в одном длинном чате. В начале месяца обсуждал стратегию: "Фокус на прибыльность, никаких экспериментов до конца квартала". Через 100 сообщений и 2 недели пишешь: "Что думаешь про запуск подкаста для бренда?"
Что происходит: - ❌ Модель ответит в вакууме: "Отличная идея! Подкасты сейчас в тренде, можно..." - ✅ Правильный ответ должен учесть constraint из начала: "Подкаст — долгоиграющий проект с отложенной отдачей. Учитывая твой фокус на прибыльность до конца квартала, это противоречит стратегии. Лучше отложить или пересмотреть приоритеты."
Как применить инсайт:
До исследования (наивный подход):
[В одном чате, через 100 сообщений]
Что думаешь про запуск подкаста?
После исследования (адаптация):
Контекст: месяц назад мы решили фокусироваться на прибыльность до конца квартала,
никаких экспериментов. Сейчас думаю про запуск подкаста.
Проанализируй это предложение УЧИТЫВАЯ мою стратегию. Укажи если видишь конфликт.
Или просто начни новый чат для нового решения, чтобы не полагаться на память модели через 100+ сообщений.
Почему модели забывают неявный контекст
Слабость: LLM плохо удерживают информацию, которая не имеет семантического якоря в текущем запросе. Если в вопросе нет слов, которые "триггерят" релевантный кусок истории, модель не знает что искать. Factual память работает потому что запрос содержит прямую подсказку: "Как зовут кошку?" → слово "кошка" есть и в вопросе и в ответе из прошлого. Cognitive память требует вывода: "Стоит ли смотреть сериал?" → нужно вспомнить "готовлюсь к экзамену" из начала диалога, хотя в вопросе нет слов "экзамен" или "учёба".
Сильная сторона: LLM хорошо работают с явно сформулированным контекстом в текущем промпте. Если constraint прописан прямо в запросе, модель применит его точно.
Практический вывод: Не полагайся на "память через 100 сообщений" для важных ограничений. Либо резюмируй контекст явно в новом запросе, либо начинай новый чат для новой задачи, где constraint формулируется с нуля.
Рычаги управления: - Длина диалога → короткие чаты (10-20 сообщений) держат контекст лучше, чем марафоны на 100+ - Явное напоминание constraint → вместо надежды, что модель "помнит", перескажи ключевые ограничения в новом промпте - Разделение чатов по задачам → один чат = один контекст, не смешивай цели
Принципы работы с памятью LLM
Вместо готового промпт-шаблона — принципы, которые ты адаптируешь под свои задачи:
1. Single-Responsibility Chats
Один чат = одна задача с одним набором constraints. Не веди марафон-диалог на 200+ сообщений со сменой контекста.
Применение: - Обсуждение бизнес-идеи → отдельный чат - Редактура текста → отдельный чат - Личная консультация → отдельный чат
2. Explicit Context Refresh
Каждые 20-30 сообщений пиши резюме текущего контекста и ключевых ограничений.
Шаблон:
Резюмирую контекст нашего обсуждения:
- Цель: {твоя цель}
- Ограничения: {что важно учитывать}
- Текущий статус: {где мы сейчас}
С учётом этого, вопрос: {твой новый вопрос}
3. Constraint Declaration
Если решение зависит от неявного ограничения из прошлого — сформулируй его явно в новом запросе, не полагайся на память модели.
Шаблон:
Контекст: {ключевое ограничение из прошлого}
Оцени моё новое предложение УЧИТЫВАЯ этот контекст.
Укажи если видишь конфликт между предложением и ограничением.
Предложение: {что предлагаешь}
4. Length-Aware Memory
Cognitive memory деградирует экспоненциально. Правило: если между constraint и вопросом больше 50 сообщений — модель скорее всего "забыла".
Применение: - До 20 сообщений: можно полагаться на контекст - 20-50 сообщений: рискованно, лучше напомнить - 50+ сообщений: гарантированно нужно напоминание или новый чат
Ограничения
⚠️ Длинные диалоги: После 50+ сообщений cognitive memory почти полностью теряется. Object memory (локальные факты) остаётся стабильной, но неявные ограничения модель не удерживает.
⚠️ Семантический разрыв: Если между cue (где constraint упомянут) и trigger (где нужно применить) нет общих слов — модель с высокой вероятностью проигнорирует контекст. Чем больше семантическое пересечение, тем лучше работает память.
⚠️ RAG не решает проблему: Retrieval-augmented методы показали результаты хуже чем прямой контекст. Embedding-based поиск находит семантически похожие куски, но не "вытаскивает" неявные ограничения без пересечения слов.
⚠️ Memory-системы тоже проваливаются: Специализированные системы (Mem0, A-Mem, SeCoM) показали результаты почти идентичные обычным моделям на cognitive memory — разрыв в 30-40 пунктов сохраняется. Проблема фундаментальная, не архитектурная.
Как исследовали
Команда из Xi'an Jiaotong University и Tencent создала LoCoMo-Plus — бенчмарк для тестирования cognitive memory. Взяли оригинальный LoCoMo (бенчмарк для factual memory в длинных диалогах) и добавили задачи, где правильный ответ зависит не от факта, а от неявного ограничения (implicit constraint).
Дизайн эксперимента: Генерировали пары cue-trigger: - Cue — диалог в начале, где неявно выражается constraint (например, "готовлюсь к экзамену, хочу минимум отвлечений") - Trigger — вопрос через 20-100 сообщений, где нужно применить constraint, но в вопросе НЕТ прямого упоминания cue ("стоит ли начать смотреть сериал?")
Специально фильтровали пары с низким семантическим пересечением (BM25 + MPNet embedding) — чтобы модель не могла "угадать" по совпадению слов.
Протестировали 11 моделей (от GPT-4o и Gemini-2.5-Pro до Qwen 3B) + 3 RAG-подхода (с разными embedding-моделями от OpenAI) + 3 специализированные memory-системы (Mem0, A-Mem, SeCoM).
Главная находка: Все модели и системы показали стабильное проседание на 30-40 пунктов на cognitive memory по сравнению с factual. GPT-4o: 62.99% на factual → 21.05% на cognitive. Gemini-2.5-Pro: 71.78% → 26.06%. Даже топовые модели теряют 2/3 производительности.
Дополнительный инсайт про метрики: Проверили как традиционные метрики (BLEU, ROUGE, F1, Exact Match) зависят от длины ответа модели. Обнаружили систематическое length bias — метрики завышают оценку моделям, которые генерируют ответы длиной близкой к эталону, и занижают тем, кто отвечает короче или длиннее. Это значит, что сравнение моделей по BLEU/ROUGE в диалоговых задачах искажено стилем генерации, не точностью памяти.
Почему результаты такие: Модели обучены на паттернах с семантическим пересечением. Во время обучения диалоги обычно содержат явные референсы или повторы ключевых слов. Cognitive memory требует вывода без якоря в текущем запросе — а это паттерн, на котором модели не тренировались массово.
Интересная деталь: исследователи показали, что раскрытие типа задачи в промпте ("это вопрос на temporal reasoning") завышает результаты на 10-15 пунктов на некоторых категориях. Это означает, что модели адаптируют стиль ответа под объявленный тип задачи, а не действительно "вспоминают" из контекста.
Адаптации и экстраполяции
🔧 Техника: Compact State Summary
Каждые 10-15 сообщений генерируй summary текущего состояния диалога и пинь его в начало чата (если платформа поддерживает) или копируй в новый промпт.
Промпт для создания summary:
Резюмируй наш диалог за последние 15 сообщений в формате:
**Цели:** [чего хочу достичь]
**Ограничения:** [что важно учитывать]
**Контекст:** [ключевые факты]
**Статус:** [где мы сейчас]
Будь лаконичен, только суть.
Используй summary как явный контекст в следующих запросах вместо надежды на memory.
🔧 Техника: Dual-Chat Workflow
Для важных решений веди два параллельных чата: - Чат 1 (Исследование): свободный диалог, сбор информации, генерация идей - Чат 2 (Решение): начинаешь с нуля, переносишь только выжимку из Чата 1 как явный контекст
Шаблон для Чата 2:
Контекст из предыдущего обсуждения:
[копируешь summary или ключевые constraints из Чата 1]
С учётом этого контекста, помоги принять решение: {твой вопрос}
Это обходит проблему cognitive memory через architectural separation — второй чат всегда короткий и фокусированный.
🔧 Техника: Constraint Check Query
Если подозреваешь, что модель "забыла" важный constraint из начала диалога — проверь явно:
В начале нашего разговора я говорил о {constraint}.
Твой последний ответ учитывает это ограничение?
Если нет — скорректируй с учётом {constraint}.
Это форсит модель ре-evaluate ответ через призму constraint.
Ресурсы
LoCoMo-Plus: Beyond-Factual Cognitive Memory Evaluation Framework for LLM Agents
Yifei Li, Weidong Guo, Lingling Zhang, Rongman Xu, Muye Huang, Hui Liu, Lijiao Xu, Yu Xu, Jun Liu
Xi'an Jiaotong University, Tencent
https://github.com/xjtuleeyf/Locomo-Plus
Базовый бенчмарк LoCoMo:
Maharana et al., 2024 — оригинальный фреймворк для factual memory в длинных диалогах
RAG-методы:
OpenAI text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
Memory-системы:
Mem0 (Chhikara et al., 2025), A-Mem (Xu et al., 2025), SeCoM (Pan et al., 2025)
