Как устроена общая память ИИ-агентов и почему ей нельзя слепо доверять
Коротко
- Автор
Хабра построил общую память для нескольких ИИ-агентов. Они могут пользоваться знаниями друг друга, а система сохраняет источники фактов и помогает отличать актуальные решения от устаревших.
- На 8 ноября 2026 года общая память содержала 10 079 узлов и 13 127 связей. Система ищет сведения по словам, смыслу и связям между фактами, но количество записей не гарантирует точности ответов.
- Небольшой тест выявил проблему: два из трёх заведомо посторонних запросов вернули нерелевантные факты. Автор объясняет, почему память должна уметь не только находить информацию, но и признавать её отсутствие.
Автор использует нескольких ИИ-агентов, с которыми общается через
Telegram. Они решают разные задачи, но часть информации им нужна общая. Передавать каждому историю всех разговоров неудобно, а краткие пересказы не всегда помогают: при сжатии можно потерять именно ту подробность, которая понадобится позже.
Поэтому память разделена на четыре уровня. Первый — текущий разговор, который видит модель. Второй — короткие постоянные заметки отдельного агента. Третий — архив переписок, к которому можно вернуться за подробностями. Четвёртый — общий граф знаний, где хранятся извлечённые из разговоров факты и связи между ними.
Масштаб уже заметный. По результатам проверки работающей базы 8 ноября 2026 года в ней находилось 10 079 узлов и 13 127 связей. У всех узлов были заполнены векторы — числовые представления текста, которые помогают находить похожую по смыслу информацию. Однако количество записей ничего не говорит о точности ответов: один узел не обязательно соответствует одному проверенному факту.
Как всё работает на практике? Автор приводит вымышленный пример. Пользователь сообщает одному агенту: «Для проекта Альфа решили запускать отчёты по понедельникам». Позже он спрашивает другого: «Когда выпускаем отчёты по Альфе?» Чтобы ответить, система должна найти решение, связать его с нужным проектом и проверить, не изменилось ли расписание. При этом важно сохранить не только сам факт, но и его источник: кто, когда и в каком сообщении об этом сказал.
Для этого отдельный процесс читает новые сообщения и передаёт их в очередь на обработку. Сначала система определяет автора и удаляет служебные вставки, включая сведения из памяти, которые ранее сама подставила агенту. Иначе возникнет замкнутый круг: старый факт попадёт в новый разговор, оттуда снова в память и будет ошибочно принят за новую информацию.
Затем модель выделяет сущности и связи между ними. Для каждой сущности она должна привести цитату из исходного сообщения. Программа проверяет, действительно ли такая фраза есть в тексте, и отклоняет записи с вымышленными подтверждениями. Но подлинная цитата ещё не гарантирует верного вывода. Модель может неправильно понять сказанное, а связи между сущностями в текущей реализации проверяются только по структуре, без отдельного подтверждения каждой связи цитатой.
Факты и связи хранятся в PostgreSQL. Для поиска система сочетает несколько способов: совпадение слов, учёт русских словоформ, переходы между связанными записями и поиск по смыслу через расширение pgvector. Вектор запроса содержит 384 компонента. По умолчанию установлен порог сходства 0,80 и минимальная разница 0,02 между ведущими кандидатами. Это помогает отсекать неоднозначные результаты, хотя и не исключает ошибок. Если локальная модель для построения векторов перестаёт отвечать, остальные способы поиска продолжают работать.
Проверка от 4 августа 2026 года показала, зачем нужна такая осторожность. Автор взял девять запросов: шесть, для которых в памяти были ожидаемые ответы, и три заведомо посторонних. Каждый запрос проверялся в трёх режимах. Поиск только по словам находил нужный факт в конечной выдаче в четырёх из шести положительных случаев, а режимы с графом — в пяти. Но два из трёх посторонних запросов тоже возвращали информацию, хотя правильным ответом было бы отсутствие подходящих записей.
Причину удалось найти. Одно общее слово создавало слабое совпадение, после чего поиск переходил к соседним узлам графа и собирал всё больше посторонних сведений. Кроме того, один вопрос на английском, перефразирующий известный системе факт, не дал нужного ответа ни в одном режиме. Это был небольшой диагностический тест, а не полноценное исследование качества. С тех пор код менялся, поэтому результаты нельзя считать оценкой нынешней версии.
Даже правильно найденная информация может не дойти до агента. В Hermes на автоматически добавляемые сведения из памяти по умолчанию выделено 2 800 символов вместе со служебным заголовком. Раньше поиск мог собрать длинный список, который затем просто обрезался. Нужный факт оставался в базе и даже находился поиском, но исчезал из текста, переданного модели. Теперь система учитывает ограничение заранее, а агент при необходимости может самостоятельно запросить дополнительные сведения.
Отсюда важное различие: найти подходящий факт и действительно передать его модели — две разные задачи. Поэтому автор предлагает оценивать качество не только по результатам поиска, но и по тому, какие сведения в итоге получает агент.
Есть ещё две проблемы: повторы и устаревшие решения. Если очередь повторно доставит уже обработанное сообщение, система не должна записывать его второй раз. Для этого идентификатор события и изменения графа сохраняются в одной транзакции. При ошибке изменения откатываются, а повторная доставка того же события не создаёт дубль. Правда, сообщения с разными идентификаторами, но одинаковым содержанием всё ещё могут потребовать отдельной проверки.
С устареванием сложнее. Допустим, отчёты по проекту Альфа сначала решили выпускать по понедельникам, а затем перенесли на среду. Старое решение нельзя просто забыть: оно остаётся частью истории. Но и выдавать его за действующее нельзя. Поэтому запись можно пометить устаревшей, сохранив исходный текст и основание изменения. При неоднозначном совпадении система не выбирает запись автоматически, а требует уточнения. Смысловое сходство не доказывает, что два утверждения относятся к одному и тому же решению.
Отдельное внимание автор уделяет безопасности. Правила в графе можно ограничивать по роли, конкретному агенту или времени действия. Но это ещё не означает, что клиентские данные полностью изолированы друг от друга. Права доступа к базе, резервным копиям и журналам, а также передачу сведений внешним моделям необходимо проверять отдельно.
Главный вывод разбора: общая память ИИ-агентов — это не просто база с векторами. Важно правильно определить автора сообщения, извлечь сведения, сохранить источник, найти нужную запись и проверить её актуальность. Чем дольше работает система, тем важнее становится не объём накопленных знаний, а способность вовремя достать правильный факт и не подменить его устаревшим или чужим.
FAQ
Зачем ИИ-агентам общая память, если можно сохранять историю переписки?
В длинной переписке сложно быстро найти конкретное решение, а краткий пересказ может потерять важные детали. Общий граф знаний позволяет разным агентам находить нужные факты и при необходимости возвращаться к исходным сообщениям.
Как система отличает актуальные решения от устаревших?
Старые сведения не удаляются, а получают пометку об устаревании с указанием основания. Если система не может однозначно определить, какую запись нужно изменить, она требует уточнения вместо автоматического выбора по смысловому сходству.
Читайте также
Наглядный пример, зачем нужны AI-агенты
Команда небольших ИИ-агентов обошла мощные системы: что показал эксперимент
Как научить ИИ-аудитора доступности не находить несуществующие ошибки
ИИ-бот в MAX и Telegram: 416 пользователей за четыре дня, но возвращаются лишь 7%
Почему ИИ-агенты обходятся дорого и как кэширование снижает расходы в 6,6 раза
- Четырёхуровневая архитектура памяти ИИ-агентов: При разработке общей памяти для нескольких ИИ-агентов полезно разделять четыре уровня: текущий контекст запроса, постоянные заметки отдельного агента, архив исходных диалогов и общий граф знаний с фактами и связями. Такое разделение позволяет агентам обмениваться знаниями без передачи всей истории разговоров, сохраняя возможность проверить исходный источник. Каждый уровень требует самостоятельных правил хранения, обновления и очистки.
[ИИ-агенты / Архитектура памяти]
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Один ИИ-агент узнал о важном решении, а другому приходится объяснять всё заново. Автор Хабра показал, как построил общую память для нескольких агентов на PostgreSQL и графе знаний — и почему сохранить информацию гораздо проще, чем вовремя найти нужный факт и убедиться, что он не устарел.