长文档组织:分块、裁剪与引用定位
一句话定义
把长文档放进上下文前要做三件事:按语义分块、按任务裁剪、给每块可引用的编号——即使窗口装得下整份文档,组织过的呈现仍然显著优于整篇倾倒。
为什么重要
"窗口够大"诱惑所有人整篇粘贴,但整篇粘贴同时踩中三个坑:中段注意力低谷(注意力衰减与"迷失在中间"(Lost in the Middle))、预算与成本浪费(上下文窗口与注意力预算)、引用无法定位(模型说"文中提到"你无法核对)。分块与裁剪是知识库问答、合同审查、报告生成类功能的基础工艺。注意边界:怎么检索到相关块是 RAG 检索侧的事(跨站主题),本库负责检索结果进入上下文后的组织。
前置知识
- 上下文窗口与注意力预算:预算准入——不是所有块都值得进上下文;
- 信息放置策略:指令、知识、数据的排布:排布——分好块之后按"被忽略代价"排布。
直观类比
律师不会整箱卷宗抱上法庭,而是提前摘出与本案相关的页,编号贴签,引用时说"见第 3 卷第 12 页"——可引用性既是效率问题,也是可信度问题。
图示
整篇文档(120 页)
├─ D1 概述 ┐
├─ D2 服务条款 ├─ 粗筛:D3、D7 与任务相关
├─ D3 退款政策 │ → D3 切为 S1..S6,相关 2 块进证据区
├─ ... │ → 其余进背景区或丢弃
└─ D7 违约责任 ┘
回答契约:每个结论标注 [Dx-Sy],程序侧可回查原文核对核心概念
- 语义分块:按章节/条款/段落边界切块,保留标题层级;避免在句子中间切断。
- 块元数据:每块带
{doc, section, id},支持回答时引用与人工回查。 - 任务导向裁剪:同一文档对不同任务保留不同部分(审合同保条款,写摘要保结论段)。
- 引用定位:要求模型回答时标注块编号("依据 [D2-S3]"),让输出可核验。
- 重叠与衔接:切块时可留少量重叠行,防止关键句被切在边界上丢上下文。
原理与机制
组织优于倾倒的机制:分块把无差别长序列变成"可寻址的小单元",模型可以按编号精准引用而不是模糊回忆;裁剪提高单位 token 的信息密度(上下文压缩:摘要、滚动与层级 同理);编号引用把"模型说的对不对"变成可程序核验的命题(回答里引的 [D2-S3] 是否真的包含该内容)。工程流程:
- 切块:结构优先(标题、条款号),无结构时按固定长度 + 重叠;
- 粗筛:按任务过滤明显无关块(目录、页眉、免责声明);
- 准入与排布:相关块进证据区贴近问题,次相关进背景区(信息放置策略:指令、知识、数据的排布);
- 引用契约:输出必须带块编号,程序侧抽查引用真实性。
公式或模型
本节不适用——分块参数(块长、重叠)是经验值,需按任务在评估集上对比选型(常见块长 300~800 token、重叠 10~20%)。
实例或案例
案例:合同审查的块引用改造。 症状:整篇 40 页合同贴入,模型输出"合同中存在不利条款"却无法定位,法务无法复核。操作步骤:① 按条款切块并编号(每条 <chunk doc="合同A" id="D3-S2">);② 只保留与审查清单相关的条款(粗筛掉定义条款、附件表格);③ 提示要求输出 {"问题":"...", "位置":"D3-S2", "原文摘录":"..."};④ 程序侧校验"原文摘录"确实出现在该块内(引用防幻觉)。引用契约提示:
回答每个发现时必须给出:位置编号(如 D3-S2)+ 原文摘录(逐字)。
禁止引用未出现在 <chunks> 中的编号。排错清单:
- 症状:引用编号存在但摘录对不上 → 模型编造摘录;程序侧逐字校验,失败触发重试(校验-重试回路:让输出自修复);
- 症状:跨块的问题答不全(问题横跨 D3 与 D7)→ 检索/粗筛漏块;扩充准入或改用 Map-Reduce(任务分解与规划提示)全量扫描;
- 症状:块被切断后语义残缺 → 结构边界切块,无结构时加重叠。
常见误区
- 窗口大就不用切:组织解决的是可靠性、成本与可核验性,不只是"装得下";
- 固定长度一刀切:把条款、表格从中间切断,产生大量残缺块;结构边界优先;
- 只要摘要不要定位:无法回查的摘要在生产场景(法务、合规、客服)不可接受,引用契约是交付物的一部分。
自测题
- 窗口足够装下整份文档时,为什么仍建议分块裁剪?
答:提高信息密度、规避中段低谷、让引用可定位可核验——装得下不等于用得好。
- 引用定位解决什么生产问题?
答:把模型结论变成可回查的命题(位置 + 逐字摘录),法务/合规等场景的复核前提,也是防幻觉手段。
- 切块为什么要保留结构边界或重叠?
答:防止关键句/条款被切断造成语义残缺;结构边界最优先,无结构时用小比例重叠兜底。
与其他知识点的关系
任务分解与规划提示 的 Map-Reduce 处理"必须全量读"的极端情况;上下文压缩:摘要、滚动与层级 治理多轮中的文档内容膨胀;分块后的排布与准入执行 信息放置策略:指令、知识、数据的排布/上下文窗口与注意力预算;呈现格式沿用 结构化上下文:分段、标签与命名。
延伸阅读
- 论文:Lost in the Middle(Liu et al., 2023)——长文档位置效应的实证基础。
来源
- Lost in the Middle: How Language Models Use Long Contexts (Liu et al.
- 2023)