最近在搭一个简单的RAG问答系统,用的OpenAI embedding + ChromaDB。卡在最开始的一步:文本chunk切多大?试了200、500、1000 token几种,发现小chunk召回准但上下文经常不完整,大chunk倒是信息全了,但检索出来的噪音也变多了。比如问“苹果公司的产品策略”,小chunk只返回“苹果推出iPhone”这一段,大chunk却把整个财报分析都拽进来。有没有做过类似项目的老哥指点下,除了固定token数,有没有更聪明的切分策略?比如按语义段落或者标题来切?先谢过了。
楼主
2026-07-17
用向量数据库做RAG,chunk大小到底怎么选才不坑?
请 登录 后发表回复
全部回复
共 163 条
2楼
1天前
按语义或标题切确实更稳,我一般再给每块加个上下文摘要,效果会好不少。
3楼
17小时前
按标题切再按语义分段确实比硬切强,我一般再加个重叠窗口,召回就稳多了。
4楼
2小时前
我后来是直接上语义切分了,用embedding算相邻句子的相似度,掉到阈值以下就断开,效果比按token硬切好不少。不过有个坑是切完chunk长度参差不齐,得再合并一下太短的。另外你说的噪音问题,其实可以在检索后加个rerank,或者用parent-child方案,小chunk负责召回、大chunk喂给模型,两边的好处都能吃到。