跳转至

上下文工程:三种 Agent Memory 方案对比实验

Ch06.027 上下文工程:三种 Agent Memory 方案对比实验

📊 Level ⭐⭐ | 7.5KB | entities/context-engineering-three-memory-paradigms.md

三种方案核心对比

方案 记忆载体 代表工作 容量 延迟 核心结论
隐式记忆 MSA KV cache 分级缓存 EverMind MSA 100M tokens ~9448ms HotpotQA 强,小说QA弱(压缩有损)
参数记忆 D2L LoRA 权重 SakanaAI Doc-to-lora ~8K tokens ~4007ms 全面失败,幻觉率极高
显式记忆 RAG 文本向量检索 FAISS + Embedding 无限 ~2249ms 小说QA最强,HotpotQA次之

关键实验结论

MSA:压缩换扩展性的合理取舍

  • HotpotQA(多跳检索):MSA > RAG(4.172 vs 3.815)
  • 小说 QA(细粒度推理):RAG > MSA(2.152 vs 1.574)
  • 原因:64 token mean pooling 稀释细粒度词序/转折/修饰,MSA 论文消融实验显示禁用原始文本注入下降 37.1% D2L:方向正确但执行失败

  • gold 答案字符串出现率 32%(RAG 76%)

  • 信息越多表现越差(8K 下 1.435 分)
  • 权重空间不足以精确存储细粒度事实 RAG:延迟最低,效果最稳定

  • 2249ms(LLM 生成为瓶颈)

  • 小说 QA 表现最佳(直接截取原文保留细节)

深度分析

1. MSA 的信息有损根因

MSA 的核心压缩机制是 chunk-level mean pooling(每 64 个 token 压缩为 1 个向量)。这在语义聚合类任务(如知识问答)上表现良好,因为全局主旨信息得以保留;但在需要精确回溯的任务(如小说情节中的时间线、人物关系、细节描写)上,pooling 过程丢失了:

  • 词序信息:mean pooling 等概率混合所有 token 的 hidden state,词序被打平
  • 转折/修饰关系:转折连词、程度副词、否定词等细粒度信号被稀释
  • 命名实体边界:人名、地名、蛊虫名等关键实体的精确边界被模糊化 MSA 论文原文消融实验印证了这一点:禁用原始文本注入后,DuReader 阅读理解任务下降 46.2%,说明压缩 KV 只能保留高层语义,底层细节必须依赖原始文本补充。

2. D2L 失败的本质:权重空间的表达能力不足

Doc-to-lora 的思路是"将文档编码为 LoRA 权重,附加到冻结的 LLM 上",这在概念上很优雅——让模型"记住"文档内容而无需在 context 中输入。但实验结果揭示了一个根本矛盾:

  • LoRA rank=8 的表达能力上限:rank-8 LoRA 的参数量约数十万,而一篇 8K tokens 的文档信息量(以 embedding 维度计)约为 8192 × hidden_dim,两者相差数个数量级
  • 信息压缩是单向有损的:embedding → 权重 的映射必然丢失细粒度信息,模型只能学到"文档风格的概要"而非"文档内容的精确表述"
  • 幻觉是必然结果:当权重中没有精确事实存储时,模型会用自己的参数知识填充空白,导致 32% 的输出包含 gold 答案字符串(D2L),而 RAG 达到 76%

3. RAG 在延迟-效果权衡中的最优位置

方法 延迟 吞吐量瓶颈 效果上限
MSA ~9448ms 两轮生成 + KV 跨层级传输 受限于压缩质量
D2L ~4007ms document→LoRA 编码 权重表达能力硬上限
RAG ~2249ms LLM 生成 只受 embedding 质量限制
RAG 延迟最低的原因在于它将记忆存储外包给独立的向量数据库,LLM 只负责生成;延迟的主要来源是 LLM 生成本身,而非检索。MSA 延迟最高是因为需要两轮模型 forward pass(router + generator)且 KV 需要跨内存层级加载。

实践启示

场景选型决策树

任务类型
├── 精确事实回溯(小说情节、法律条文、技术文档)
│   └── 选 RAG,拒绝 MSA 和 D2L
├── 大规模知识检索(100M+ tokens 知识库问答)
│   ├── 细粒度推理需求低 → MSA
│   └── 细粒度推理需求高 → MSA + 原始文本双路注入
└── 需要 0 context 回答(离线嵌入式设备)
    └── 暂不推荐 D2L,等 rank 提升或混合架构成熟

MSA 的最佳实践:双路注入

MSA 的信息有损问题有已验证的解法:保留压缩 KV 用于路由检索,同时在推理时注入原始文本。原论文消融实验显示此举可补回 37.1% 的性能损失。实现要点:

  • Router Key 全量存 GPU:用于快速 top-k 筛选
  • 压缩 K/V 存 CPU 内存:按需加载到 GPU
  • 原始文本按 chunk 缓存:与压缩 KV 联合检索,优先使用原始文本进行最终生成

RAG 的优化方向

当前 RAG 配置(Qwen3-Embedding-4B + top-5 + 1500 字截断)在小说 QA 上已经表现最佳,但仍有提升空间:

  • 重排器(reranker):当前未使用,加入 reranker 可进一步提升多跳推理场景的 precision
  • 动态分块:小说等叙事性文本建议按节或段落分块,而非固定长度切分,保留完整情节上下文
  • 混合检索:结合 dense embedding + sparse(BM25),兼顾语义匹配和关键词精确命中

D2L 的未来方向

D2L 的方向(将知识编码进模型权重)逻辑上可行,当前瓶颈是 rank 不足。未来可能的突破路径:

  • rank 扩展:LoRA rank 从 8 提升至 128+,但参数量同步增长,推理延迟需优化
  • 混合架构:D2L 提供"知识风格"预热,RAG 提供精确事实补充
  • 专有模型:针对文档编码任务训练专用 encoder-decoder,直接输出权重而非通过 hypernetwork 映射

相关实体

原文存档