RAG系统中的文档切块会导致语义不连贯,影响检索完整性。文章分析了无法找到完美切块规则的原因,提出"上下文重排"和"上下文扩展+二次重排"解决方案,通过模拟人类阅读习惯,先定位关键段落再扩展上下文,有效提升检索完整性和准确性。实验证明该策略在长上下文问题中表现最佳,是突破"断章取义"瓶颈的有效路径。
尽管大语言模型本身的能力在快速演进,但它依然无法凭空获取训练数据之外最新或专有知识。
检索增强生成(RAG, Retrieval-Augmented Generation)正是为解决这一问题而生:
在回答问题前,先从知识库中检索相关资料,再让模型参考这些资料生成答案。
换言之,RAG让大模型从“闭卷考试”变成了“开卷考试”。
但“开卷”也不一定更容易。如果检索到的资料不完整、不准确,能力再强的大模型也无法给出高质量答案。
因此,检索是RAG的关键,检索的效果取决于系统能否完整、准确地找到与用户问题最相关的内容。
1、文档切块:不可避免的语义破坏
几乎所有RAG系统都遵循同一条技术路径:
文档解析 → 文本切块(Chunks) → 向量化 → 初步检索 → 精细重排 → 大语言模型生成
RAG系统流程图
由于检索模型的输入长度往往有限,“文本切块”就成为了必要的步骤。 文本块越小,语义匹配也就越精确。
但切块正是影响RAG检索质量的元凶。
为了适应模型限制,原本连贯的长文档被机械切分为多个独立片段,容易因语义缺失、语义歧义或全局结构信息丢失导致检索不完整。
以《中华人民共和国民法典》为例(点击查看原文档,下同),在固定长度切块策略下,第一百二十三条关于知识产权的定义会被切成两块:
当用户提问:**“根据知识产权定义,哪些对象可享有专有权利?”**时:
- 文本块1因包含关键词“知识产权”,很容易被系统检索命中
- 文本块2虽然包含条目内容,但由于缺失标题和上下文,语义匹配得分低,极有可能被检索系统忽略
最终大模型只回答了法条的前四项内容,而遗漏了后四项。
因切块导致的语义割裂,是 RAG 产生“回答不全”问题的根源。
2、为什么找不到完美的切块规则?
既然切块会导致断章取义,那能否通过优化切块规则解决问题?
答案是:很难,甚至不可能。
文档格式高度多样、内容结构千差万别,没有一种切块规则能够适用于所有文档。
例如,在《小学生满分作文》中,包含题目、作者、点评等多种非统一格式元素,想用规则自动将完整作文切块非常困难。
《小学生满分作文》石元达作文原文
更重要的是,切块的“合理性”是相对于“提问”而言的。
在用户提问之前,我们根本不知道哪种切块方式是最优的。
以《深圳市前海一方恒融商业保理有限公司2024年度第二期华发优生活四号资产支持票据募集说明书》(简称《募集说明书》)为例,
当用户提问:“华发股份董事会有多少位董事?”
相关的内容文档中有两段:
- 第179页:“公司设董事会,由9名董事组成…”
- 第522页:“公司董事局由十四名董事组成…”
《募集说明书》第179页
但问题在于,仅看这两段,无法判断两处“公司”具体所指的对象。
我们还要依据第132页“共同债务人一:华发集团”和第499页“共同债务人二:华发股份”,才能确定:
第179页的**“公司”,指的是“华发集团”**;
第522页的**“公司”,指的是“华发股份”**。
依据这个问题,理想的切块需要将第132-179页(共48页)切到一个文本块,第499-522页(共24页)切到另一文本块。
但这样大块的内容往往超出了检索模型的可处理长度;同时,切得过粗也会削弱对其他细节类问题的回答精度。
所以:并不存在能适应所有未来提问的“十全十美”的静态切块方案。
只要切块存在,语义连贯性的破坏就不可避免。
3、上下文重排:优势及盲区
既然无法从优化切块上解决问题,我们能否在检索阶段进行补救?
当前主流检索方案采用“逐个评估” 方式,检索模型单独判断一个文本块与查询的相关性,从而忽视了切块造成的上下文问题。
为此,我们提出了“上下文重排”模式。
传统重排方式与长上下文重排方式比较
不同于传统重排模型“一次只给一个切片打分”、需要多次独立输入的模式,上下文重排采用“整体评估”模式:
将初步检索到的多个候选文本切片去重、按原文顺序拼接,组成一段包含完整上下文的连续长文本(例如60k tokens,依据硬件配置长度有所不同),一次性输入给重排模型。
这样,重排模型能够感知检索内容间的语义关联,更准确地评估各部分内容与提问的相关性。
回到《民法典》的例子:
当初步检索召回文本块1和2后,重排模型将两个文本块作为整体输入,理解了文本块2的前半部分是文本块1的延续,最终将“知识产权”对应的法规完整返回。
上下文重排流程
但这一方案并非一劳永逸。
如果文档较短,初步检索返回的结果能完整放入60k tokens的上下文窗口,那上下文重排的确能直接解决问题;
但当文档很长,初步检索返回的候选内容长度超过60k tokens时,我们不得不在重排前再做一轮筛选,而这依然可能导致关键信息遗漏。
换言之,上下文重排的效果,其实取决于初步检索是否把关键切片“捞回”。
例如,在《小学生满分作文集》中,石元达的作文被切分成四个文本块。
对于提问:“石元达的作文全文是什么?”
初步检索的60k内容中只包含文本块1和2、传统重排仅能召回文本块1。
引入上下文重排模型后,成功召回了文本块1和2,但文本块3和4仍然缺失。
文本块3和4在初步检索阶段因语义相似度较低被过滤掉,部分相关内容在初步检索阶段就被永久丢失。
4、上下文扩展:让RAG像人类一样“扫视”
为了解决这个问题,我们不妨先回顾一下:
在RAG技术出现之前,人们是如何从文档中获取知识的?
在传统搜索引擎中,系统只需按相关性排序返回片段列表,用户会自行阅读、判断、前后翻阅,从而补全上下文信息;
而在RAG系统中,由于检索结果面向大模型,大模型无法“主动翻页”或“扫视前后文”,只能基于给定片段生成答案。
一旦关键上下文缺失,错误或不完整的回答几乎不可避免。
因此,RAG对检索结果的完整性要求远高于传统搜索引擎。
它不能依赖“用户智慧”来弥补缺口,必须通过检索机制自身来确保信息的充分性。
上下文扩展+一次重排
为了有效实施上下文扩展,我们起初尝试直接依据初步检索阶段的向量相似度分数来决定扩展策略:
向量相似度越⾼的⽂本块,扩展范围越⼤,周围文本被纳入候选集合的可能性也越高。
此时RAG系统的检索流程如下:
上下文扩展+上下文重排
该策略对检索完整性的提升较为有限——许多关键但未被初步检索召回的文本块,依然未能通过上下文扩展被有效补充。
例如,在“石元达的作文”案例中:
- 初步检索仅召回文本块1和2
- 对文本块1和2进行上下文扩展
- 由于文本块1和2的分数较低,仅文本块3纳入候选集合,文本块4并未被包含进候选集合
- 文本块1、2与3输入重排模型
- 文本块1-3输入大模型,生成回答中遗漏文本块4
可见,上下文扩展并不能盲目地“多拿一点”,而是需要先精准识别关键片段,再有针对性地扩展其上下文。
上下文扩展+二次重排:先识别后扩展
对此,我们提出“上下文扩展+二次重排”方案,引入两阶段重排机制:
- 第一次重排:使用上下文重排模型对初步检索结果进行精确评分
- 上下文扩展:基于重排得分,对高分文本块进行扩展——将其在文档中相邻但未被召回的前后文本块纳入候选集。得分越高,扩展范围越大
- 二次重排:对扩展后的候选集再次重排,筛选出最终输入大模型的最优内容
这一流程赋予了RAG系统类似人类的“扫视”能力:
先定位最相关的关键段落,再对其上下文扩展,最终结合更完整语境判断相关性。
上下文扩展+二次重排
回到“石元达的作文”案例:
- 初步检索仅召回文本块1和2
- 第一次重排后获得较高分数
- 上下文扩展将相邻的文本块3和4一并纳入
- 第二次重排识别全部内容
- 最终文本块1-4输入大模型,生成准确完整的回答。
可以看到,经过“上下文扩展+二次重排”,RAG系统具备了更强的语义连贯性感知能力。
5、实验评测
为验证所提出策略的有效性,我们在50篇长文档上构建了包含855个问题的评测集,平均每个问题涉及11.3个相关段落。
三种检索流程对比
在实验中,我们采用统一的文档解析与切分策略,并使用 BGE-M3 向量模型进行初步检索。
随后,对各类重排模型与重排流程进行了系统评估:
- no_rerank:直接使用初步检索的向量召回结果,不进行任何重排;
- bge_rerank:采用 BGE-M3 重排模型(“逐个评估”模式),对每个候选文本块与查询进行独立相关性评估;
- jina_rerank:采用 Jina-Reranker-v3 模型(“整体评估”模式),作为业界公认性能领先的长上下文重排模型,能够联合评估所有候选文本块与查询的整体相关性;
- context_rerank:采用庖丁长上下文重排模型(“整体评估”模式),联合建模查询与全部候选文本块,按照图6所示的“流程一:直接重排”方案执行;
- extend_rerank:基于庖丁长上下文重排模型,按照图6所示的“流程二:扩展后重排”方案执行;
- rerank_extend_rerank:在庖丁长上下文重排模型的基础上,按照图6所示的“流程三:重排–扩展–重排”方案执行。
对比六种方案,我们分别截取1k、5k 和 10k tokens 的上下文作为最终召回结果,并计算其与人工标注结果之间的召回率。
不同上下文长度下的平均召回率
实验结果表明:
- 对于依赖长上下文的问题,“整体评估”形式的重排模型显著优于”逐个评估“的重排模型;
- “上下文扩展 + 二次重排”策略能够进一步提升召回完整性,在全部召回长度下均取得最佳性能。
6、总结
在RAG系统中,文档切块是绕不开的工程妥协,但它带来的语义碎片化是检索完整性的最大敌人。
我们提出的****“上下文扩展与二次重排”****策略,本质上是让RAG系统模仿人类的阅读习惯:
不只看孤立的片段,更要基于线索去扫视周围的语境。
这种方法并未改变切块的规则,而是改变了检索的逻辑,以极低的成本有效弥补了信息缺口。
对于追求高精度、高完整性的企业级RAG应用而言,这或许是突破“断章取义”瓶颈的最有效路径。
7、实战应用
“上下文扩展与二次重排”技术,现已在ChatDOC Studio正式发布上线!
您可以通过PC端访问https://chatdoc.studio/ ,体验不同方案的实际效果。
ChatDOC Studio 提供多种服务形态,您可通过网页端即时检索,也可通过API调用与任意业务系统集成。
我们仍以石元达作文为例,对比上文不同检索模式的实际表现:
“Basic(初步检索后直接输入)”模式检索结果
“Contextual(上下文扩展+上下文重排)”模式检索结果
能够看到,无论是选用“Basic(初步检索后直接输入)”还是“Contextual(上下文扩展+上下文重排)”模式,在6k token长度下,系统仅能检索召回包含石元达姓名的文本切片**(黄色高亮显示)**,而在检索步骤中就遗漏了所需要的关键信息。
“Expanded(上下文扩展+二次重排)”模式检索结果
而选择“Expanded(上下文扩展+二次重排)”模式时,可以看到,同样token长度下,石元达作文全文被完整召回**(黄色高亮显示),**证明“上下文扩展+二次重排”在实际应用中具备显著提升检索完整性的优势。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
大模型入门到实战全套学习大礼包
1、大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
2、大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
3、AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
4、大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
5、大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
适用人群
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。