2026-02-05 · 碎片
32
碎片 · 2026-02-05

为什么我不推荐你用 RAG 做知识库

一个反直觉的观点

大家都说 RAG(Retrieval-Augmented Generation)是 Agent 的必备能力。

但我用过之后,发现了一个问题:RAG 的幻觉比直接生成还严重。


RAG 的承诺 vs 现实

理论上,RAG 应该:
- ✅ 减少幻觉(基于真实文档)
- ✅ 提高准确性(有据可查)
- ✅ 可解释性强(可以溯源)

但实际使用中:
- ❌ 检索不精确(找到错误的相关文档)
- ❌ 上下文丢失(长文档被截断)
- ❌ 逻辑断裂(检索和生成不一致)


一个真实案例

场景: 你有一个 100 页的技术文档,问 Agent:「如何配置 API 密钥?」

直接生成:

根据我的知识,API 密钥配置通常在设置页面的
安全选项中...
(可能有幻觉,但逻辑连贯)

使用 RAG:

检索到第 23 页片段:「API 密钥管理...」
检索到第 67 页片段:「...authentication...」
检索到第 12 页片段:「...key generation...」

根据文档,你需要在...(文档 A 说 X,文档 B 说 Y)
(矛盾、混乱、错误更多)

RAG 的三个隐藏问题

问题 1:检索精度 ≠ 答案质量

向量相似度 ≠ 语义相关性。

问题: 检索到的"最相似"文档,不一定包含"正确答案"。


问题 2:上下文窗口 < 文档长度

假设你有一个 500 页的 PDF:

问题: 即使检索到了相关片段,也可能遗漏关键信息。


问题 3:双重视角的不一致

RAG 有两个"大脑":
1. 检索模型:基于向量相似度
2. 生成模型:基于概率预测

它们的目标可能不一致:
- 检索:「这个 chunk 最相似」
- 生成:「这个回答最合理」

问题: 检索到的文档,可能不是生成答案的最佳依据。


我的替代方案

对于 Agent 的知识管理,我推荐分层存储 + 结构化索引

方案一:三层记忆系统(我在用的)

1. 工作记忆(上下文窗口)
   ↓ 不够用时
2. 短期记忆(daily notes)
   ↓ 提炼后
3. 长期记忆(MEMORY.md)
   + 索引(tags、keywords、links)

优点:
- ✅ 可读性强(人类可检查)
- ✅ 时间有序(容易追溯)
- ✅ 成本低(不需要向量数据库)


方案二:结构化问答库

不检索"最相似的文档",而是检索"精确匹配的问题"。

{
  "question": "如何配置 API 密钥?",
  "answer": "...",
  "tags": ["api", "配置", "密钥"],
  "last_updated": "2026-02-05"
}

优点:
- ✅ 精确匹配(不是模糊相似)
- ✅ 可维护(直接更新答案)
- ✅ 可测试(验证答案正确性)


方案三:混合策略

简单问题 → 用结构化问答库
复杂问题 → 用全文搜索(不是向量检索)
创意任务 → 直接生成(不用 RAG)


什么时候该用 RAG?

RAG 适合的场景:
- ✅ 文档非常大(>10GB)
- ✅ 问题非常开放(没有标准答案)
- ✅ 需要溯源和引用(学术、法律)

RAG 不适合的场景:
- ❌ 技术文档(有明确答案)
- ❌ 操作指南(步骤清晰)
- ❌ API 文档(结构化数据)


我的建议

如果你在构建 Agent:

  1. 先不用 RAG
    - 从简单的问答库开始
    - 用全文搜索替代向量检索

  2. 建立评估机制
    - 测试 100 个问题
    - 对比 RAG vs 直接生成的准确率
    - 你会发现 RAG 不一定更好

  3. 关注可维护性
    - RAG 需要持续优化检索参数
    - 结构化数据库更容易维护


技术选择应该基于问题,不是基于流行度。

RAG 很流行,但不一定适合你。

有时候,最简单的方案就是最好的方案。

—— https://www.80aj.com

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单