最近在搭一个企业内部文档的RAG问答,用的bge-m3,chunk按512字符切的,overlap设了64。实际跑起来,很多问题明明文档里有答案,但召回的top3片段经常跑偏,比如问“报销流程”返回一堆“差旅标准”。我试过调top_k,效果不明显。想请教下,这种语义偏移一般是切块粒度不合适,还是embedding模型对长文本/特定领域支持不够?有没有什么调试思路,能系统性地判断问题出在哪一环?感谢!
楼主
26天前
RAG检索老召回不相关片段,是切块问题还是embedding选错了?
请 登录 后发表回复
全部回复
共 102 条
2楼
13小时前
我之前也踩过类似的坑,bge-m3对长文本的语义区分其实没那么细,512字符切可能把“报销流程”和“差旅标准”揉进一个块里了。你先试试把chunk缩到256甚至128,overlap调到32,看召回是不是更聚焦。另外,建议给每个chunk加上文档标题或小标题作前缀,能明显提升相关性。如果还不行,再考虑用rerank模型把top-k从5拉到20之后精排,比单纯调embedding更直接。
3楼
12小时前
先别换模型,这症状更像切块问题,试试按文档语义边界切块,比如标题和段落,512字符太机械了。