Appearance
3.4.3 什么时候应该按文档级检索,什么时候按 Chunk 级检索?
先给结论:文档级检索和 chunk 级检索没有绝对的谁替代谁,关键要看你的问题粒度、文档结构,以及后面准备怎样组织上下文。
很多系统真正合理的做法,不是二选一,而是按目标选择,甚至两者结合。
先把两种粒度说清楚
文档级检索
系统先判断:
- 哪份文档更相关
- 哪个页面更相关
- 哪个知识对象更相关
然后再在命中文档内部继续找细节,或者直接把整份文档的关键部分组织给模型。
chunk 级检索
系统直接判断:
- 哪个 chunk 最相关
- 哪些局部证据最值得先拿回来
然后再把这些 chunk 直接送给模型,或者进一步聚合成更完整上下文。
文档级检索更适合什么情况
1. 文档本身就比较短或比较聚焦
如果一篇文档本来就只讲一个主题,文档级检索通常不会太粗。
2. 用户问题更像“该看哪份资料”
比如:
- 哪份制度规定了这个流程
- 哪个页面解释了这个错误
- 哪篇文档是这个功能的正式说明
这类问题先找对文档,往往比先找局部句子更重要。
3. 后面还会在文档内部继续定位
文档级检索并不一定意味着把整篇直接喂给模型。很多时候它只是第一步:
- 先找对文档
- 再在文档内部按结构或 chunk 做二次定位
chunk 级检索更适合什么情况
1. 用户问题通常只命中文档中的局部内容
比如:
- 某条规则怎么规定
- 某个异常情况怎么处理
- 某个限制条件是什么
这类问题更适合先拿回局部证据,而不是整篇文档。
2. 文档本身较长、主题较多
文档越长,越容易出现“整篇相关,但答案局部并不突出”的问题。
这时 chunk 级检索通常更有优势。
3. 你更关心检索精度
chunk 级检索更适合解决:
- 先把真正相关局部找准
- 再看后面怎么组织给模型
一个直观对比
如果用户问的是:
“退款规则里,定制类商品能不能无理由退货?”
那:
- 文档级检索更像先找“退款规则”这份文档
- chunk 级检索更像直接找“定制类商品不适用该规则”这段证据
如果用户问的是:
“和退款相关的正式说明应该看哪份资料?”
那文档级检索就更自然。
为什么很多系统最后会两者结合
因为这两种粒度解决的问题并不一样。
很多系统真实做法会是下面几种之一:
1. 先文档级,再 chunk 级
先缩小到少数相关文档,再在文档内部做 chunk 检索。
2. 先 chunk 级,再文档聚合
先精准命中局部 chunk,再把命中的 chunk 回填到所属文档、小节或父块里。
3. 文档级和 chunk 级并行召回
同时拿:
- 哪些文档相关
- 哪些局部 chunk 更相关
最后再统一排序和组织上下文。
这些做法表面不同,本质都在说明一件事:
文档级和 chunk 级不是非此即彼,而是可以分工合作。
怎么判断当前更该偏哪一边
如果你经常看到这些现象,通常更该偏 chunk 级:
- 命中了相关文档,但总抓不到答案局部
- 模型回答总是泛
- 文档很长、主题很多
如果你经常看到这些现象,通常更该偏文档级或文档聚合:
- 召回回来的 chunk 很准,但回答像一堆碎片
- 用户其实更关心“哪份文档是正式依据”
- 文档本身结构清楚,整篇或整节就已经足够聚焦
一个常见误区
很多人会把 chunk 级检索默认理解成“比文档级更先进”。
这并不准确。
chunk 级检索更细,但细不等于一定更合适。
如果用户问题本来就更像找“哪份资料”,或者文档本来就很聚焦,那文档级检索完全可能更自然、更稳。
一句话总结
什么时候按文档级检索,什么时候按 chunk 级检索,关键不在“哪种更高级”,而在“问题粒度、文档结构和后续上下文组织方式更适合哪种粒度”。很多成熟系统最终不是二选一,而是让两者按不同目标配合起来。