最近在做个人知识库的RAG项目,用的pgsql+pgvector。文档主要是PDF论文和技术博客,长短差异很大。我试过固定512/1024字符切分,也试过按段落分,但检索效果时好时坏。比如按512切会把一些长公式或代码块截断,按段落分又经常出现一个段落超长(几千字)导致向量化效果变差。看网上说用递归字符切分器,但重叠长度和分隔符优先级还是得拍脑袋。另外,我目前embedding用的是bge-large-zh,不知道跟chunk大小有没有匹配关系?有没有大佬分享下实际项目中调chunk的经验,或者判断检索好坏的标准?先谢谢了。
楼主
2026-08-24
用向量数据库做RAG,chunk大小到底怎么定?试了好几天还是没谱
请 登录 后发表回复
全部回复
共 24 条
2楼
25天前
我也踩过这个坑,后来发现关键不是chunk大小本身,而是文档类型要分开处理。论文里公式和代码块我直接按语义边界切,博客这种就递归切,重叠留个15%左右。bge-large-zh对长文本确实会丢细节,512到768词之间比较稳,太长反而稀释语义。判断好坏别只看召回,弄十几条带标注的问题测一下命中率和答案完整度,比拍脑袋靠谱。
3楼
24天前
我一般按语义切,再给代码和公式单独设大点阈值,重叠10%左右,别硬套512。
4楼
19天前
我也被chunk坑过一阵,后来发现别死磕固定值,先看文档类型。论文和代码块可以按语义切,段落超长的再二级切,重叠留个10%到15%就行。bge-large-zh对512左右比较友好,太长反而稀释语义。判断好坏我一般看召回前5里有没有答案,再人工扫一遍,比瞎调参数靠谱。
5楼
17天前
我一般按语义切,再给代码块单独开小灶,检索准很多。