跳到主内容
快讯直播
AI智模界
AI 词典

父子文档检索:小块找,大块喂

父子文档检索(Parent-Child Retrieval)是一种AI 词典:检索增强生成">检索增强生成(RAG,Retrieval-Augmented Generation)里的分块策略:用小块去检索,命中后把小块所属的大块交给大模型,把「找得准」和「答得全」这两件事拆开做。

先说说为什么需要它。做 RAG 的第一步是把文档切块,再算成向量存进数据库。切得小,每块的语义更聚焦,用户问一句,向量相似度更容易命中那一两句关键内容;但拿到手太短,模型不知道这段话在说什么背景,容易答偏。切得大,上下文完整,可整段的意思被「平均」掉了,检索反而变得糊,问什么都只能召回个大概。

打个比方:这就像在图书馆找一段论述。你希望有一张精确的索引卡,写着「这句话在第 3 章第 2 节第 5 段」,顺着它一下子定位;但真正读的时候,你借走的是整节内容,而不是那张卡片。索引卡是子块(child chunk),整节是父块(parent chunk)。

实现思路也很直白:先把文档按较大单元切成父块(比如一章、一节、一整个问答对),再把每个父块切成若干子块(比如两三句话)。子块单独做向量,同时带一个指向父块的 ID。检索时在子块层面做相似度搜索,取回若干候选后,按 ID 回表取出对应的父块,去重后拼进提示词(prompt)。有些实现会做多级,比如「章节 → 段落 → 句子」,逐级向上取。

它和几个近亲容易混淆:

方案检索单元交给模型的单元特点
普通固定分块分块本身同一个分块简单,但精度与上下文互相拉扯
句子窗口检索单句命中句 + 前后 N 句窗口围绕命中点对称展开,较机械
父子文档检索子块预定义的父块依据文档结构,上下文更自然完整

区别在于:句子窗口是「以命中点为中心扩一圈」,父子检索是「按文档原本的层级往上升一级」;而重排(rerank)、查询改写属于检索前后的优化,跟分块粒度是两回事。

对开发者来说,这套方案的最大价值是可以用一个开关同时改善召回质量和答案完整度,代价也很实在:向量库里要存更多条子块记录,返回的父块更长,提示词 token 消耗和延迟都会上去。所以父块别设得太大,同一个父块被多个子块命中时要记得去重,父子 ID 的映射关系要稳定可维护。具体参数怎么定,得拿自己的文档和问题集实测,以官方文档和实际评测为准。

对普通职场人来说,它解释了一个常见现象:同一个知识库问答机器人,有时「找得到」却「答不全」。背后往往是它检索的颗粒度和喂给模型的颗粒度不一致。理解这一点,你在写内部文档时也会更注意:把每个段落写得自洽,机器和人读起来都省事。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。