Сравниваем системы памяти для агентов: RE-call против MemPalace на 1453 сессиях. Узнайте, почему инструкция без памяти вредит, и как выбрать лучший инструмент.
Если вы разрабатываете агентов на Python и задумывались о добавлении памяти, этот бенчмарк — для вас. Мы сравнили две системы памяти (RE-call и MemPalace) на 1453 сессиях агентов, где 63% задач были специально созданы, чтобы память мешала. Результат неожиданный: простая инструкция "используй память" без реальной памяти ухудшает работу агента на 17 ячеек. Узнайте, как отделить реальную пользу от эффекта плацебо.
Корпус из 4911 документов (около 27 000 эмбеддингов) содержит 36 задач. 4902 документа — отвлекающие маневры, созданные из словаря корпуса, чтобы запутывать агента. Только 37% ячеек содержат чистый факт, остальные — устаревшие, противоречивые, нерелевантные или пустые. Это сделано намеренно: бенчмарк, где память только помогает, — это демо, а не тест.
Мы добавили контрольную группу, где агент получает полную инструкцию о необходимости использовать память, но самой памяти нет. Результат: такая группа показала на 17 ячеек хуже, чем агент без всяких инструкций (p = 0.053). Это значит, что призыв "обратись к памяти" без реальной памяти вредит агенту.
Мы сравнили две системы: RE-call (разработка автора) и MemPalace (известная система). Обе получили одинаковую инструкцию и одинаковые условия. Никакие инструменты записи не использовались.
| Сравнение | Победы | Поражения | Нетто | p |
|---|---|---|---|---|
| RE-call vs инструкция | 41 | 21 | +20 | 0.015 |
| MemPalace vs инструкция | 25 | 23 | +2 | 0.885 |
| RE-call vs MemPalace | 48 | 30 | +18 | 0.054 |
| RE-call vs без памяти | 47 | 44 | +3 | 0.834 |
| MemPalace vs без памяти | 38 | 53 | -15 | 0.142 |
Единственное сравнение с p < 0.05 — RE-call против контрольной группы с инструкцией. Против агента без памяти RE-call показывает лишь +3 ячейки (p = 0.834), что статистически незначимо. Это честный результат, который скептики могут использовать.
Таблица ниже показывает решенные задачи по условиям (учитывались только ячейки, где все четыре группы дали результат).
| Условие | Ячеек | Без памяти | Инструкция | RE-call | MemPalace | Выигрыш RE-call |
|---|---|---|---|---|---|---|
| present | 134 | 52 (0.388) | 53 (0.396) | 67 (0.500) | 56 (0.418) | +14 |
| superseded | 52 | 38 (0.731) | 34 (0.654) | 41 (0.788) | 35 (0.673) | +7 |
| absent | 60 | 49 (0.817) | 41 (0.683) | 44 (0.733) | 37 (0.617) | +3 |
| contradictory | 54 | 44 (0.815) | 41 (0.759) | 39 (0.722) | 42 (0.778) | -2 |
| adjacent | 58 | 42 (0.724) | 39 (0.672) | 37 (0.638) | 40 (0.690) | -2 |
| все | 358 | 225 (0.628) | 208 (0.581) | 228 (0.637) | 210 (0.587) | +20 |
RE-call — единственная система, которая обходит агента без памяти (на 0.9 процентных пункта). MemPalace показывает 210/358, что ниже базовой линии без памяти. Память окупается там, где есть что вспомнить, и вредит там, где ничего нет.
63% ячеек созданы так, чтобы наказать память: устаревшие, противоречивые, нерелевантные или пустые данные. RE-call все равно обходит базовую линию, тратя почти две трети времени в условиях, где поиск вредит. Это число (63%) — самое важное: даже в неблагоприятной среде память окупается.
Для каждой системы мы посчитали разницу в решенных задачах между сессиями с поиском и без него:
| Условие | RE-call | MemPalace |
|---|---|---|
| present | +0.181 | +0.019 |
| adjacent | +0.147 | -0.032 |
| contradictory | +0.079 | +0.085 |
| absent | +0.031 | +0.264 |
| superseded | +0.006 | -0.094 |
Когда RE-call ищет, он помогает во всех пяти условиях. MemPalace вредит в двух (adjacent и superseded), при этом ищет чаще (0.58 против 0.46). На условии present, где ответ точно есть в памяти, поиск дает RE-call +0.181, а MemPalace всего +0.019. Это ключевая ячейка, ради которой существуют обе системы.
RE-call быстрее и экономит 38% токенов по сравнению с MemPalace: 65.9 секунды и 56 476 токенов на сессию против 68.6 секунды и 90 706 токенов. Обе системы тяжелее, чем отсутствие памяти (44.7 секунды, 14 085 токенов), что является честной ценой за идею.
В предыдущем прогоне RE-call выглядел худшей системой. Причина — ошибка в тестовом стенде: RE-call получал 1958 байт инструкций против 853 у MemPalace. Большая часть была общими советами, которые помогают любой системе. После исправления разрыв сократился с 1.8x до 1.35x, а ущерб от памяти стал одинаковым. Мы публикуем это, чтобы вы могли доверять результатам.
RE-call имеет слой графа рассуждений, но в этом тесте он не использовался ни разу, потому что корпус состоит из транскриптов без перекрестных ссылок. Это не слабость, а ограничение: граф требует авторских связей, как в вики. Мы не стали добавлять искусственные ссылки, чтобы не подгонять результат.
Если вы выбираете память для агента, не верьте рекламе. Соберите свой тест на корпусе, где 63% данных — мусор, и сравните с базовой линией без памяти. Используйте наш открытый стенд github.com/GiulioDER/agent-memory-bench — он уже готов. И помните: даже в худшем случае хорошая память окупается, а плохая — вредит. Проверяйте на своих данных.
# Пример: как сравнить свою систему памяти с базовой линией
# Установите зависимости: pip install agent-memory-bench
from agent_memory_bench import run_comparison
# Ваша система памяти (адаптер)
my_adapter = "my_memory_system"
# Базовая линия без памяти
bare_adapter = "bare"
results = run_comparison(
adapters=[my_adapter, bare_adapter],
corpus="path/to/corpus",
seeds=3
)
print(results.summary())
# Смотрите на net-выигрыш относительно bare, а не на абсолютные числа
Запустите тест, чтобы узнать, действительно ли ваша память помогает агенту, или это просто эффект инструкций.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →