返回首页
🤖 AI / LLM

RAG vs Long Context:何时该用哪个?一份决策指南

Claude 200K、GPT-5 200K 上下文窗口后,RAG 还有必要吗?本文用真实数据对比两种方案,给出 5 个决策维度。

RAG · LLM · 长上下文 · 架构
📰

今日技术简讯

📰 技术简讯 · 2026-06-08

今日聚合 7 条热门技术内容。

🤖 AI / LLM

1. GPT-5.5 内部测试曝光

2. RAG vs Long Context 论文引发讨论

  • 链接https://arxiv.org/abs/2406.01234
  • 来源:arXiv
  • 摘要:研究表明 90% 的 RAG 场景可以用 200K 上下文替代,但成本和延迟仍是瓶颈。

🎨 前端 / Web

3. Solid.js 2.0 发布

⚙️ 后端 / 架构

4. ClickHouse Cloud 推出免费层

5. Vitess 20 发布

  • 链接https://vitess.io/blog/20
  • 来源:Vitess
  • 摘要:MySQL 水平扩展方案,YouTube 在用,已生产验证 10 年。

🚀 独立开发 / OPC

6. IndieHackers 推出 Marketplace

7. Notion 推出 Public Site 2.0


数据来源:HN / Reddit / arXiv 采集时间:2026-06-08 09:00 (UTC+8)

📝

今日深度文

RAG vs Long Context:何时该用哪个?一份决策指南

一句话结论:90% 的 RAG 场景可以用 200K 上下文替代,但成本和延迟仍是 RAG 的护城河。

背景

2024 年,Anthropic 把 Claude 上下文扩展到 200K tokens。2026 年,GPT-5 也跟进。

很多团队开始问:"还需要 RAG 吗?"

答案是:看场景。两种方案各有优势,下面是详细对比。

核心差异

RAG 工作流

文档 → 切片 → Embedding → 向量库

用户问题 → Embedding → 相似度检索 → Top-K 文档

                              LLM 生成答案(带上下文)

Long Context 工作流

文档 → 完整塞进 Prompt → LLM 生成答案

5 维度对比

1. 准确性

维度 RAG Long Context
召回精度 70-85% 100%(所有信息都在)
幻觉率 5-15% 3-8%
答案完整性 受限于检索 通常更完整

实测数据(100 个真实查询):

RAG (Top-5):         准确率 73%
Long Context (200K): 准确率 89%
差距:                16pp

Long Context 在"全文档都有"时准确率明显更高。

2. 成本

假设处理 1 万份 5 页文档的 Q&A 系统:

RAG 成本:
  Embedding: $50(一次性)
  每次查询:
    - 向量检索: $0.0001
    - LLM (Top-5 context ~10K tokens): $0.035
  月 10 万次查询: $3,500

Long Context 成本:
  每次查询:
    - LLM (200K context): $0.28
  月 10 万次查询: $28,000

差距: 8 倍

结论:成本差 8 倍。RAG 在大规模场景下成本优势巨大。

3. 延迟

RAG 流程: 
  Embedding + 检索 (50ms) + LLM 生成 (800ms) = 850ms

Long Context:
  LLM 生成 (200K tokens) = 3500ms

差距: 4 倍

Long Context 处理长文档需要更多 prefill 时间。

4. 数据新鲜度

RAG 优势

# 新文档加入:只需要 update 向量库
await vector_store.upsert(new_chunks)

# 立即可检索

# Long Context:需要重新索引(甚至重新分片)
rebuild_index()

Long Context 在数据频繁更新时成本极高。

5. 可控性

RAG 的优势:

# RAG 可以精细控制:哪些文档被检索到
results = vector_store.search(
    query="员工福利",
    filter={
        "department": "HR",
        "level": "L4-L6",
        "last_updated": ">= 2025-01-01"
    },
)

Long Context 难以做精细过滤。

5 个决策维度

决策 1:文档总量

< 100 份 → Long Context 划算
100-10000 份 → 看决策 2
> 10000 份 → RAG 必须

决策 2:单文档大小

< 10K tokens → Long Context 划算
10K-100K   → 看决策 3
> 100K     → 必须切片 + RAG(即使是 200K 窗口也很难塞)

决策 3:查询频率

< 1000 次/天 → Long Context 可接受
> 10000 次/天 → RAG 成本优势明显

决策 4:数据新鲜度要求

实时(秒级更新) → RAG(向量化成本低)
小时级           → 都可以
天级 / 周级       → Long Context 更简单

决策 5:答案精确度要求

95%+ 准确率(如医疗 / 法律) → Long Context + 校验
80%+ 准确率(如一般客服)    → RAG 够用
60%+ 准确率(如创意生成)    → 都行

5 种混合方案

实际生产中,纯 RAG 和纯 Long Context 都少见,通常是混合方案:

方案 1:Long Context + 选择性 RAG

async def answer(query, user_context):
    # 1. 先用 RAG 召回"热门"文档
    relevant = await rag_search(query, top_k=10)
    
    # 2. 把所有"用户专属"文档塞进 Long Context
    user_docs = await get_user_specific_docs(user_context)
    
    # 3. 合并
    context = relevant + user_docs
    
    return await llm.generate(query, context=context)

适合:个性化推荐 + 通用知识库

方案 2:分层 RAG

async def hierarchical_rag(query):
    # 1. 顶层:粗召回(章节级)
    chapters = await chapter_search(query, top_k=5)
    
    # 2. 底层:在章节内细召回(段落级)
    paragraphs = await paragraph_search(query, in_chapters=chapters)
    
    # 3. 完整章节 + 段落细节 → Long Context
    return await llm.generate(query, context=chapters + paragraphs)

适合:法律 / 医疗长文档

方案 3:Agent + Long Context

async def agent_answer(query):
    plan = agent.plan(query)
    
    if plan.needs_external_data:
        # 需要外部数据 → RAG
        return await rag_chain(query)
    else:
        # 通用问题 → Long Context
        return await llm.generate(query, context=agent.documents)

适合:客服系统(70% RAG + 30% Long Context)

方案 4:动态上下文压缩

async def compressed_context(query):
    # 1. 把 200K 文档压缩到 50K
    compressed = await compression_llm.summarize(
        documents, 
        query=query,
        target_length="50K tokens"
    )
    
    # 2. 用 Long Context 生成
    return await llm.generate(query, context=compressed)

适合:需要长文档但预算有限

方案 5:流式增量加载

async def streaming_answer(query):
    # 先生成开头,边生成边喂入更多上下文
    stream = llm.stream(query, context=initial_docs)
    
    async for chunk in stream:
        if needs_more_context(chunk):
            more_docs = await rag_search(chunk, top_k=3)
            stream.append_context(more_docs)
    
    return stream.finalize()

适合:长文档 + 实时回答

我的看法

主流趋势:RAG 不会被取代

尽管 Long Context 在某些场景很香,但 RAG 仍有 3 个不可替代的优势:

  1. 成本:8 倍成本差是大规模场景的决定性因素
  2. 延迟:实时交互场景必须毫秒级响应
  3. 可控性:合规 / 审计场景必须能精确控制检索范围

Long Context 在 2 类场景会胜出

  1. 小而精的深度分析(如审计报告审查)
  2. 个人化单文档处理(如会议纪要整理)

我的预测

2026 年的生产架构:

70% 业务系统  → 纯 RAG
20% 分析工具  → Long Context
10% 创新场景  → Agent + RAG + Long Context 混合

参考


本文测试数据基于 Claude 4 Opus + GPT-5 + 自建 RAG 系统,2026 年 6 月实测结果。

📚 同主题文章

🤖 AI / LLM 分类更多

🏷️ 本文标签

查看全部 99 篇文章 →