最近在搭一个本地知识库问答的demo,用的LangChain+Chroma+OpenAI的ada-002。问题是:我试了256、512、1024几种chunk大小,但检索回来的片段要么太碎漏掉关键信息,要么太大把无关内容也带进来,导致LLM回答偏离。而且换了bge-small和text2vec-large后,感觉语义匹配效果差异挺大的,有时候查“苹果手机保修政策”却把“苹果种植手册”排前面了。是不是我预处理或者索引参数没调好?有没有老哥分享下实际项目里chunk和模型选型的经验?
楼主
2026-07-18
用向量数据库做RAG时,chunk大小和embedding模型总搭不对,求指点
请 登录 后发表回复
全部回复
共 161 条
2楼
1天前
这个坑我踩过,chunk大小真不是拍脑袋定的,得看你文档本身的粒度。像保修政策这种条款型内容,512反而容易把一条完整规则切断,我后来改成按语义段落切,再叠加个小overlap,召回质量明显稳了。256确实太碎,LLM拿到半句话根本没法答。embedding模型差异更关键,ada-002对中文语义其实一般,bge-small轻但泛化弱,text2vec-large中文强可对长文本又不太友好,你那个苹果手机被排到种植手册,多半是模型没吃透领域词。我现在习惯先用目标query做一轮小规模召回测试,看top5里有没有噪音,再决定换不换模型。另外别忽略metadata过滤,给chunk打上来源和类型标签,能挡掉一大批跨领域误召回。还有个容易忽视的点是query改写,用户问法太口语时先扩写成规范表述再检索,比单纯调chunk有效得多。