Для локальной и открытой памяти агентов по умолчанию используется извлечение: конвейеры RAG, агентный поиск, встраивание хранилищ и обход графа — это то, к чему большинство разработчиков стремятся в первую очередь. [Опрос 2026 года](https://arxiv.org/abs/2602.19320) пришел к выводу, что дизайн памяти, а не возможности модели, теперь является ограничивающим фактором для долгоживущих агентов.

Извлечение хорошо работает для кодирования и исследования, но оно перестает работать, когда агенты обрабатывают текущее состояние. Основные проекты ([Zep](https://www.getzep.com/), [Mem0](https://mem0.ai/), [Letta](https://www.letta.com/), [LangMem](https://langchain-ai.github.io/langmem/)) добавляют разрешение сущностей, постоянство и структуру графов, но полная конвергенция к структурированному дизайну сталкивается с барьерами, которые трудно модифицировать: запросы на основе схемы, детерминированная идентичность, происхождение только для добавления и локальный контроль.

## Почему доминирует извлечение

Извлечение соответствует варианту использования, в котором агенты появляются на карте: кодирование. Кодовые базы носят исследовательский характер, вы часто не знаете, где что находится, и вам хочется «где мы обрабатываем X?» вместо того, чтобы «перечислять каждую функцию с указанием ее происхождения». Для этого хорошо подходят семантический поиск и специальный обход.

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

Добавление извлечения также обходится дешево. Вы можете встроить свои документы, подключить векторное хранилище и получить рабочую память за полдня, без проектирования схемы, разрешения объектов и отслеживания происхождения. Это настоящее преимущество, а не просто инерция.

## Где прерывается извлечение

Разрывы появляются, когда вы зависите от памяти агента в поисках истины.

**Непоследовательные ответы.** Запрос «Перечислить все задачи для проекта X» возвращает семь результатов в один день и четыре — в следующий. При извлечении каждый раз выполняется повторный вывод. [Исследования подтверждают](https://arxiv.org/abs/2512.12818), что агенты объединяют информацию в разных сеансах и выдают противоречивые во времени ответы по мере роста памяти.

**Неполное воспроизведение.** Системы RAG с запоминаемостью менее 80 % показывают [частота галлюцинаций составляет 34 % по сравнению с 20 % для систем с запоминаемостью более 90 %](https://www.ijmsrt.com/storages/download-paper/IJMSRT25SEP018). Поиск на основе встраивания отбрасывает временную и реляционную структуру, и чем больше сущностей, тем хуже становится отзыв.

**Происхождение отсутствует.** Когда вы спрашиваете: «Откуда взялось это число?» поиск дает вам предполагаемый ответ на основе любых всплывших фрагментов. Между ответом и исходными записями нет никакой связи.

**Невосстановимые записи.** Когда агент перезаписывает контакт или объединяет задачи, предыдущее состояние исчезает. Версионирования и отката нет.

**Смещение различных инструментов.** Задача, созданная в ChatGPT, не может быть надежно запрошена в Cursor. Память поставщика [непредсказуемо непоследовательна](https://www.datastudios.org/post/can-chatgpt-remember-previous-conversations-memory-behavior-session-limits-and-persistence), а настройки открытого извлечения также по умолчанию не являются перекрестными инструментами.

## Что обеспечивает структурированное состояние

Структурированное состояние означает хранилище с типизированными сущностями, стабильными идентификаторами, связями и временными рамками. Один и тот же запрос каждый раз возвращает один и тот же результат, и вы получаете происхождение и откат.

| Нужна | Структурированный магазин | Поиск |
|------|------------------|-----------|
| Полный комплект («все задачи проекта X») | Да, по схеме и связям | Частичный или предполагаемый |
| Тот же ответ на следующей неделе | Да | Нет |
| Отследить источник | Да, сеть провенансов | Нет |
| Восстановление после плохой записи | Да, если только добавление | Обычно нет |
| Согласованность инструментов | Да, если кроссплатформенный | Только если все инструменты используют один и тот же сервер |
| Исследуйте неизведанное | Возможно, но не сила | Да, именно здесь поиск превосходит |
| Разовое подведение итогов | Излишнее убийство | Да |

Структурированное хранилище может иметь форму графа, и то, которое я создаю, [Neotoma](https://neotoma.io), представляет собой локальный, MCP-совместимый уровень памяти, который предоставляет агентам единый источник достоверной информации об сущностях, отношениях и происхождении. Что отличает его от «настроек графов», распространенных при поиске, так это постоянство, канонические идентификаторы и происхождение. Подробнее о том, [почему памяти агента нужен слой истины](/posts/truth-layer-agent-memory) я писал в другом месте.

## Куда движется поле

Крупные проекты приближаются к структурированному состоянию со стороны поиска.

**[Zep](https://www.getzep.com/)/[Graphiti](https://www.getzep.com/)** строит [график временных знаний](https://arxiv.org/abs/2501.13956), который обеспечивает повышение точности на 18,5 % по сравнению с MemGPT и сокращение задержки на 90 %, а также поставляет сервер MCP. Это наиболее близкое к структурированному состоянию в нынешней экосистеме.

**Mem0** использует [конвейер двухфазного извлечения и консолидации](https://mem0.ai/research), точность которого на 26 % выше, чем у памяти OpenAI, с вариантом графа для отношений сущностей. Он по-прежнему в первую очередь ориентирован на извлечение, а структурированный слой является аддитивным.

**[Letta](https://www.letta.com/)** (ранее [MemGPT](https://docs.letta.com/guides/legacy/memgpt-agents-legacy)) [сохраняет все состояние в базе данных](https://docs.letta.com/guides/agents/context-engineering) с редактируемыми блоками памяти. Это наиболее явно «структурированное состояние» среди проектов поиска происхождения.

**[LangMem](https://langchain-ai.github.io/langmem/)/[LangGraph](https://langchain-ai.github.io/langgraph/)** предлагает [SDK постоянной памяти](https://blog.langchain.com/langmem-sdk-launch/) с семантическими, эпизодическими и процедурными типами и консолидацией памяти. Уровень персистентности существует, но шаблон первичного доступа по-прежнему включает поиск.

**[Hindsight](https://arxiv.org/abs/2512.12818)** ([исследование 2025 года](https://arxiv.org/abs/2512.12818)) организует память в четыре логические сети и достигает точности 83–91% в долгосрочных тестах. Это показывает направление: структурированная память с явными сетями сущностей превосходит плоский поиск.

## Могут ли поисковые системы полностью сходиться?

Некоторые вещи сходятся естественным образом, но другие структурно сложно модернизировать.

**То, что уже сходится.** Извлечение сущностей и структура графа реальны в Zep и [Mem0g](https://mem0.ai/). Сохранение базы данных вполне реально в Letta и LangGraph. Временное отслеживание реально в Graphiti. Они сокращают разрыв.

**Сначала сходство или сначала схема.** Стандартный шаблон доступа при поиске — «найти похожие вещи». По умолчанию структурированное хранилище использует «запрос по типу, идентификатору, взаимосвязи или времени». Создание схемы поисковой системы в первую очередь означает изменение поверхности API и ожиданий пользователей, а не просто добавление функции.

**Неявная и явная идентичность.** При извлечении два фрагмента рассматриваются как один и тот же объект, если их вложения близки. Структурированное состояние рассматривает две записи как один и тот же объект, если они имеют общий канонический идентификатор. Модернизация детерминированной идентичности означает изменение каждого пути поступления.

**Вставка или только добавление.** Системы извлечения обычно перезаписывают, а хранилище только для добавления сохраняет историю. Letta использует изменяемые блоки памяти, а Zep отслеживает временную эволюцию, которая более близка. Большинство поисковых систем не имеют понятия истории записи.

**Происхождение посредством консолидации.** Когда Mem0 объединяет факты или LangMem объединяет связанные воспоминания, происхождение из первоначальных источников обычно теряется. Провенанс, который выдерживает слияние, требует, чтобы модель хранения поддерживала его с самого начала.

**Детерминизм.** Извлечение предполагает ранжирование, и результаты варьируются от запуска к запуску. Структурированные запросы детерминированы: один и тот же запрос возвращает один и тот же результат. Удаление функции ранжирования подрывает полезность поиска. Это принципиально разные контракты запросов.

**Локальный контроль.** Создание действительно локальной системы без зависимости от облака и телеметрии противоречит бизнес-модели большинства компаний, производящих память. Это не технический барьер; это проблема структурного стимулирования.

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

## Что извлечение все еще делает лучше

**Исследование.** Если вы хотите найти в своих заметках что-либо о квартире в Барселоне, вы не знаете схему или тип объекта. Извлечение соответствующих битов без предварительного моделирования.

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

**Специальный обход.** Когда вы спрашиваете, где обрабатываются веб-перехватчики Stripe, макет варьируется в зависимости от базы кода и документации. Поиск адаптируется без единого графа.

**Низкая первоначальная стоимость.** Вы можете получить рабочую память уже во второй половине дня. Для всего, что не требует полноты, последовательности или происхождения, поиск достаточен и обходится дешевле.

## Пробелы в структурированном состоянии и как Neotoma их устраняет

**Накладные расходы на схему.** Neotoma использует развивающийся реестр схем, в котором извлечение с помощью LLM предлагает типы и отношения во время приема. Это снижает первоначальные затраты, но не устраняет их. На практике агент со временем проверяет и исправляет результаты извлечения по мере обнаружения несоответствий.

**Сложность приема.** Neotoma вычисляет канонические идентификаторы на основе хеша на основе идентифицирующих свойств, поэтому один и тот же объект получает один и тот же идентификатор независимо от источника. Это более предсказуемо, чем сходство на основе встраивания, но это зависит от качества извлечения: «Марк» и «Марк Хендриксон» хешируются по-разному, пока вы их не объедините.

**Холодный старт.** Neotoma поддерживает двойной прием данных: вы можете загружать файлы для пакетного извлечения или постепенно накапливать состояние посредством диалогов с агентами. Это не мгновенно, но быстрее, чем ждать достаточного количества разговоров для построения полезного графика.

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

**Не заменяет поиск.** Neotoma обеспечивает структурный поиск по типу, идентификатору, взаимосвязи, временному диапазону и окрестностям графа и ожидает, что такие инструменты поиска, как агентный поиск и встроенный поиск, будут выполнять исследование. Это дополнение, а не замена.

## Почему я создаю Неотому

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

**Сначала схема.** Запросы выполняются по типу объекта, идентификатору, взаимосвязи или временному диапазону. В пути запроса нет встроенного сходства, а результаты являются детерминированными.

**Идентификация на основе хеша.** Один и тот же объект получает один и тот же идентификатор независимо от того, какой источник или сеанс его представил.

**Только добавление.** Каждый факт отслеживается до своего источника. Исправления создают новые записи, возможен откат.

**Кросс-инструмент через MCP.** Один уровень памяти доступен из любого клиента MCP: Cursor, ChatGPT, Claude или Claude Code. Одни и те же данные и одни и те же идентификаторы доступны везде.

**Сначала локально.** Все данные хранятся в SQLite и локальных файлах. Нет зависимости от облака и телеметрии. Вы можете проверить все, что делает система.

[Неотома](https://neotoma.io) рано. Это [версия для разработчиков](/posts/neotoma-developer-release): только локальная, сначала CLI, с эвристическим разрешением объектов, ручной эволюцией схемы и без веб-интерфейса. Он обеспечивает контракт, и аргумент заключается в том, что этот контракт необходим для агентов, которые обрабатывают текущее состояние, и что само по себе извлечение не может обеспечить его.

Поле сосредоточено на структурированной памяти. Вопрос в том, кто создает уровень, которому вы доверяете свои данные, и какие гарантии он предоставляет. Я хочу, чтобы этот слой был структурирован с самого начала, а не закреплялся постфактум. Локальный, открытый, проверяемый и находящийся под контролем пользователя.