本文属于 RAG 工程框架中的「4 生成与智能体编排」环节,聚焦「Long Context RAG」方法。可先阅读 RAG-00.方法概述 再进入本篇。
原理
通过大窗口模型直接注入更多原文,弱化复杂检索流程。
1 | flowchart LR |
优缺。
- 优点:工程链路简化;少量文档场景效果稳定。
- 缺点:token 成本高;注意力分散导致“看不全”。
性能/资源
- 推理成本与上下文长度近似线性上升。
- 高并发场景成本压力大。
应用场景
- 小规模高价值资料库(合同包、项目档案)。
- 需要较完整原文上下文的审阅任务。
统一合成数据示例
输入数据片段
1 | { |
中间结果(长上下文拼接)
1 | { |
最终生成示例(含引用)
1 | { |
原始发表与工程实现
- 代表性原始发表:Longformer (2020), LongRoPE (2024)。
- 核心解决问题:解决超长上下文推理。
- 成熟实现工具:Claude/GPT/Qwen 长上下文模型。
详细原理拆解
- 长上下文策略强调片段选择和顺序,避免注意力稀释。
- 典型实现可拆为:输入预处理 -> 方法核心计算 -> 候选/证据构建 -> 生成与引用。
- 工程调优重点:质量(准确率/引用率)与成本(时延/token)的联合优化。
1 | flowchart LR |
工程落地扩展示例
伪代码
1 | def long_context_pack(query, doc_segments, model_window: int, reserve_for_answer: int, scorer): |
参数示例
1 | model_window_tokens: 128000 |
常见失败案例
- 失败模式 1:「全塞进去」导致 中间注意力稀释,关键句在超长上下文里被忽略。
- 失败模式 2:多文档顺序乱,条款引用串台(A 文档结论配 B 文档依据)。
- 失败模式 3:长窗模型成本高,与压缩/检索二选一 需算 ROI。
Demo 数据带入计算示例
1 | 四段 token 1200/900/1400/800,窗口 3000:按相关性贪心取 1200+900+800=2900,丢弃 1400 段。 |