长文档组织:分块、裁剪与引用定位

进阶03-上下文组织与窗口管理⏱ 25 分钟已审校
学习进度:

一句话定义

把长文档放进上下文前要做三件事:按语义分块、按任务裁剪、给每块可引用的编号——即使窗口装得下整份文档,组织过的呈现仍然显著优于整篇倾倒。

为什么重要

"窗口够大"诱惑所有人整篇粘贴,但整篇粘贴同时踩中三个坑:中段注意力低谷(注意力衰减与"迷失在中间"(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] 是否真的包含该内容)。工程流程:

  1. 切块:结构优先(标题、条款号),无结构时按固定长度 + 重叠;
  2. 粗筛:按任务过滤明显无关块(目录、页眉、免责声明);
  3. 准入与排布:相关块进证据区贴近问题,次相关进背景区(信息放置策略:指令、知识、数据的排布);
  4. 引用契约:输出必须带块编号,程序侧抽查引用真实性。

公式或模型

本节不适用——分块参数(块长、重叠)是经验值,需按任务在评估集上对比选型(常见块长 300~800 token、重叠 10~20%)。

实例或案例

案例:合同审查的块引用改造。 症状:整篇 40 页合同贴入,模型输出"合同中存在不利条款"却无法定位,法务无法复核。操作步骤:① 按条款切块并编号(每条 <chunk doc="合同A" id="D3-S2">);② 只保留与审查清单相关的条款(粗筛掉定义条款、附件表格);③ 提示要求输出 {"问题":"...", "位置":"D3-S2", "原文摘录":"..."};④ 程序侧校验"原文摘录"确实出现在该块内(引用防幻觉)。引用契约提示:

回答每个发现时必须给出:位置编号(如 D3-S2)+ 原文摘录(逐字)。
禁止引用未出现在 <chunks> 中的编号。

排错清单:

  • 症状:引用编号存在但摘录对不上 → 模型编造摘录;程序侧逐字校验,失败触发重试(校验-重试回路:让输出自修复);
  • 症状:跨块的问题答不全(问题横跨 D3 与 D7)→ 检索/粗筛漏块;扩充准入或改用 Map-Reduce(任务分解与规划提示)全量扫描;
  • 症状:块被切断后语义残缺 → 结构边界切块,无结构时加重叠。

常见误区

  • 窗口大就不用切:组织解决的是可靠性、成本与可核验性,不只是"装得下";
  • 固定长度一刀切:把条款、表格从中间切断,产生大量残缺块;结构边界优先;
  • 只要摘要不要定位:无法回查的摘要在生产场景(法务、合规、客服)不可接受,引用契约是交付物的一部分。

自测题

  1. 窗口足够装下整份文档时,为什么仍建议分块裁剪?

答:提高信息密度、规避中段低谷、让引用可定位可核验——装得下不等于用得好。

  1. 引用定位解决什么生产问题?

答:把模型结论变成可回查的命题(位置 + 逐字摘录),法务/合规等场景的复核前提,也是防幻觉手段。

  1. 切块为什么要保留结构边界或重叠?

答:防止关键句/条款被切断造成语义残缺;结构边界最优先,无结构时用小比例重叠兜底。

与其他知识点的关系

任务分解与规划提示 的 Map-Reduce 处理"必须全量读"的极端情况;上下文压缩:摘要、滚动与层级 治理多轮中的文档内容膨胀;分块后的排布与准入执行 信息放置策略:指令、知识、数据的排布/上下文窗口与注意力预算;呈现格式沿用 结构化上下文:分段、标签与命名。

延伸阅读

  • 论文:Lost in the Middle(Liu et al., 2023)——长文档位置效应的实证基础。

来源

  • Lost in the Middle: How Language Models Use Long Contexts (Liu et al.
  • 2023)