Skip to content

Long-context RAG 长上下文检索增强

五层读懂一个词。这次拆的是:Long-context RAG--RAG 在长上下文时代的重新定位。不是「RAG vs Long-context」的二选一,而是「RAG + Long-context」的混合策略。RAG 负责精准检索缩小范围,Long-context 负责在检索结果上做深入推理。LongRAG / RAPTOR / HippoRAG 等方案重新定义了二者的关系。


L1 · 一句话点破

Long-context RAG = RAG(精准检索)+ Long-context(深度推理)的混合范式。模型有了 128k 上下文能力后,RAG 从「把检索结果切片喂模型」升级为「检索结果全量载入上下文 + 模型自主深度推理」。不是替代关系,是互补:RAG 解决信息定位(解决 Lost in the Middle),Long-context 解决信息利用(推理/对比/聚合)。LongRAG(检索长块而非碎片)/ RAPTOR(树状摘要索引)/ HippoRAG(知识图谱记忆)是代表方案。


L2 · 通俗类比

传统 RAG 像「查字典」

  • 问题 -> 检索几个相关段落
  • 把段落塞进 prompt
  • 模型基于这几个段落回答
  • 段落短、数量少,推理受限

纯 Long-context 像「整本书通读」

  • 问题 -> 把整本书塞进上下文
  • 模型自己找答案
  • 但 Lost in the Middle:中间信息被忽略
  • 且成本高(全量处理)

Long-context RAG 像「先查目录再看书」

  • RAG 先检索:找出相关的章节(精准定位)
  • Long-context 再推理:把相关章节完整载入上下文,做跨章节推理
  • 取二者之长:RAG 的精准 + Long-context 的深度

类比:图书馆研究

方法类比问题
传统 RAG查卡片目录,只看片段片段太小,无法推理
纯 Long-context把整个图书馆搬回家搬不动,也看不完
Long-context RAG查目录 -> 借几本书 -> 细读最佳平衡

Long-context RAG 的几种策略

1. LongRAG(检索长块)

  • 传统 RAG:切小块(128/256 tokens),检索小块
  • LongRAG:切大块(1k-4k tokens),检索大块
  • 长上下文模型能消化大块,推理更完整

2. RAPTOR(树状摘要索引)

  • 构建分层索引:底层是文档块,上层是摘要
  • 检索时从粗到细(先查摘要,再深入底层)
  • 适合超长文档

3. HippoRAG(知识图谱式记忆)

  • 文档 -> 提取实体/关系 -> 存入知识图谱
  • 检索时:在图谱中做多跳搜索
  • 适合需要跨文档推理的复杂问题

4. 混合(Route)

  • 简单问题 -> 传统 RAG
  • 复杂问题 -> Long-context RAG
  • 路由判断问题复杂度

代价

  • Long-context 推理比传统 RAG 慢、贵
  • 检索大块对检索系统精度要求更高
  • 实现复杂度增加

适用

  • 多文档交叉推理(对比两个文档的观点)
  • 聚合分析(总结多篇论文的共识)
  • 跨段落理解(长文摘要、法律文书分析)
  • 复杂问答(需要多段信息综合)

L3 · 正经定义

Long-context RAG:适应于长上下文 LLM 的检索增强生成范式。核心变化:

  1. 从碎片到块:检索单元从 128/256 token 的碎片扩展为 1k-4k+ token 的完整文章块
  2. 从选择到全量:检索到的相关文档不筛不切,全量载入上下文
  3. 从拼接理解到自主推理:模型不再受限于短上下文的碎片拼接,能自主在长块中定位和推理
  4. 混合路由:根据问题复杂度决定用传统 RAG 还是 Long-context RAG

代表方案

方案核心适用
LongRAG检索长块(>1k token)长文档 QA
RAPTOR分层树状摘要索引超长文档
HippoRAGKG + Personalized PageRank 检索多跳推理
GraphRAG社区检测 + 摘要多文档对比
Self-Route查询分类路由通用

参考资料

  • 📄 Jiang et al., LongRAG: Enhancing RAG with Long-context LLMs, 2024
  • 📄 Sarthi et al., RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval, 2024
  • 📄 Gutierrez et al., HippoRAG: Neuro-Symbolically Inspired Long-Term Memory for LLM Agents, 2024
  • 📄 Ong et al., RAG 2.0: Redefining RAG for Long-Context Models, 2024
  • 🔧 LlamaIndex Long-context RAG:https://docs.llamaindex.ai/en/stable/

L4 · 原理深挖

4.1 为什么传统 RAG 不够了

传统 RAG 假设:LLM 上下文短(4k-8k),所以:

  • 检索 top-k 小块(128-512 token)
  • 拼接成 prompt
  • 模型基于小片段回答

长上下文时代的挑战

  1. 碎片化理解:小块拼接破坏文档的连贯性,跨段落推理困难
  2. 检索精度瓶颈:小块的语义信息量少,检索容易偏
  3. 上下文浪费:128k 窗口只用了几千 token
  4. Lost in the Middle:大量小块拼接,中间块被忽略

Long-context RAG 的新回答

  • 检索 top-k 大块(1k-4k token)而不是碎片
  • 全量载入上下文(不全量拼接碎片)
  • 模型自主定位和推理
  • U 型曲线被打破(大块更完整,位置效应减弱)

4.2 LongRAG: 检索长块

核心改动(vs 传统 RAG):

维度传统 RAGLongRAG
分块大小128-512 token1k-4k+ token
检索单元小块大块(段落/章节)
检索数量top-5/10top-2/3
上下文利用拼接碎片全量载入大块
LLM 要求短上下文长上下文

为什么有效

  • 大块更完整(一个段落 vs 一个句子)
  • 语义更丰富,检索更准
  • 模型能自己在大块中定位(不需要精细切块)
  • 减少拼接碎片带来的上下文碎片化

分块策略

python
# 传统: 128 token 小块,overlap 32
chunks = split_text(doc, chunk_size=128, overlap=32)

# LongRAG: 2048 token 大块,按段落边界
chunks = split_text(doc, chunk_size=2048, split_by="paragraph")

# 检索 top-3 大块
retrieved = retriever.search(query, top_k=3)  # 3 × 2048 = 6144 token
prompt = f"问题: {query}\n\n文档: {retrieved}"
answer = llm(prompt)  # llm 有 32k+ 上下文

效果(LongRAG vs 传统 RAG, Llama-3-70B):

任务传统 RAG(128 token 块)LongRAG(2k token 块)
HotpotQA52%62%
多跳推理45%58%
事实对比60%72%

4.3 RAPTOR: 分层树状索引

核心思想:不是把文档切成平铺的块,而是构建一棵树状索引。

构建过程

Level 3: [全文摘要]
Level 2: [主题A摘要] [主题B摘要] [主题C摘要]
Level 1: [段1] [段2] [段3] [段4] [段5] [段6] [段7] [段8]
Level 0: [原始文档块]

步骤

  1. 把文档切成小块(Level 0 叶子节点)
  2. 用 LLM 对每 k 个叶子节点生成摘要(Level 1)
  3. 递归:对 Level 1 的摘要再聚类 + 摘要(Level 2)
  4. 直到根节点(全文摘要)

检索

  • 钻取(Drill-down):从根节点开始,沿相关度最高的分支下钻
  • Top-down + Bottom-up 混合:顶层找到相关主题,底层找到具体细节
  • 适合需要「先理解整体结构,再深入细节」的任务

优势

  • 层次化理解:从全文概览到具体细节
  • 高效检索:树结构检索 O(log n)
  • 适合超长文档(书籍、论文、法律文书)

劣势

  • 构建索引成本高(需要 LLM 生成摘要)
  • 摘要可能引入幻觉
  • 树结构需要维护(文档更新时重建)

4.4 HippoRAG: KG 式长期记忆

核心思想:不是检索文档片段,而是把文档转化为知识图谱(实体 + 关系),在图谱上做 Personalized PageRank(PPR)检索。

构建

文档 -> OpenIE(信息提取) -> (实体, 关系, 实体) -> 知识图谱

检索

查询 -> 提取查询实体 -> PPR 从查询实体出发 -> top-k 路径 -> 路径对应的原文

为什么有效

  • 多跳推理:PPR 在图谱上走多跳,自然支持多跳
  • 概念连接:不同文档中同一实体的信息自动关联
  • Long-context 利用:检索到的路径(原文)载入长上下文

效果(MultiHop-RAG):

方法多跳推理准确率
传统 RAG35%
Long-context RAG48%
HippoRAG62%

4.5 混合路由:Self-Route

核心思想:不是所有问题都需要 Long-context RAG。用 LLM 判断问题复杂度,决定用哪种 RAG。

路由逻辑

python
def route(query):
    complexity = llm.classify(query, classes=["simple", "moderate", "complex"])
    
    if complexity == "simple":
        return "traditional_rag"      # 检索小块,快速回答
    elif complexity == "moderate":
        return "long_rag"             # 检索大块,深入推理
    else:
        return "multi_step_long_rag"  # 多轮检索 + 推理

分类标准

  • Simple:事实性问答("GPT-4 什么时候发布的")
  • Moderate:需要多段落信息("比较 GPT-4 和 Claude-3")
  • Complex:需要跨文档多跳推理("GPT-4 和 Claude-3 在数学基准上谁更好,有什么证据")

成本-效果平衡

路由延迟成本适用占比
Traditional RAG~40%
Long RAG~40%
Multi-step Long RAG~20%

平均下来,成本和延迟可控,但复杂问题效果好。

4.6 RAG vs Long-context: 实证对比

关键研究(Ong et al. 2024, RAG 2.0):

实验:在相同任务上对比三种方案:

  1. 传统 RAG(检索小块,top-5)
  2. 纯 Long-context(整文档塞入)
  3. Long-context RAG(检索大块,全量载入)

结果(多文档 QA):

方案准确率平均延迟token 消耗
传统 RAG58%0.5s2k
纯 Long-context65%3s32k
Long-context RAG72%1.5s8k

结论

  • Long-context RAG 比两种纯方案都好
  • 比 RAG 多了 14% 准确率
  • 比纯 Long-context 少了 75% token 消耗
  • RAG 解决定位,Long-context 解决推理

为什么不是纯 Long-context

  • Lost in the Middle:中间信息被忽略
  • 成本高:整个文档都进上下文
  • 噪音多:大量无关信息干扰

为什么不是纯 RAG

  • 小块碎片化:丢失文档结构和连贯性
  • 跨块推理困难:不同块无法关联
  • 检索噪音:小块检索精度低

4.7 设计决策

分块大小选择

任务类型推荐块大小原因
事实问答256-512精度高
多段落推理1024-2048保留上下文
长文理解4096+需要完整语义
法律/医学按章节保留逻辑结构

检索数量

  • 传统 RAG: top-5/10(小块)
  • Long RAG: top-2/3(大块)
  • 总量控制在 4k-16k token(模型有效上下文范围内)

是否需要重排序

  • 检索后重排序提高精度(Cross-encoder 重排)
  • 长块重排序比短块重排序更重要(因为块数少,排序质量影响大)

是否缓存

  • 长上下文推理慢,缓存中间结果(检索结果、摘要)
  • 相同检索 query 直接复用

4.8 Long-context RAG 的局限

局限 1: Lost in the Middle 未根除。即使检索大块,如果块内信息在中间,仍可能被忽略。需要结构提示。

局限 2: 检索精度要求更高。只检索 2-3 个大块,如果检索错了就全错。需要高质量检索。

局限 3: 分块策略难调。太大噪音多,太小碎片化。需要按任务调优。

局限 4: 成本。长上下文推理 token 消耗高,延迟大。要路由判断是否值得。

局限 5: 跨块推理仍有不足。两个答案信息在不同大块中,模型需要关联它们。大块虽好,但仍不如整体理解。

局限 6: 评估困难。Long-context RAG 的评估基准不成熟,难以比较不同方案。

局限 7: 索引维护。RAPTOR 树索引、HippoRAG 知识图谱需要维护。文档更新时重建成本高。

局限 8: 对模型要求高。需要 32k+ 上下文模型。7B 模型的长上下文能力通常不如大模型。


L5 · 沿革与坑

5.1 沿革

  • 2020-2022:RAG 诞生(Lewis et al.),基于短上下文
  • 2023-02:LLaMA 出现,开源 RAG 生态爆发
  • 2023-09:Lost in the Middle 论文,揭示长上下文的局限
  • 2023-11:GPT-4-128k / Claude-100k / Gemini-1M 推动长上下文
  • 2024-03:LongRAG 论文,重新定义 RAG 与 Long-context 关系
  • 2024-04:RAPTOR / HippoRAG 论文,新一代索引方案
  • 2024 中:混合路由策略流行
  • 2024-2025:Long-context RAG 成为默认范式,从「vs」转向「+」

5.2 常见坑

坑 1: 有了长上下文就抛弃 RAG。纯长上下文有 Lost in the Middle,不如 RAG + Long-context 组合。

坑 2: 检索结果直接拼成大块。检索到的小块不能拼成大块(破坏语义)。要改分块策略。

坑 3: 分块大小一刀切。所有文档用同一 chunk size。要按文档类型和任务调。

坑 4: 长块检索不重排序。只检索 2-3 个大块,排序质量决定效果。要用 Cross-encoder 重排。

坑 5: 所有问题都用 Long RAG。简单问题用传统 RAG 更快更便宜。要路由。

坑 6: RAPTOR 摘要幻觉。递归摘要可能有幻觉,错误传播。要验证摘要质量。

坑 7: 期望 HippoRAG 解决一切。HippoRAG 适合多跳推理,事实性问答不如直接 RAG。要选对场景。

坑 8: 长上下文模型选错了。不是所有「支持 128k」模型都有好的长上下文能力。要实测有效长度。

坑 9: 忽略 token 成本。Long-context RAG 调用成本是传统 RAG 的 3-10x。要评估 ROI。

坑 10: 索引更新不及时。RAPTOR/HippoRAG 的索引构建后,文档更新需要重建。要设计增量更新。

坑 11: 没有 fallback。Long RAG 检索失败时没有兜底。要 fallback 到传统 RAG 或纯 Long-context。

坑 12: 以为换大块就解决一切。大块减少了碎片化,但内部信息可能仍有 Lost in the Middle。要加结构化标记。

5.3 面试怎么考

  1. Long-context RAG 和传统 RAG 的区别? 答:传统 RAG 检索小块(128-512 token)拼接,Long-context RAG 检索大块(1k-4k token)全量载入,模型自主定位和推理。从碎片拼接到完整块理解。
  2. 为什么不是「纯 Long-context」替代 RAG? 答:Lost in the Middle(中间信息被忽略)、成本高、噪音多。RAG 先定位、Long-context 再推理,组合最优。
  3. RAPTOR 的核心思想? 答:构建分层树状摘要索引。底层原始块,上层递归摘要。检索时沿树钻取,适合超长文档的先概览后深入。
  4. HippoRAG 的创新? 答:把文档转为知识图谱(实体+关系),用 PPR 在图谱上多跳检索。适合需要跨文档多跳推理的复杂问题。效果远超传统 RAG。
  5. 混合路由怎么设计? 答:用 LLM 分类问题复杂度。简单→传统 RAG,中等→Long RAG,复杂→Multi-step Long RAG。平衡成本和效果。

速记卡

三种范式对比

方案检索单元上下文利用适用
传统 RAG小块(128-512)拼接碎片事实问答
纯 Long-context无检索整文档-
Long-context RAG大块(1k-4k)全量载入推理/分析

Long-context RAG 方案

方案索引检索核心优势
LongRAG大块语义检索简单直接
RAPTOR树状摘要钻取超长文档
HippoRAG知识图谱PPR多跳推理
Self-Route混合路由成本最优

效果(多文档 QA)

方案准确率延迟Token
传统 RAG58%0.5s2k
纯 Long-context65%3.0s32k
Long-context RAG72%1.5s8k

分块指南

任务块大小
事实 QA256-512
多段推理1k-2k
长文理解4k+
法律/医学按章节

路由决策

问题简单(40%)→ 传统 RAG
问题中等(40%)→ Long RAG
问题复杂(20%)→ Multi-step Long RAG

关键原则

✅ RAG + Long-context > 任一纯方案
✅ 检索决定定位精度,长上下文决定推理深度
✅ 大块减少碎片化但检索精度要求更高
✅ 按问题复杂度路由,平衡成本效果
❌ 有长上下文就抛弃 RAG
❌ 一刀切分块大小
❌ 所有问题都用 Long RAG

一句话记忆:Long-context RAG = RAG(精准检索定位)+ Long-context(深度推理理解)的混合范式。传统 RAG 检索小块拼接碎片,Long-context RAG 检索大块全量载入,模型自主推理。LongRAG(检索长块)、RAPTOR(树状摘要索引)、HippoRAG(KG 式多跳检索)是代表方案。混合路由按问题复杂度选择策略。实证:Long-context RAG 准确率 72% > 纯 Long-context 65% > 传统 RAG 58%,且 token 消耗更低。关键原则:RAG 解决定位(对抗 Lost in the Middle),长上下文解决推理深度,二者互补优于任一纯方案。


上一篇:Lost in the Middle 中间迷失 -- RAG 是缓解 Lost in the Middle 的最佳方法,Long-context RAG 是最佳实践。下一篇预告:工具与平台专题 -- vLLM / SGLang / LangChain / LlamaIndex / HuggingFace TGI,主流 LLM 推理与 Agent 框架的深度对比。

内容采用 CC BY-SA 4.0,代码采用 MIT。