RAG 与长上下文怎么选
RAG 和长上下文不是同一层面的选择。长上下文解决“模型一次能读多少”,RAG 解决“从哪里拿到正确材料、怎样控制材料、怎样追溯来源”。
如果你正在做知识库、客服、内部助手或文档问答,可以用下面这套决策方法。
1. 一句话选择
- 资料少、一次性分析、权限简单:选长上下文。
- 资料多、经常更新、需要引用、多人权限:选 RAG。
- 问题复杂且资料多:RAG 先召回,再用长上下文综合。
2. 决策矩阵
| 维度 | 长上下文 | RAG |
|---|---|---|
| 上手速度 | 快,工程少 | 需要切分、索引、检索 |
| 更新频率 | 更新后要重新组织上下文 | 文档更新后可重建索引 |
| 来源引用 | 可做但不稳定 | 更自然 |
| 权限控制 | 难度高 | 可检索前过滤 |
| 成本 | 大文档反复发送会贵 | 可控制召回数量 |
| 调试 | 难知道模型关注了什么 | 可查看召回片段 |
| 适合任务 | 单次阅读、总结、审阅 | 长期知识库、客服、FAQ |
3. 什么时候选长上下文
长上下文适合“材料边界明确”的任务。
例子:
- 分析一份年度报告。
- 审阅一组产品需求文档。
- 总结一场会议的转录文本。
- 对一个小型代码仓库做整体理解。
判断标准:
- 文档数量不大。
- 不需要频繁更新。
- 不涉及复杂权限。
- 回答不要求严格来源定位。
- 请求量不高,token 成本可接受。
4. 什么时候选 RAG
RAG 适合“长期可维护知识系统”。
例子:
- 客服 FAQ。
- 产品帮助中心。
- 内部制度问答。
- 销售资料库。
- 技术文档助手。
RAG 的关键价值:
- 检索最新文档片段。
- 给回答附来源。
- 根据用户权限过滤知识。
- 记录召回结果,方便排查。
- 降低每次请求的上下文长度。
5. 成本比较
不要只看模型是否支持长上下文。真正要看每次请求发送多少 token。
| 成本项 | 长上下文 | RAG |
|---|---|---|
| 初始开发 | 低 | 中到高 |
| 每次调用 | 可能很高 | 通常可控 |
| 维护成本 | 文档少时低 | 需要维护索引 |
| 错误排查 | 高 | 中 |
| 权限治理 | 高 | 中 |
如果每天只有几十次内部使用,长上下文可能够用。如果是公开产品,每天上千次问答,RAG 或混合方案更稳。
6. 混合方案
很多项目最后不会二选一,而是这样做:
用户问题
→ 权限过滤
→ RAG 检索 10–30 个候选片段
→ 重排和去重
→ 把关键片段放入较长上下文
→ 模型生成答案和引用
→ 记录召回与用户反馈这个方案的好处是:RAG 保证材料来源,长上下文负责综合推理。
7. 评估方法
上线前准备 30–50 个真实问题,分成三类:
| 类型 | 示例 | 看什么 |
|---|---|---|
| 精确事实 | 某功能限制是什么 | 是否找到正确来源 |
| 综合判断 | A 方案和 B 方案怎么选 | 是否引用足够材料 |
| 边界问题 | 问无关或无权限内容 | 是否拒绝或说明缺口 |
记录指标:
- 召回是否命中正确文档。
- 回答是否引用来源。
- 是否编造文档里没有的信息。
- 是否泄露无权限内容。
- 平均成本和延迟。
8. 失败案例
长上下文失败:
- 把整个知识库塞进去,成本高、慢、还难调试。
- 文档更新后忘记替换上下文。
- 不同用户看到不该看的资料。
RAG 失败:
- 文档切分太碎,召回片段没有上下文。
- 只用向量相似度,关键词命中差。
- 没有评估集,回答错了也不知道原因。
- 检索到旧文档,没有版本控制。
9. 最小推荐
如果你是第一次做:
- 先用长上下文做原型,验证用户问题。
- 收集真实问题和失败案例。
- 当文档增长、权限复杂、成本升高时再上 RAG。
- 上 RAG 后保留长上下文综合能力。
- 每月维护评估集和高频问题。
不适合场景
- 只为了赶热点写 Demo,不需要复杂 RAG。
- 高风险合规问答,不应只依赖长上下文。
- 没有文档治理的人,不要急着做大型知识库。
选型的核心不是技术名词,而是:材料会不会变、谁能看、能不能引用、错了能不能查、成本是否可控。