文档切分(chunking)到底该多细?
-
文档切分没有一个永远正确的大小。chunk 太大,检索回来一堆噪声;chunk 太小,上下文又断掉。
我一般先看文档类型:
- FAQ:可以按问答对切
- 产品文档:按小节切
- 合同/制度:按条款切
- 技术文档:按标题层级切
- 代码说明:按模块或函数关系切
不要一上来就拍脑袋设 500 字或 1000 字。更好的办法是拿真实问题测试:用户问一个问题,检索出来的前三个片段里有没有答案?如果没有,先调切分和检索,而不是急着换模型。
还有个细节很重要:保留标题路径。比如“产品手册 > 计费 > 退款规则”。模型看到这条路径,会比只看到正文更容易理解片段位置。
我的经验是,RAG 项目里很多效果问题都不是生成问题,而是切分和检索问题。别把锅都丢给大模型。
-
文档切分没有一个永远正确的大小。chunk 太大,检索回来一堆噪声;chunk 太小,上下文又断掉。
我一般先看文档类型:
- FAQ:可以按问答对切
- 产品文档:按小节切
- 合同/制度:按条款切
- 技术文档:按标题层级切
- 代码说明:按模块或函数关系切
不要一上来就拍脑袋设 500 字或 1000 字。更好的办法是拿真实问题测试:用户问一个问题,检索出来的前三个片段里有没有答案?如果没有,先调切分和检索,而不是急着换模型。
还有个细节很重要:保留标题路径。比如“产品手册 > 计费 > 退款规则”。模型看到这条路径,会比只看到正文更容易理解片段位置。
我的经验是,RAG 项目里很多效果问题都不是生成问题,而是切分和检索问题。别把锅都丢给大模型。