上下文工程:三种 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 映射
相关实体¶
- AI Agent 记忆系统架构
- LLM Wiki 架构
- 深度解析LLM Wiki / Obsidian-Wiki / GBrain:Agent时代知识的"自组织"与"自进化"
- hermes-agent-self-evolving-source-analysis
- AI Agent 工程师能力地图
→ 原文存档
-
[[entities/agent-memory-storage-six-schools-quantumtransf-debate-frank]
- MOC