跳转至

长上下文模型会替代 RAG 吗?

  • ID:Q028
  • 难度:进阶 / 系统设计
  • 标签:Long Context、RAG、Prompt Caching、Retrieval、知识治理
  • 时效性:上下文窗口、价格和缓存能力持续变化,回答日期为 2026-08-01

同义问法

  • 模型支持百万 Token 后还需要向量库吗?
  • 全量文档直接塞进上下文有什么问题?
  • 长上下文和 RAG 应该怎么组合?
  • 什么时候 Full Context 比检索更好?

来源

  • 用户提供的二手题库:3.19

可视化图解

flowchart TD
  Q[任务输入] --> S{内容规模与更新频率}
  S -->|小且一次性| L[直接长上下文]
  S -->|大或持续更新| R[RAG]
  S -->|既需全局又需精准证据| H[混合方案]
  H --> L2[摘要与核心材料进入长上下文]
  H --> R2[细节按需检索]
  L --> V[统一做引用与完成验证]
  R --> V
  L2 --> V
  R2 --> V

核心结论

长上下文扩大了单次推理可以读取的信息范围,但没有消除检索、权限、版本、成本和证据治理问题。 RAG 也不是固定的“向量 Top-K + 拼 Prompt”,它会与长上下文、关键词检索、结构化查询和 Agentic Search 组合。

未来更常见的形态是:先通过检索和权限系统缩小可信工作集,再利用长上下文进行跨片段理解和推理。

一、长上下文解决了什么

它降低了以下任务的切分压力:

  • 阅读单份长合同、代码库子模块或研究报告;
  • 跨较远段落做综合;
  • 在一次请求中保留更长的会话和工具结果;
  • 对固定材料做全文总结和对照。

若语料规模有限、频繁复用同一份材料且延迟成本可接受,直接输入全文可能比复杂检索更简单,也避免了漏召回。

二、为什么仍需要 RAG / Retrieval

1. 语料规模远大于上下文

企业知识通常是百万文档、多个代码仓库和持续增长的日志,不可能全部放入一次请求。

2. 权限和租户隔离

检索层在进入模型之前完成 ACL、租户、地域和数据级权限过滤。不能把越权材料先交给模型,再要求它“不要引用”。

3. 数据新鲜度和版本

知识持续更新。索引和元数据可以按版本、有效时间和来源选择证据;大上下文本身不解决“哪份是当前有效规则”。

4. 成本与延迟

更长输入意味着更多预处理、网络传输和推理资源。Prompt Cache 可以降低重复前缀成本,但不能让任意动态语料免费,也不能消除首次加载和检索选择问题。

5. 注意力不是完美数据库

模型能接受长输入,不代表对每个位置、细节和相互冲突的证据都同样稳定。信息噪音、重复和位置效应仍会影响输出。

6. 可追溯性

RAG 可以明确记录检索了什么、为什么选它、引用来自哪里。把整库塞进上下文后,事实归因和故障定位反而更难。

三、两种方案的决策维度

维度 长上下文优先 Retrieval 优先
材料规模 单份或少量文档 大型动态知识库
任务 全文总结、跨段综合 精确定位、实时事实
权限 材料已预先授权 细粒度 ACL / 多租户
更新 低频、固定快照 高频更新和版本选择
证据 需要整体阅读 需要明确引用和审计
延迟成本 可接受 需要缩小输入

四、组合架构

对应流程使用 Mermaid 图解展示。

检索不一定只返回小 Chunk。可以先用小块定位,再加载完整章节、文件或相关代码模块,让长上下文负责深度理解。

这就是:

小单元负责找到入口,大上下文负责读懂局部工作集。

五、什么时候可以暂时不用 RAG

  • 用户刚上传一份规模可控的文档;
  • 单仓库局部模块分析;
  • 文档不涉及复杂权限;
  • 任务需要全文比较,检索容易漏掉隐含关系;
  • POC 阶段先验证模型能力。

但即使不用向量检索,也仍需要:文件解析、Token Budget、版本快照、引用定位和输入安全。

六、什么时候必须保留检索

  • 多租户企业知识库;
  • 实时日志、工单和数据库;
  • 海量代码仓库;
  • 强时间有效性;
  • 高并发成本敏感;
  • 需要可解释引用;
  • 需要多数据源路由。

七、Agentic RAG 的变化

传统 RAG 是一次固定检索。Agentic RAG 允许模型根据当前证据决定:

  • 还缺什么;
  • 换哪种 Query;
  • 查哪个数据源;
  • 是否加载父文档;
  • 是否已经足够回答。

但这也带来循环、成本和错误放大,必须由 Runtime 设置预算、停止和证据验证。

常见错误回答

长上下文成本高,所以 RAG 永远更好。

对于单份长文档的全文综合,错误切块和漏召回可能比全文输入更糟。

有百万 Token 后 RAG 就没有意义。

上下文长度不解决海量语料、权限、新鲜度、版本和可追溯问题。

面试口述版

长上下文解决的是一次推理能读多少,RAG 解决的是从大规模、动态且有权限边界的数据中选择什么进入推理。两者不是替代关系。对于单份长文档和全文综合,我可能直接使用长上下文;对于企业知识库、日志和代码平台,仍需要检索做权限、版本、新鲜度和成本控制。更合理的组合是用小块或结构化检索定位相关工作集,再加载完整章节或文件交给长上下文模型推理,并保留引用和验证链路。

结合个人项目

Claude Code 类平台不应把整个大型仓库始终塞入 Context。可以通过符号、文件路径、Git diff 和语义检索定位相关模块,再按需要读取完整文件;长上下文用于理解当前任务涉及的局部代码工作集。