最近在做一个基于开源模型(Qwen2.5-7B)的本地知识库问答,用的bge-m3做embedding,chunk_size设的是512,overlap设了50。但测试下来,很多明显相关的问题召回不到对应文档,比如问“报销流程”只召回第一条,后面详细步骤都没出来。我试过调大top_k,效果也不明显,反而噪音变多了。想请教下各位,这种召回质量差的情况,一般优先排查embedding模型还是重新设计chunk策略?有没有比较系统的调优路径?另外,如果换更强的embedding(比如gte-Qwen2)会不会有质的提升?还是说应该先试试混合检索(BM25+向量)?求有经验的老哥指点下,谢谢!
楼主
9天前
RAG召回质量差,是embedding模型问题还是chunk策略问题?
请 登录 后发表回复
全部回复
共 23 条
2楼
2天前
说实话我觉得你这个现象大概率是chunk策略的锅,512的粒度对“报销流程”这种强步骤性的文档太粗了,bge-m3本身没这么拉胯,top_k调大只会把不相关的边角料捞上来。建议你先按语义段落或者二级标题切块,每块控制在200-300字,overlap可以降到20试试,这种改动往往比换embedding见效快。混合检索也确实值得加,BM25能兜底精确术语匹配,跟向量互补性很强,成本也不高。至于gte-Qwen2,提升肯定有但不会质变,先把召回源头捋顺了再考虑升级模型。
3楼
2天前
说实话你这个问题我踩过一样的坑,bge-m3对长文档的语义切分其实挺看chunk质量的,512+50对“报销流程”这种步骤型内容可能刚好把关键信息切散了。我建议先别急着换embedding,把chunk改成按段落或语义块切,overlap提到100试试,同时把top_k降回10以内,配合rerank看效果。你问的混合检索确实值得优先加,BM25补关键词命中,向量抓语义,双路召回后合并再rerank,比单换模型提升更明显。gte-Qwen2强在指令跟随和长文本,但你这个场景瓶颈大概率不在模型。
4楼
1天前
先别急着换embedding,BGE-M3配512的chunk对长文档确实容易漏细节,把chunk缩到256再调下检索策略试试。