Skip to content

6.3.2 什么时候应该按文档级检索,什么时候按 Chunk 级检索? ​

先给结论:文档级检索更适合先确定“哪篇文档相关”,chunk 级检索更适合直接定位“哪段内容相关”。该选哪一种,关键看问题需要的是整篇上下文,还是局部片段。

所以这不是谁更先进的问题,而是:

  • 你到底要先找文档,还是先找片段

文档级检索更适合什么问题 ​

文档级检索更适合这些场景:

  • 用户在问某篇文档整体讲什么
  • 后面还需要在文档内部继续浏览或抽取
  • 一篇文档本身就是最小知识单元
  • 问题依赖较大范围上下文

例如:

  • “这份退款政策主要讲了什么?”
  • “这篇接口文档里有没有讲幂等?”

这类问题里,先确定相关文档,通常比直接找一句话更自然。

Chunk 级检索更适合什么问题 ​

chunk 级检索更适合这些场景:

  • 用户问的是具体规则、条件、字段或局部结论
  • 需要直接定位某一段内容
  • 一篇文档里主题很多,不适合整篇一起召回
  • 想控制上下文长度和噪声

例如:

  • “定制类商品支持无理由退货吗?”
  • “createOrder 的 timeout 默认值是多少?”

这类问题里,直接定位相关 chunk 往往更高效。

两者最核心的差别是什么 ​

可以先这样理解:

  • 文档级检索:先找容器
  • chunk 级检索:先找片段

文档级更强调:

  • 相关文档身份
  • 整体上下文

chunk 级更强调:

  • 局部精确命中
  • 片段粒度控制

为什么很多系统会两者结合 ​

因为真实问题并不总是纯粹只适合一种。

很多系统会采用这样的思路:

  1. 先按文档级找出相关文档
  2. 再在文档内部找相关 chunk

或者反过来:

  1. 先 chunk 级召回
  2. 再按 doc_id 聚合回文档

这也是为什么这两个概念更像是:

  • 不同粒度的检索设计

而不是对立方案。

什么情况下更该谨慎用文档级检索 ​

如果文档本身很长、主题很多,文档级检索常见风险是:

  • 整篇命中,但真正相关段落不突出
  • 上下文太大,噪声变多
  • 后续生成很容易被不相关部分干扰

这类场景里,直接走 chunk 级通常会更稳。

什么情况下更该谨慎用 chunk 级检索 ​

如果一个问题明显依赖大范围上下文,chunk 级检索常见风险是:

  • 片段过于局部
  • 用户真正想看的整体语境丢掉了
  • 回答时缺乏完整文档背景

这类问题里,只看 chunk 容易把事情切得太碎。

一个常见误区 ​

很多人会觉得:

  • chunk 级更细,所以一定更好

这不成立。

更细并不总等于更对。

如果问题本来就需要整篇或大段上下文,过早切成 chunk 级召回,反而可能把信息打散。

一句话总结 ​

文档级检索适合先确定相关文档,chunk 级检索适合直接定位局部内容。关键不是谁更高级,而是问题需要整篇上下文还是局部片段。很多稳定系统最终会把两种粒度结合起来用。