当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > RAG 文档切片怎样决定 overlap

RAG 文档切片怎样决定 overlap

来源:17golang原创 2026-10-15 02:30:23 0浏览 收藏

RAG 文档切片的 overlap 应按跨边界证据是否丢失来决定,而不是先规定一个通用百分比。先固定 chunk size 的计量单位与上限,观察哪些答案依赖相邻句段,再从零重叠和少量重叠的候选中选择能保留必要证据、又不过度重复的设置。

如果检索结果找到了问题里的关键词,却缺少紧接着的条件或结论,先检查原文与切片边界。答案本来就在一块里,只是没有被检索到,和答案被切成两半,是不同的问题;增加 overlap 主要针对后一类风险。

先固定 chunk size 的单位,再谈 overlap

chunk size 表示切片大小,overlap 表示相邻块保留的重叠范围,两者必须使用同一计量规则。字符、字节与 token 不能混用。中文文本不能用“一个字符等于一个 token”直接换算;模型输入约束需要用对应 tokenizer 检查。

LangChain 的 RecursiveCharacterTextSplitter 在 length_function=len 时按字符计量,chunk_overlap 是目标重叠量。分隔符、合并边界和原文结构会影响实际块长与实际重叠,因此“设置 100”不等于任意相邻两块都复制了恰好 100 个字符。

官方地址:https://docs.langchain.com/oss/python/integrations/splitters/recursive_text_splitter

确定 size 时要兼顾 embedding 输入限制与检索上下文的有效信息。块过大可能把多个主题混在一起,过小可能把限定条件与答案拆散。给切片补标题、标签等内容时,它们也占输入长度,不能只检查原文正文。

用跨边界证据判断是否需要重叠

选几个真实问题,标出回答所需的最小原文范围:问题里的实体、限定条件、答案句。把这些范围与当前 chunk A、chunk B 对照,看完整证据是否至少被一块包含。这里要找的是“证据范围”,不是任意重复关键词。

原文证据范围与两个切片及其重叠区域的静态关系
图1:静态范围说明图。两个切片的共享原文可以补足边界附近的上下文,但不能凭空补充原文不存在的答案。

例如“提交复核后需要补充哪些字段”的答案句跨过边界时,让下一块带上前一块末尾的一小段,可能使条件和字段名称一起进入下一块。若条件在上一章节,答案在很远的段落,大幅加 overlap 往往只是复制大量无关文本;应先检查切片结构,而不是把重叠当作任意距离的关联工具。

overlap 还带来重复上下文。检索 top-k 相邻块时,同一原文可能重复进入提示词,占据本可用于其他证据的空间。判断改动效果时,除了是否保住答案,还要看候选块是否越来越相似,以及独立证据有没有被挤出。

用带偏移的固定窗口看清边界

下面是无第三方依赖的原创 Python 字符窗口例子。80 与 24 只用于展示边界,不是推荐 RAG 参数。原文使用人工重复的背景句,把完整证据放在字符偏移 75 开始的位置;它会跨过第一个 80 字符窗口的末端。

def windows(text, size, overlap):
    # 此示例以 Python 字符数计量,保留原文与左闭右开偏移
    if size  0 且 0 = right
    ]
    stored_chars = sum(len(p["text"]) for p in parts)
    print("重叠字符数:", overlap)
    print("完整证据所在范围:", containing)
    print("总存储字符量:", stored_chars, "原文字符量:", len(text))

固定窗口的步长是 size-overlap。overlap=0 时,窗口在偏移 80 附近切开这个证据句;overlap=24 时,下一块从偏移 56 开始,可以容纳示例的完整证据范围。这个结论来自示例构造与范围关系,本文没有执行代码,也没有生成实测终端输出。

chunk size、overlap、窗口步长以及重复字符量与上下文预算的静态依赖框图
图2:静态参数说明图。size 与 overlap 共同决定固定窗口步长,重复内容影响总字符量与上下文预算;不是实际召回率或性能结果。

代码把 start/end 定义为左闭右开区间,并保留原文字符,不去掉空格、不替换换行。如果先做清洗或在切片中附加标题,这些偏移就不能不加说明地用于原始文件。空文档返回空列表,overlap 不得达到 size,否则窗口无法正常向前推进。

该函数特意采用硬字符窗口来说明数学关系,不适合直接替代所有中文文档的生产切分器。实际处理可优先保留段落和句子,并为中文加入合适标点分隔规则。递归切分的 overlap 是目标值,不能用这个固定步长公式预测每一块的真实起止。

根据漏证据和重复量调整,而不是套比例

观察到的现象先看什么可尝试的调整
条件与答案刚好分居边界两侧最小证据范围少量增加 overlap,比较完整覆盖
关键段落本已在一块内但没被召回问题与实际检索候选不要先把 overlap 当成根因
相邻块大量重复同一答案独立原文范围和上下文占用降低 overlap,检查块长
块本身混有多个不相关主题size 与段落边界先调整块粒度再比较重叠

对照时保持 embedding 模型、检索设置与同一组问题不变,只改一个切片参数。先固定 size 比较 overlap 候选;需要改变 size 时另起一组,避免无法判断收益来自更长的块还是更多重叠。

可记录:完整证据是否被单块覆盖、检索候选是否命中该范围、相邻候选重复了哪些原文、总索引字符或 token 量、装入模型的有效独立上下文。覆盖检查不是召回率,切片数变多也不是效果更好。成本和问答质量应由自己的测试集产生,本文不提供虚构指标。

微软的切片说明也把不同结构与内容类型作为选择条件,并给出起始参数示例。它们是特定上下文里的起点,不是所有中文知识库的最佳设置。参考地址:https://learn.microsoft.com/en-us/azure/search/vector-search-how-to-chunk-documents。

短文档也一定要 overlap 吗?

不一定。若文档已经能完整进入一个语义连贯的块,根本没有相邻边界需要补齐。优先保留它的独立含义,不要为了一个比例制造额外副本。

为什么 overlap 设了值却没有看到那么多重复字符?

先确认切分器的计量函数、分隔规则与实际块内容。结构化或递归切分通常不会像硬窗口一样逐字符保证相同重叠。观察真实起止与原文引用范围,不要只盯配置值。

overlap 越大是否越能降低答案遗漏?

不能保证。它有助于保留附近边界上下文,但也会增加冗余,并可能让检索结果集中在同一段原文。原文缺失、抽取错误或远距离条件关联,都不是继续提高 overlap 就能可靠修复的问题。

最终选择应落在可解释的证据上:哪些问题原来被切断,改动后哪些范围被完整保留,增加了多少重复内容。能回答这三件事,再决定保留哪个 overlap,比套用固定比例更有依据。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
ONNX 导出怎样声明动态 batch 和序列长度ONNX 导出怎样声明动态 batch 和序列长度
上一篇
ONNX 导出怎样声明动态 batch 和序列长度
OVHcloud 升级 CNCF 白金会员释放了哪些云原生信号
下一篇
OVHcloud 升级 CNCF 白金会员释放了哪些云原生信号
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    474次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    533次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    552次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    506次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    324次使用