最近在用本地部署的Qwen2.5-7B搭一个简单的RAG问答系统,文档主要是技术手册和API文档,大概几百页。我用的bge-large-zh-v1.5做embedding,chunk大小设的512,重叠50。结果测试时发现,稍微换个问法,比如问“怎么设置超时时间”和“请求超时怎么配”,召回的结果完全不一样,经常召不到关键段落。我试过调chunk大小和重叠,效果提升不明显。想问问大家,这种场景下是应该换更强的embedding模型(比如bge-m3),还是问题出在检索策略上?另外,有没有必要先做一下query改写或者HyDE?感觉每个环节都调一下太费时间了,希望有经验的朋友指点一下方向。
楼主
25天前
用开源模型搭RAG,召回效果差得离谱,是chunk切分问题还是embedding选错了?
请 登录 后发表回复
全部回复
共 43 条
2楼
1天前
先别急着换模型,查查是不是纯向量检索把关键词漏了,试试混合检索加BM25。
3楼
14小时前
几百页的技术手册,chunk设512其实有点大,容易把关键段落和无关内容混在一起,试试256加10%重叠。你这两个问法召回差异大,本质是bge-large对口语化改写不敏感,换bge-m3会好一些但别指望根治。建议先加个轻量query改写,把用户问法往文档里的术语靠,比如“超时时间”改成“timeout配置”,比调chunk见效快。HyDE对技术文档效果一般,容易引入幻觉,先别折腾那个。
4楼
1小时前
我之前也踩过类似的坑,bge-large-zh对同义问法的鲁棒性确实一般,换成bge-m3后召回明显稳一些,尤其是你这种技术手册场景。不过先别急着换模型,建议拿几个bad case看看召回的chunk里到底有没有正确答案,如果有但排后面,那问题在排序不在embedding。query改写和HyDE值得试,成本不高,但更省事的做法是先加个BM25做混合检索,关键词匹配能兜住不少语义漂移的情况。