[RAG (retrival-augmented_generation)](https://en.wikipedia.org/wiki/Retrival-augmented_generation) дополняет LLM, извлекая соответствующие отрывки из внешнего корпуса, часто посредством встраивания и поиска по сходству, а затем подавая их в качестве контекста, чтобы модель могла отвечать на основе актуальных или специфичных для предметной области данных.

Он хорошо работает для поиска документов. Для агентской памяти она разваливается.

Новая статья «За пределами RAG для памяти агента: извлечение путем развязки и агрегации» (Ху и др., февраль 2026 г.; [см. статью](https://arxiv.org/abs/2602.02007)), написанная Королевским колледжем Лондона и Институтом Алана Тьюринга, объясняет почему и указывает на лучший подход.

## Почему RAG не хватает памяти агента

Стандартный RAG предполагает большой смешанный корпус: встроить текст, получить [top-k](https://en.wikipedia.org/wiki/Nearest_neighbor_search) по сходству, объединить в контекст.

Память агента — это противоположность: ограниченный, связный поток, в котором один и тот же факт появляется во многих фразах. Применение RAG здесь создает три проблемы:

1. **Лишний топ-к.** Вы спрашиваете: «Когда я в последний раз был у стоматолога?» В корпусе документов top-k может возвращать несколько соответствующих абзацев из разных источников. В памяти агента многие фрагменты говорят почти одно и то же («Запланированный визит к стоматологу на 15 марта», «Запись к стоматологу на 15 марта», «Запись к стоматологу на 15 марта»). Top-k заполняется повторениями. В статье это называется «коллапсом в единую плотную область». Сходство не позволяет отделить то, что *необходимо*, от того, что просто *похоже*.
2. **Сокращение разрывает цепочки доказательств.** Вы спрашиваете: «Разрешили ли мы спор по счету?» Ответ зависит от цепочки: «Счет №123 оспорен», затем «Мы договорились о частичном возврате средств», затем «Оплатили оговоренную сумму». Последующее сокращение может сохранить «Оплаченный счет № 123» и исключить предыдущие очереди. Затем модель отвечает «Да, решено», даже не зная, что возник спор. Удаление фрагментов, связанных во времени, приводит к неверным ответам.
3. **Сходство игнорирует структуру.** Вы спрашиваете: «Каков статус поездки в Барселону?» Вам нужен проект, задача (например, забронировать авиабилеты) и результат. Сходство возвращает фрагменты, в которых упоминается «Барселона» или «поездка»: возможно, случайное упоминание, прошлая поездка, задача из другого проекта. Вам нужен был структурный путь (этот проект, эти задачи, эти результаты). Сходство не кодирует это. Структура делает.

## Структура важнее сходства

Лучший подход — использовать структуру для управления тем, что загружается, а не сходство. Введите сущности (задачи, контакты, транзакции, события) и извлеките их по схеме, идентификаторам сущностей, связям и временным шкалам. Сохраняйте наблюдения и полученные результаты как целые единицы; не обрезайте внутренние блоки доказательств. Тот же вход и та же схема дают тот же результат. На критическом пути нет LLM.

## Что показано в документе

Система статьи (xMemory) строит четырехуровневую иерархию (сообщения, эпизоды, семантика и темы) с встраиваниями и сводками LLM. Она превосходит пять других систем (Naive RAG[^1], A-Mem[^2], MemoryOS[^3], LightMem[^4], Nemori[^5]) на LoCoMo и PerLTQA, эталонных наборах данных для долговременной памяти разговоров и личных долгосрочных ответов на вопросы. Статья не требует вложений или LLM; это требует структуры. Этого можно достичь с помощью изученной иерархии (xMemory) или с помощью детерминированного дизайна, ориентированного на схему. В документе также документируется хрупкость структуры, созданной LLM (A-Mem, MemoryOS): отклонения форматирования, неудачные обновления. Детерминированная структура, основанная на схеме, является более надежной основой.

## xMemory против Неотомы

Неотома — это [структурированный слой памяти](/posts/truth-layer-agent-memory), который я создаю: основанный на схеме, детерминированный, созданный для происхождения и воспроизведения. Обе системы выходят за рамки RAG; они различаются тем, как строят структуру.

**xMemory** создает четырехуровневую иерархию (сообщения, эпизоды, семантика и темы) с встраиваниями и сводками LLM. Эпизоды представляют собой смежные блоки; семантика — это многократно используемые факты; Семантика групп тем для доступа высокого уровня. Цель разреженности-семантики уравновешивает размер темы. Слишком большой размер приводит к избыточному извлечению; слишком мелкие фрагменты доказательств. Поиск осуществляется сверху вниз: выберите компактный набор тем и семантики, затем расширьте его до неповрежденных эпизодов (и, возможно, сообщений) только тогда, когда это уменьшит неопределенность модели читателя. Никакой обрезки внутри блоков. По этим критериям он превосходит пять базовых показателей по качеству и использованию токенов. В документе отмечается, что структура, созданная LLM (например, в A-Mem, MemoryOS), является хрупкой: отклонения форматирования, неудачные обновления. Поскольку xMemory строит свою иерархию на основе сводок LLM, она принимает ту же хрупкость.

**Neotoma** строит структуру без LLM на критическом пути. Сущности типизированы; отношения и сроки четко определены; при поиске используются схема, идентификаторы объектов, связи и временные диапазоны. Те же входные данные и схема дают одинаковый результат. Схемы все еще развиваются. Неизвестные поля приземляются в консервационном слое. Детерминированный конвейер может добавлять в схему поля с высокой степенью достоверности. LLM может предлагать новые поля или типы в качестве ожидающих рекомендаций, применяемых только с помощью инструментов или одобрения человека. Выводы остаются рекомендательными: изменения схемы проходят через инструменты или одобрение человека; извлечение и сокращение остаются детерминированными; схема остается источником истины. Критика статьи применима тогда, когда модель *движет* структуру, а не когда она предполагает применение людей или инструментов. Захват для извлечения остается детерминированным.

### Сравнение

| | хпамять | Неотома |
|--|--------|--------|
| Источник структуры | Вложения + резюме LLM (эпизоды, семантика, темы) | Схема-первая, детерминированное извлечение и редукторы |
| Иерархия | Четыре уровня (сообщения, эпизоды, семантика, темы), управляемые разреженностью-семантикой цели | Типизированные сущности, отношения, временные шкалы (без фиксированных «уровней») |
| Поиск | Сверху вниз: репрезентативный выбор на графике, затем расширение с учетом неопределенности до неповрежденных эпизодов/сообщений | По схеме, идентификаторам объектов, отношениям, срокам |
| Управление резервированием | Репрезентативный выбор + расширение только тогда, когда неопределенность снижается | Структурные запросы возвращают то, что вы запрашиваете; нет сходства, коллапс |
| Неповрежденные единицы | Да (без обрезки эпизодов/сообщений) | Да (наблюдения и объекты сохраняются целыми) |
| Детерминизм | Нет (структура, сгенерированная LLM, может различаться) | Да (тот же ввод, та же схема, тот же вывод) |
| Хрупкость | В документе упоминаются отклонения форматирования LLM и неудачные обновления в аналогичных системах | Схема и код являются явными; нет LLM на критическом пути |

### Относительные преимущества

**xMemory** отлично подходит, когда входными данными является поток разговоров, и вам нужна структура без определения схем. Пример: продолжительный чат с ассистентом, где вы спрашиваете «что мы решили по поводу поездки?» или «когда я в последний раз упоминал бюджет?» xMemory создает эпизоды, семантику и темы; извлечение эффективно с использованием токенов. Он также подходит для быстрых прототипов (заявки в службу поддержки, заметки о встречах), для которых вы еще не хотите создавать схемы. Вы принимаете дрейф иерархии и не нуждаетесь в возможности аудита или первоклассном запросе по объектам.

**Neotoma** отлично подходит, когда вам нужна отслеживаемость или ваши данные уже структурированы. Пример: проверяемые решения (платежи, соглашения, результаты задач), где одни и те же входные данные и схема должны давать один и тот же снимок. Изменения схемы версируются и применяются детерминированно; на пути нет LLM. Он также подходит для типизированных объектов (задач, контактов, транзакций, событий) с отношениями и временными шкалами. Запрос по типу объекта, идентификатору, взаимосвязи или временному диапазону. Неотома считает их родными; xMemory потребует сериализации в текст и потеряет первоклассный доступ.

## Итеративное структурирование разговора

В диалоге часто возникает структура: «добавь задачу для этого», «запиши, что мы согласились заплатить 500», и агент действует. Две системы справляются с этим по-разному.

**xMemory:** Разговор является основным объектом. То, что делает агент (например, «Я создал задание для стоматолога»), остается в потоке сообщений и разбивается на эпизоды, семантику и темы. Вы получаете более изученную иерархию, но не имеете отдельного графа сущностей, допускающего запросы. Структура живет внутри иерархии.

**Неотома:** Этот разговор — один из источников наблюдений. Когда агент создает или обновляет задачу, контакт или транзакцию, эти операции создают наблюдения и снимки объектов. Новые поля из диалога могут попасть на уровень сохранения и быть повышены до схемы, когда достоверность высока. Диалог и структурированный граф остаются синхронизированными, поскольку оба записывают данные в одно и то же хранилище.

**Различный поиск.** xMemory поддерживает семантический поиск по иерархии. Вопросы на естественном языке («Что мы решили насчет дантиста?») возвращают темы, семантику или нетронутые эпизоды. Он не поддерживает структурный поиск (нет типов сущностей с идентификаторами и связями). Это приводит к ожидаемым сбоям в трех случаях:

- **Доказательства разбросаны по очереди.** «Разрешили ли мы спор по счету?» Спор, переговоры и оплата могут иметь разные эпизоды или темы; при поиске может появиться один или два и пропустить остальные, поэтому модель ответит неправильно или не полностью.
- **Задавайте вопросы.** «Какие задачи нужно выполнить до пятницы?» или «Показать все платежи для контакта X». Нет объектов задач или транзакций для фильтрации; вы получаете семантические совпадения (сообщения, в которых упоминаются «задача», «пятница» или «контакт X»), а не окончательный список, поэтому результаты являются частичными или зашумленными.
- **Обход отношений.** «Какие задачи в проекте Y еще не завершены?» Без графа «проект-задача» при поиске возвращаются фрагменты разговоров, в которых могут быть опущены некоторые задачи или проекты; вы не можете достоверно перечислить по отношениям.

Neotoma поддерживает оба варианта. Вы можете задавать вопросы в семантическом стиле, когда данные находятся в хранилище. Вы также получаете структурный поиск по типу объекта, идентификатору, взаимосвязи и временному окну, поэтому заданные запросы и обход отношений возвращают полные первоклассные результаты. Компромисс заключается в том, что вам нужны схемы и хранилище, которые принимают эти наблюдения.

## Структура важнее сходства, схема важнее хрупкости

Для памяти агента сходство с необработанным текстом невозможно. Поиск должен определяться структурой: тем, как вы разлагаете и организуете поток, а не тем, сколько фрагментов соответствует запросу. В статье показано, что изученная иерархия (xMemory) превосходит наивный RAG и что структура, созданная с помощью LLM, является хрупкой.

Однако детерминированный путь, основанный на схеме, дает вам то же структурное преимущество без этой хрупкости. Я создаю [Neotoma](https://github.com/markmhendrickson/neotoma) на основе последнего, поэтому прием и извлечение остаются воспроизводимыми, а схема остается источником истины.

[^1]: **Наивный RAG:** встраивает воспоминания, извлекает фиксированный топ-k по сходству, без иерархии. Нет отдельного проекта; базовый уровень, определенный в [документе](https://arxiv.org/abs/2602.02007).
[^2]: **A-Mem:** агентная память для агентов LLM; Ссылки в стиле Зеттелькастена и обновления сети памяти, управляемые агентами. [Проект](https://github.com/agiresearch/A-mem).
[^3]: **MemoryOS:** иерархическое краткосрочное, среднесрочное и долгосрочное хранилище с модулями обновления, извлечения и генерации для персонализированных агентов. [Проект](https://github.com/BAI-LAB/MemoryOS).
[^4]: **LightMem:** облегченная память, вдохновленная этапами Аткинсона-Шиффрина; консолидация с учетом тем и автономные долгосрочные обновления. [Проект](https://github.com/zjunlp/LightMem).
[^5]: **Немори:** самоорганизующаяся эпизодическая память с сегментацией событий и калибровкой прогнозирования для адаптивных знаний. [Проект](https://github.com/nemori-ai/nemori).