Перейти к содержимому
Экосистема AI Vibe
← Назад к AI Vibe News

Редакция 31 июля 2026 г.

Разборы

Память агента без вызова LLM: что даёт RE-call и чего стоит Mem0

Память агента без вызова LLM: что даёт RE-call и чего стоит Mem0

Соло-разработчик с долгоживущим агентом на своём Postgres платит за каждую записанную «память» по-разному: ноль долларов на пути записи у RE-call против $7.29 в сопоставимом бенчмарк-workload у Mem0. В разборе gde03 сопоставляет два слоя — Mem0 с дистилляцией через LLM и RE-call, который на записи никогда не вызывает модель и хранит сырые реплики. Важнее итогового балла на BEAM то, что агент читает из извлечения как достоверный контекст: у Mem0 на вопросах с отказом от ответа до 46% реплик выглядят как факты без подтверждения в корпусе.

Два пути записи памяти агента

Архитектура памяти задаёт, что попадёт в контекст модели-ответчика при следующем запросе.

Mem0 при каждой записи вызывает LLM и сохраняет дистиллированную строку — сжатый итог диалога.

RE-call (MIT, pip install recall-rag) держит сырые реплики без модели на пути записи. Postgres + pgvector, без отдельной векторной БД и без очереди.

Материал — часть 4 серии «The Answerability Problem»; сравнение на корзине BEAM в миллион токенов — том же бенчмарк-наборе с нагрузкой около миллиона токенов. BEAM здесь контур тестов и бенчмарк (категории рассуждения о времени, отказ от ответа и др.), не продукт конкурента.

Mem0:    диалог → LLM при записи → дистиллированная память → извлечение
RE-call: диалог → сырые реплики в Postgres → извлечение (модель не вызывается)

Разница на выходе: точность, счёт на записи памяти, исходящий трафик данных и форма ошибки, когда подтверждения в корпусе нет.

Где Mem0 обгоняет на рассуждениях о времени

На категории рассуждения о времени — второй худший для RE-call на BEAM — Mem0 0.567 против 0.408 у RE-call. Измерение с переранжированием выключено (по умолчанию --reranker none); ячейка с переранжированием в этом сравнении не измерена.

Диагноз автора: не провал ранжирования. Пять из семи «плохо проигранных» вопросов — уверенный неправильный ответ на форму «сколько дней между A и B». RE-call держит много сырых реплик с разными датами одного события; Mem0 схлопывает в одну дистиллированную строку («Sprint 1 deadline: February 15, 2024»).

Переранжирование в проекте — крупнейший прирост качества извлечения: hit@5 0.671 → 0.777 на LOCOMO (Part 2 серии), но включение переранжировщика стоит ~1 050 ms/query и примерно wall clock.

Пост-публикационная правка в тексте: первоначальное утверждение про временной слой было преувеличено — окно валидности не заполнено, эвристика «побеждает самая новая дата» проверена и отвергнута; рабочий вариант в репозитории.

Счёт на записи памяти: $0 против $7.29

На идентичном benchmark workload таблица автора выглядит так:

RE-call Mem0
Вызовы LLM на построение памяти 0 272
tokens 0 2,6 M
cost $0 $7.29
wall clock записи 67 s 288 s (~4,3× медленнее)
где живут документы ваш Postgres LLM-провайдер, раз на каждую память

$7.29 — предельная стоимость на одну бенчмарк-память, не подписка; масштабируется с каждой записанной памятью. RE-call на пути записи: предельные $0 при любом масштабе и любой цене upstream.

Для соло-разработчика с накоплением памяти в агентном цикле это не абстрактный «облачный счёт» — каждая новая память у Mem0 структурно требует дистилляции наружу. RE-call позиционируется для offline, air-gapped и privacy-bound развёртываний: локальные embeddings, PostgreSQL, который у вас уже развёрнут, без нового субпроцессора в DPA на пути записи.

Облачный embedder — измеренная опция, не default: wins на 16 из 17 held-out corpora, median +0.059 hit@5; 246 ms p50 против 45 ms local — каждый документ и query уходит с вашей машины.

Retrieve latency 77 ms против 104 ms автор помечает как directional only (разные backends, optimistic bootstrap CI).

46% выдумок: когда память агента врёт

Категория BEAM отказ от ответа: вопросы, где корректный ответ — «в корпусе этого нет» (n = 70).

Автор оценил опубликованные ответы Mem0 с судьёй Mem0:

  • отказались ответить: 38, mean score 0.974
  • ответили всё равно: 32, mean score 0.016

32 из 7046% — доля случаев, когда система отвечает, хотя подтверждения отсутствует.

Пример выдумки: на вопрос о feedback, который не записан, Mem0 ответил про «90% satisfaction rate» — извлечение подняло спекуляцию ассистента «achieving a 90% satisfaction rate is a strong start», модель-ответчик прочитала как факт.

Published score Mem0 на BEAM автор воспроизвёл до 0.0005 (0.6414 vs 0.6409) — бенчмарк не «подогнан» под вендора; иначе 46% выдумок не всплыли.

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

Отказ RE-call от ответа: молчание против выдумки

Политика RE-call по умолчанию: корректно отказывается 23,3% времени при 9,3% ложных отказов — на 30 unanswerable + 270 answerable questions, conversations 0–14, $0 (probe needs no LLM); reranker off; best of five tested policies (более строгие policies net worse на BEAM 9:1 mix).

Entailment abstention — off by default (Part 2 — 2 000 слов, почему не спасает hard case).

Ограничения BEAM для интерпретации:

  • Unanswerable questions score выше median top-1 cosine, чем answerable (0.676 vs 0.641) — adversarial construction; фигуры BEAM = upper bound на сложность.
  • Scoring mix 9:1 против withholding; abstention ~10% BEAM — aggregate не годится для abstention claims.
  • Нет paired BEAM aggregate в repo — только per-category cells и abstention probe.

LOCOMO и сильная модель-читатель: когда запас сжимается

На LOCOMO — другой бенчмарк, те же вопросы/генератор/судья, отличается только память — paired McNemar, n = 1 540. Примеры ячеек:

  • gpt-4o-mini / gpt-4o-mini: RE-call 0.416, Mem0 0.378, p = 0.0059
  • gpt-4o-mini / gpt-4o: RE-call 0.466, Mem0 0.412, p = 0.00018
  • gpt-4o / gpt-4o: RE-call 0.484, Mem0 0.444, p = 0.0065

Holm–Bonferroni across five cells holds (largest adjusted p = 0.012).

Преимущество — свойство модели-читателя; запас сжимается, как усиливается генератор; на Claude Sonnet переворачивается (0.565 vs 0.608, n = 584, post pre-registration). Абсолютные числа 0.416–0.484 — не headline 92.5 из Part 1 leniency stack.

Контур тестов BEAM фиксирует gpt-5 как модель-ответчик и судью; published 64.1 — mean rubric-nugget score, pass rate того же run 70.14%.

Когда Mem0, когда RE-call

Явная рекомендация автора:

Mem0 / дистилляция через LLM — если нужны рассуждения о времени и multi-hop на плотном материале, сильная модель-читатель, стоимость на память приемлема, исходящий трафик к провайдеру модели допустим.

RE-call — если предельная стоимость памяти должна быть нулевой, данные не могут уходить наружу, нужен offline, прозрачное и переключаемое извлечение, или выдумка хуже, чем молчание.

Для компании с закупкой разговоров с клиентами и DPA/субпроцессорами это часто решают раньше точности. Соло без отдельного продакта выбирает между «платить и слать наружу на каждую память» и «держать сырые реплики в Postgres, который уже крутится».

Стек настраивается переключателями, оба режима измерены: embedder — hashing model, bge-small, bge-large, Voyage, OpenAI-compatible across 17 corpora; переранжирование — один флаг.

Автор строит следующий бенчмарк: каждое число пересчитывается за $0, без модели в цикле, git как база данных; оспаривание — pull request; RE-call на доске с неудобным баллом; поддельная заявка как fixture (проходит пять из шести механических проверок).

Источники

  • gde03 — «The memory layer that never calls an LLM: what that buys, and what it costs» (Dev.to, 30 июля 2026, ~10 мин чтения; теги ai, opensource, discuss): Dev.to
  • Фигуры и воспроизводимость: results/FINDINGS.md §9d–§9p, RESULTS.md §9–§11; установка RE-call: pip install recall-rag (MIT)