大厂RAG文本分块核心教程(含京东面试真题),看懂这篇就够了!

张开发
2026/4/10 21:58:47 15 分钟阅读

分享文章

大厂RAG文本分块核心教程(含京东面试真题),看懂这篇就够了!
面试官RAG 里的文档是怎么存进向量库的你说说 Chunking 怎么做。‍♂️我文档直接整篇存进去就好了吧反正向量模型什么都能处理。面试官整篇存一篇 5000 字的文档压缩成一个向量细节信息全被「平均掉」了你检索的时候怎么精准定位到具体那段话而且 Embedding 模型有输入长度限制长文档根本塞不进去。‍♂️我那就切成小块呗每块 50 个 token切得越小检索越精准。面试官50 个 token一个句子都还没说完呢语义都不完整LLM 拿到这种碎片能看懂什么还有代码文件、表格这些特殊内容你按固定大小切试试‍♂️我呃……那就切成 500 token用固定大小加重叠就行了吧面试官固定大小加重叠只是最基础的策略。语义边界切割呢父子切割呢代码按函数切呢你一个都说不出来只会一种最简单的方案面试怎么过的好吧被问住了。Chunking 这块看起来简单但里面的学问不少下面我来详细讲。 简要回答文档不能直接存进向量库必须先切成小块也就是 chunk每个 chunk 分别向量化之后存成一条记录。每条记录我理解有三个核心部分向量用于相似度检索原始文本是检索命中之后塞给 LLM 读的内容metadata 是来源文件、页码这些附加信息用于过滤和溯源。这两个东西缺一不可向量负责找到原文负责阅读。切割粒度没有固定答案通常 500 到 1000 个 token 是一个合理的起点但更重要的是根据文档类型来选策略普通文本用固定大小加重叠有标题结构的文档按语义边界切代码按函数切如果既要检索精度又要上下文完整的话我会用父子切割也就是小块检索、大块返回。 详细解析文档是怎么存的先说一个最重要的前提原始文档不能直接存进向量库必须先切成小块chunk再存。你可能会问为什么不能整篇存原因有两个。第一向量模型有输入长度限制一般最多几百到几千 token一篇几千字的文档根本塞不进去。第二就算模型支持超长输入把整篇文章压缩成一个向量细节信息会被「平均掉」你想找「退款政策」但向量里还混着「配送时效」「积分规则」等内容最终检索到的就是这篇笼统的文档而不是精确的那段话。很多人以为向量模型无所不能其实它和人类阅读一样信息太密集就抓不住重点。所以文档入库的完整流程是这样的一篇文档会变成向量库里的多条记录这是 RAG 存储的核心特点。一篇 5000 字的文档切成 500 字一个 chunk就是 10 条记录100 篇文档就是 1000 条记录。每条 chunk 记录的结构那每条记录里到底存了些什么向量库里每一条记录通常包含三个部分缺一不可可以用一个直觉类比来理解这三者的关系向量是索引卡原文是书页metadata 是书签。索引卡向量告诉你这段内容在语义空间里的位置用于快速找到相关内容书页原文才是 LLM 真正要阅读的内容检索命中后原封不动地塞进 prompt书签metadata记的是来源文件名、页码、章节这些附加信息用于过滤「只搜客服部门的文档」和溯源「这个答案来自哪个文件的第几页」。向量和原文为什么要同时存你可能会想向量不就够了吗其实不是因为它们承担的角色完全不同。向量是一串浮点数LLM 看不懂只有检索系统才会用到它原文是纯文字没有向量就没法做相似度检索。向量负责「找到」原文负责「阅读」两者缺一不可。理解了存储结构查询时的流程就很顺了用户问题 - 向量化 - 在向量库里找相似的 chunk - 取出 chunk 的原文 - 塞进 prompt - LLM 生成答案。向量只在「找」的时候用LLM 最终读的是原文。粒度怎么定?既然要切切成多大合适粒度选择本质上是在两个方向上做取舍。chunk 太大向量把太多语义压缩在一起变得笼统检索时容易召回和问题只有部分相关的内容同时也更容易超出 Embedding 模型的输入长度限制。chunk 太小单个 chunk 语义不完整上下文丢失LLM 拿到这段内容也看不懂而且检索噪音更多。通常 5001000 token 是合理的起点但更重要的是结合文档的内容结构来决定。那具体怎么结合呢下面分策略详细讲。文档切割策略有哪些策略一固定大小切割Fixed Size Chunking最简单的方式按固定字符数或 token 数切割不管语义边界在哪。优点是实现简单、chunk 大小可控缺点是可能在句子中间截断破坏语义完整性。纯固定大小几乎不单独使用通常会加上**重叠overlap**来缓解边界截断问题。你可能觉得这种方式太粗暴了确实如此。重叠就像扫描仪扫跨页内容时特意扫两遍边缘区域前一个 chunk 的末尾和下一个 chunk 的开头有一段重叠内容确保跨边界的语义能被至少一个 chunk 完整覆盖。比如 chunk_size500、overlap100后一个 chunk 的前 100 个字符和前一个 chunk 的后 100 个字符是相同的即使边界切在了一句话中间这句话也一定完整地出现在某一个 chunk 里。这种策略适合纯文本、没有明显结构的文档是最简单也是最保底的选择。但保底毕竟只是保底如果你希望切割质量更高就需要理解下面这种策略。策略二语义边界切割Semantic/Structure Based Chunking固定大小切割最大的问题就是可能切断语义那为什么不顺着文本的天然断点来切呢这就是语义边界切割的思路——按文档的自然语义边界来切比如段落、句子、标题层级。核心思想是不要在语义中间截断找到文字天然的「断点」再切。为什么语义边界更好因为一个句子是语言表达意思的最小完整单位在句子中间截断就像切断一段话的呼吸前半句和后半句单独拿出来都看不懂。按段落切则更进一步每个 chunk 都是围绕同一个话题展开的完整段落语义独立性最好。实际操作时常见的做法是维护一个分隔符优先级列表先尝试按段落切切出来太大再按句子切还是太大再按标点切以此类推直到满足 chunk_size 限制。对于有明确标题结构的 Markdown 或 HTML 文档按标题层级切是更优的选择每个 chunk 对应整篇文档中的一个完整章节metadata 里自动带上所属标题比如「产品手册 退款政策 申请流程」既语义独立又方便过滤和溯源。策略三特殊内容专项处理前面两种策略对普通文本够用了但遇到代码文件和表格就会露馅通用切割策略在这两种内容上效果很差需要单独处理。代码应该以函数或类为单位切割原因很简单一个函数是最小的语义完整单元从函数中间截断就失去了逻辑意义。试想把一段函数的参数定义和返回值分到两个 chunk单独看哪个 chunk 都不知道这段代码在做什么。用语法解析工具比如 Python 的 AST 模块可以识别函数和类的边界保证每个 chunk 都是完整可理解的代码逻辑单元。表格则要整块保留转成 Markdown 格式存储不能按行截断。表格的每一行都依赖表头才有意义「2 小时」单独来看完全不知道是什么的 2 小时但配上列名「响应时间2 小时」就清晰多了。把整张表格作为一个完整 chunk才能保留列的含义和行间的对比关系。策略四父子切割Parent-Child Chunking理解了前面几种策略各自的局限——固定大小可能切断语义语义边界切割质量好但粒度不好控制你自然会问有没有一种策略能同时兼顾检索精度和上下文完整父子切割就是在回答这个问题。这是在实际工程里效果提升最显著的策略之一核心思路可以用一句话概括检索时用放大镜小块精准定位返回时用全景图大块上下文完整。存储时同一段内容存两份。一份是细粒度的小 chunk比如 200 token专门用于向量检索因为小 chunk 语义聚焦围绕一个小话题检索精度高。另一份是包含这个小 chunk 前后上下文的大 chunk比如 1000 token通过 ID 与对应的小 chunk 关联。检索时用小 chunk 找到精准的命中点然后根据关联 ID 取出对应的大 chunk把完整的上下文交给 LLM 阅读生成质量更好。好比图书馆找书你用目录卡小 chunk快速定位到某章某节但拿出来读的是完整的那一章大 chunk不是只读目录卡上的那句简介。这种策略的代价是存储量翻倍索引构建也更复杂但在对召回质量要求较高的场景下这个成本是值得的。把几种策略的适用场景梳理成表实际选型时可以对照来看策略适用文档类型优点缺点固定大小 重叠纯文本、无明显结构实现简单、chunk 大小可控可能在语义中间截断语义边界切割段落分明的文章语义完整召回质量好实现稍复杂chunk 大小不均标题层级切割Markdown、HTML 文档天然语义独立带结构 metadata依赖文档有清晰的标题结构代码按函数切割代码文件保留代码逻辑完整性需要 AST 解析限定语言父子切割各类文档追求高质量检索精准 上下文完整两全存储量翻倍索引构建复杂 面试总结回到开头那段面试Chunking 这个问题考察的是你对 RAG 存储层的理解深度。回答这个问题先说清楚为什么文档不能直接存一是向量模型有输入长度限制二是整篇文档压缩成一个向量会丢失细节。然后说清楚怎么切固定大小加重叠是最基础的语义边界切割更智能代码和表格要特殊处理父子切割可以兼顾检索精度和上下文完整。粒度选择没有银弹5001000 token 是起点关键是根据文档类型选策略。如果面试官追问「你实际用的什么策略」你就说「固定大小加重叠做兜底对结构化文档用语义边界切割对高质量要求的场景用父子切割」这个回答就很扎实了。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章