分块处理是什么
Map-Reduce 是处理长材料的通用套路:先把长文档切成若干块,每块单独调用处理(map,通常是摘要或抽取),再对全部中间结果做合并(reduce,去重、归类、定稿)。它的必要性来自上下文限制与位置偏差——材料长到一定程度,一次输入不仅装不下,中段内容也容易被忽略。分块还有一个工程优势:各块之间没有依赖,可以并行处理,总耗时接近单块耗时。
要点
| 分块重叠 | 块间重叠 10-15% 防切断语义,尤其是句子与表格跨块处 |
|---|---|
| 中间产物 | 每块输出结构化小结(要点 + 数字 + 疑点),便于合并 |
| 去重 | Reduce 明确「合并同义项,冲突时并列两种说法」 |
| 并行 | map 阶段各块独立,可并发执行 |
| 分层归并 | 块数很多时先分组归并,再对结果做一次总归并 |
典型使用场景
- 长报告总结:分块摘要后统一成一份要点清单
- 多文件抽取:每份文件抽出字段,最后合并成一张表
- 批量评审:对大量输出逐条打分,再汇总质量分布
- 日志分析:按时间分片统计,再合并异常清单
- 会议记录整理:按发言人分段小结,再合成决议与待办
两阶段结构
两阶段结构
Map:每块单独调用 → 输出「要点 + 数字 + 疑点」的结构化小结
Reduce:合并全部小结 → 去重、按主题归类 → 生成总结果
(块之间可并行;Reduce 输入超长时再分层归并) # 分层归并避免 reduce 阶段自己超限参数与取舍
| 参数 | 偏小 | 偏大 |
|---|---|---|
| 块大小 | 块数多、调用多,但每块聚焦度高 | 块数少,单块可能超出可用上下文 |
| 重叠比例 | 省 token,跨块内容可能被切断 | 降低切断风险,冗余内容增加 |
| 归并层级 | 一次归并简单,输入可能超限 | 分层归并更稳,流程复杂度上升 |
块间重叠不能省:表格、代码块与跨段结论被切断时,两侧都会出现信息不完整的小结,合并阶段很难补救。