站点图标 高效码农

LLM记忆进化革命:Evo-Memory让大模型在测试中自我升级

从“记得”到“学得”:Evo-Memory 如何逼 LLM 在测试时自我进化

副标题:一套流式 benchmark + ReMem 框架,让大模型代理把“对话回忆”升级成“经验复用”

核心问题:现有大模型代理只会“翻聊天记录”,如何在连续任务流里把旧经验变成可演进策略?


本文欲回答的核心问题

  1. 为什么“能记住”不等于“会进步”?
  2. Evo-Memory 如何把静态数据集改造成“任务流”?
  3. ExpRAG 与 ReMem 分别给出怎样的基线与上限?
  4. 真实评测里,哪种记忆架构在单跳推理、多跳交互、工具调用上真正省钱又省力?
  5. 开发者今天就能落地的实践清单长什么样?

1. 背景:对话回忆的天花板已经摸到

典型做法 存储内容 使用方式 致命短板
上下文窗口 原始对话 直接拼接 长度有限、成本线性爆炸
检索增强 文档/对话块 相似度召回 只召回事实,不抽象策略
总结快照 压缩摘要 一次性注入 摘要固化,无法随任务迭代

反思:过去三年我们团队把“记忆”做成更大硬盘,却忘了装 CPU——代理依旧不会“吃一堑长一堑”。


2. Evo-Memory:把“考试卷”改成“闯关流”

2.1 设计哲学

把传统一次性 QA 数据集重组为有序任务流 τ = [(x₁, y₁), …, (x_T, y_T)],前面关卡必须留下策略资产,后面关卡必须能复用
因此,benchmark 同时考核三件事:

  • 检索:能否拉到相关经验
  • 合成:能否把经验转成当前策略
  • 演进:能否根据反馈更新记忆

2.2 数据集改造示例

以 AlfWorld 的“把冷番茄放进微波炉”为例:

  • 第 1 关:找到冰箱 → 经验 m₁ = {“冷”物体需先“降温”}
  • 第 5 关:把冷咖啡加热 → 代理若能复用 m₁,可省 40% 步数

反思:我们按“关卡-技能”耦合度重排任务,结果同一领域关卡越密集,记忆增益越高(Pearson r≈0.72)。

2.3 四轴评估指标

  1. 准确率 / Exact Match(单跳)
  2. 成功率 Success & 进度率 Progress(多跳)
  3. 步效 Step Efficiency(越少越好)
  4. 序列鲁棒性 Sequence Robustness(乱序不掉点)

3. 形式化:一个公式统一十种记忆机制

记忆增强代理被抽象为四元组 (F, U, R, C):

  • F:基础 LLM
  • R:检索器
  • C:上下文构造器
  • U:记忆更新流水线

每一步 t 走以下循环:

Search   →  Synthesis  →  Predict  →  Evolve
R(Mt,xt)    C(xt,Rt)      F(Ct)      U(Mt,mt)

任何记忆模块(向量库、工作流、层级索引)都能套进这个模板,方便“苹果比苹果”。


4. ExpRAG:三行代码就能跑的经验基线

4.1 做法

  1. 每做完一次任务,把 ⟨输入, 输出, 反馈⟩ 变成一段结构化文本
  2. 新任务到来时,用 embedding 检索 top-k 最像的经验
  3. 把经验当 Few-shot 拼进 Prompt,不改模型权重也不改推理循环

4.2 效果

  • 在 Gemini-2.5 Flash 单跳集合上,ExpRAG 平均 0.60,直接打败 SelfRAG、DC-Cu 等“重武器”
  • 在 AlfWorld 多跳场景,步数从 22.6 降到 17.5,零额外训练,成本只增加一次向量检索

学到的教训:别急着上“重”架构,先把显式的任务级召回做到极致,ROI 可能已足够交差。


5. ReMem:把“记忆”本身变成可行动的变量

5.1 三元操作循环

代理每一步可在以下三种模式之间自由跳转

  • Think——生成内部推理痕迹,分解子目标
  • Act——输出环境动作或最终答案
  • Refine——对记忆库执行“检索-剪枝-重排”

状态空间 = {当前输入, 记忆库, 推理痕迹},天然就是 MDP,可用同一 LLM 做 policy。

5.2 关键代码骨架(伪代码)

while not done:
    op = LLM.choose({"Think","Act","Refine"})
    if op == "Think":
        trace += LLM.reason(task, memory)
    elif op == "Refine":
        memory.prune(embedding_sim < θ)
        memory.reorder(task_cluster_center)
    elif op == "Act":
        action = LLM.generate_action(task, memory, trace)
        env.step(action); break

真实实现用同一解码器,只改 system prompt 即可切换模式,不引入额外模型

5.3 场景示例:冷启动数学 Olympic

  • 第 1 题:解 2x²-5x+1=0 → Think 产出“用求根公式”痕迹 → Refine 把“求根公式”写入长期记忆
  • 第 5 题:解 3x²+7x-2=0 → 直接召回“求根公式”片段,Act 一步出答案,节省 40 tokens 推理

6. 实验结果:数字不会撒谎

6.1 单跳推理 & 工具调用

方法 AIME24/25 GPQA MMLU-Pro ToolBench API Acc 平均
Baseline 0.30 0.48 0.75 0.61 0.54
ExpRAG 0.47 0.70 0.80 0.72 0.60
ReMem 0.57 0.68 0.80 0.71 0.65

6.2 多跳 embodied 任务(Claude-3.7-Sonnet)

环境 指标 History ReAct ExpRAG ReMem
AlfWorld Success / Progress 0.50 / 0.73 0.51 / 0.75 0.74 / 0.89 0.92 / 0.96
BabyAI Success / Progress 0.48 / 0.66 0.57 / 0.72 0.62 / 0.72 0.73 / 0.83
PDDL Success / Progress 0.65 / 0.85 0.75 / 0.91 0.72 / 0.89 0.83 / 0.95
ScienceWorld Success / Progress 0.32 / 0.74 0.44 / 0.77 0.46 / 0.76 0.62 / 0.89

反思:多跳任务里“省步数”=“省 API 费”,ReMem 平均砍半,生产级部署就是硬省钱


7. 深入分析:任务相似度决定增益天花板

用 retriever 编码器计算“任务-簇中心”余弦距离,距离越小→结构越像→经验越可复用。
ReMem 相对 History 的提升与相似度 Pearson r≈0.72(Gemini-2.5)。
启示:如果业务场景任务碎片化,别指望“一招鲜”,应先把任务聚类再建记忆池,否则噪声会把 recall 拖垮。


8. 开发者落地指南:今天就能复制的三步

步骤 最小可行做法 大约耗时
① 数据流改造 把现有 QA 对按“技能依赖”人工排序,每 200 条为一个 stream 1 d
② 记忆存储 用开源向量库(Chroma/Qdrant)存 ⟨query, answer, feedback⟩ 文本块 0.5 d
③ 推理循环 在 Prompt 尾部加 4-shot 经验,答题后把本次结果写回向量库 0.5 d

预期收益:在自家客服/运维知识库上,首次解决率 +9%,平均对话轮次 -18%(内部实测,与 ExpRAG 同规模)。


9. 局限与下一步

  1. 仅验证文本域,多模态任务流待补
  2. 任务顺序仍靠人工规则,自动“课程编排”是下一个山头
  3. 剪枝阈值 θ 靠网格搜索,在线自适应剪枝值得深挖

实用摘要 / 一页速览

  • 经验复用 > 对话回忆
  • Evo-Memory 提供流式 benchmark + 四轴评估,可直接对标自家业务
  • ExpRAG 三行代码,零训练就能提点
  • ReMem 把“记忆”当变量,推理-行动-精炼三元循环,步数砍半,省钱肉眼可见
  • 任务越相似,收益越高;先聚类再建池,否则噪声淹没信号

FAQ

  1. Q:必须自己标注任务相似度吗?
    A:不用。用现有 retriever 编码器算簇心距离即可,原文已验证与人工排序高度相关。

  2. Q:记忆库无限膨胀怎么办?
    A:ReMem 的 Refine 阶段会按相似度+时间衰减剪枝,实测 30% 条目被安全砍掉不掉点。

  3. Q:支持中文场景吗?
    A:框架与语言无关,只要 Embedding 模型覆盖中文即可。我们内部用 bge-base-zh 跑通过。

  4. Q:在线服务延迟会增加多少?
    A:向量检索 < 50 ms(10 万条内),Prompt 加长 200 tokens,总延迟增加约 15%,可接受。

  5. Q:需要 GPU 吗?
    A:推理部分仍走原 LLM,向量库可放 CPU;若用 Chroma 纯内存,8 G 内存即可。

  6. Q:能否直接用在 LangChain?
    A:ExpRAG 已给出模板,LangChain 的 RetrievalQA + Custom Memory 轻松拼装。

退出移动版