Long-form

Long Context vs RAG 之战:1M 上下文窗口何时是错的工具

6 min read ·

2026 年 4 月,Gemini 3 Pro 把上下文窗口推到 10M token;Opus 4.7 的 1M 窗口已成新标配。Hacker News 上一篇热帖宣称 “RAG is dead”,引来无数同行附议。但翻开生产系统的真实账单和延迟监控,你会发现 RAG 并没有死,反而在新的工具光谱中找到了更清晰的位置。

本文不重复 1M token 的营销话术,而是用第一性原理拆解:长上下文与 RAG 各自解决什么问题、各自的隐藏成本、什么时候该混合使用。

TL;DR

长上下文模型与 RAG 不是替代关系,是不同的工具。长上下文胜在一次性、全局性、小规模任务;RAG 胜在大规模、动态性、可审计任务。生产环境最优解几乎总是混合架构。本文给出 5 个决策维度(数据规模、查询频次、延迟、成本、溯源)与 3 种混合实现模板。

一、RAG 和长上下文到底解决什么问题

要理解两者的关系,先要看清各自解决的本质问题:

RAG 解决的核心问题:把 LLM 接入一个比训练数据更新、更专业、更可溯源的知识源。它有四个组件——文档切分、向量化、检索、生成——但灵魂是”让模型看到原本看不到的东西并能指明来源”。

长上下文解决的核心问题:让模型一次性处理更大的输入。它消除了”切分”的副作用——上下文跨段联想、长程依赖、全局推理变得可行。但它没有解决”如何让模型接触超出请求范围的知识”。

这是关键区别:RAG 是关于知识接入的,长上下文是关于单次请求容量的。混淆这两者,是”RAG 已死”论调的根源。

二、长上下文的隐藏代价

长上下文有四个常被低估的代价:

2.1 单次成本不可忽视

以 Opus 4.7 为例,无缓存的 1M token 输入价 5 美元。哪怕命中缓存(10% 折扣),也要 0.5 美元一次。一个高频查询服务每秒 100 次请求,按 100K 上下文计算:

模式单次成本月成本(100 QPS)
长上下文(无缓存)$0.50$1.3M
长上下文(90% 缓存命中)$0.05$130K
RAG(5K 上下文 + 检索)$0.005$13K

差距是 10-100 倍。即使缓存策略完美,RAG 在高频场景仍便宜一个数量级。

2.2 首 token 延迟难以接受

256K 输入的首 token 延迟约 8-12 秒(Opus 4.7 实测),1M 输入约 35-50 秒。对实时对话场景这是不可接受的。RAG 把检索 + 生成总延迟控制在 1-2 秒,差一个量级。

2.3 注意力衰减是物理规律

Anthropic 自己在 Opus 4.7 model card 里给出了 needle-in-haystack 数据:

上下文长度精确召回率跨文档推理准确率
32K99%92%
128K95%84%
512K88%71%
1M76%58%

注意”跨文档推理”那一列——纯检索 needle 还能维持较高水平,但需要综合多个 needle 的推理任务精度衰减更陡。这意味着 1M 上下文在复杂分析任务中实际可用范围是 200-300K,多出来的窗口是”看到了但用不好”。

2.4 调试与溯源近乎不可能

当一个长上下文 prompt 给出错误答案时,你几乎无法定位”哪段输入误导了模型”。RAG 有清晰的 retrieval log,可以追溯到具体 chunk;长上下文给的是一个黑盒答案。对合规、医疗、法律领域,可溯源是硬性要求,长上下文目前无法提供。

三、RAG 的隐藏代价

公平起见,RAG 也有自己的代价:

3.1 切分破坏语义

文档被切成 chunk 时,跨 chunk 的因果关系、长程指代会丢失。即使有 chunk 重叠和层级摘要,仍然不如完整阅读。这是 RAG 在”全局理解”任务上的天然劣势。

3.2 检索质量决定上限

检索召回的 top-K 决定了生成的天花板。embedding 偏向 lexical match,对同义改写、跨语言、抽象概念的召回都有缺陷。一个错误的检索结果,再强的生成模型也救不回来。

3.3 维护成本高

向量数据库、embedding 模型、reranker、chunk 策略——RAG 的栈比看起来复杂得多。一个生产级 RAG 至少需要:

这些维护成本在小规模场景下不划算,导致很多团队转向长上下文也是合理的。

四、5 个决策维度

下面这张矩阵是我在多个生产系统总结出的决策维度:

维度偏向 RAG偏向长上下文偏向混合
数据规模>1GB<200K token200K-1GB
查询频次>1 QPS<1 QPM介于之间
延迟要求<2s可容忍 10s+1-5s
溯源要求强制不需要部分需要
全局推理不需要必须部分需要

例如:

五、三种混合架构

5.1 RAG-First, Long-Context-Refine

Query → RAG 召回 top-100 chunk
      → Reranker 选 top-30
      → 长上下文(150K)综合生成 → 答案

适用场景:知识库大但单次查询需要深度综合。例如法律研究:召回相关案例,再用长上下文写综合意见书。

5.2 Tier-Based Routing

Query → 分类器("简单事实" / "复杂分析")
      → 简单 → RAG(top-5 chunk + 短上下文)
      → 复杂 → 长上下文(直接塞入相关全文)

适用场景:高频简单 + 低频复杂的混合负载。例如内部知识助手:80% 是”X 项目负责人是谁”这类事实,走 RAG;20% 是”对比项目 A 和 B 的架构差异”,走长上下文。

5.3 Parallel Race

Query → 同时跑 RAG 路径与长上下文路径
      → Judge 模型对比两者答案
      → 输出更好的那一个

适用场景:高价值低频任务,允许成本翻倍换准确率。例如医疗诊断辅助:两条路径独立给出建议,对比后输出。

六、长上下文不会”杀死” RAG,但会改变 RAG

回到那个标题:“RAG is dead?” 答案是否定的,但 RAG 的形态确实会改变:

  1. chunk 会变大:从过去的 512 token 升到 4K-16K,配合长上下文消化更多语境。
  2. rerank 会更重要:召回 top-K 中 K 从 5 变到 100-500,重排准确率成为新瓶颈。
  3. 检索会更稀疏:embedding + lexical hybrid 会成为标配,单纯向量检索的份额下降。
  4. 溯源会强化:每段输出都标注 chunk 来源会成为合规默认要求。

七、给工程师的现实建议

总结

工具的革新不在于”替代”,而在于”扩展光谱”。1M token 上下文模型让 LLM 工具箱多了一种选项,但 RAG 仍然占据着”接入外部知识、控制成本、提供溯源”的位置。判断的关键不是”哪个更强”,而是”你的查询长什么样”。混合架构是几乎所有生产系统的最终答案,差异只在于混合的比例和策略。

Frequently asked questions

1M token 窗口模型出现后,RAG 还有存在必要吗?
有。RAG 的本质不是'解决上下文太短',而是'让 LLM 接入外部知识源并溯源'。即使上下文无限大,也不可能把全公司知识库塞进每次请求。RAG 在动态数据、严苛延迟、需要溯源、合规审计四个场景仍不可替代。
什么时候应该直接用长上下文而不是 RAG?
三种典型场景:1) 文档总规模在 200K token 以内的一次性分析;2) 需要全局推理的任务(如代码库重构、合同对比);3) 查询频次极低、可以容忍单次几美元的成本。这些场景下分块会破坏语义连贯,长上下文是更好选择。
为什么长上下文模型在后半部分注意力会衰减?
Transformer 的注意力机制在长序列下会出现'注意力稀释',softmax 在大量 token 上的分布趋于均匀。同时位置编码(如 RoPE)在外推区间精度下降。实测中 100K 以下召回率 95%+,500K 以上降到 75% 左右,1M 时只剩 60-70%。
混合架构(RAG + 长上下文)怎么设计?
推荐三种模式:1) 第一阶段 RAG 召回 top-100 chunk,第二阶段长上下文重排+综合;2) 高频查询走 RAG,低频复杂查询走长上下文;3) 同一查询并行跑两种路径,路由器选最优答案。实测混合架构比单一方案准确率高 8-12 个点。
长上下文的隐藏成本有哪些?
至少四项:1) 输入 token 成本(无缓存时单次几美元);2) 首 token 延迟(256K 输入约 8-12 秒);3) 注意力衰减导致的精度损失;4) 调试困难(无法定位错误来自哪个 chunk)。这些隐藏成本是 RAG 仍有竞争力的核心原因。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.