最近在用本地部署的Qwen2.5-7B搭一个简单的RAG问答系统,文档主要是技术手册和API文档,大概几百页。我用的bge-large-zh-v1.5做embedding,chunk大小设的512,重叠50。结果测试时发现,稍微换个问法,比如问“怎么设置超时时间”和“请求超时怎么配”,召回的结果完全不一样,经常召不到关键段落。我试过调chunk大小和重叠,效果提升不明显。想问问大家,这种场景下是应该换更强的embedding模型(比如bge-m3),还是问题出在检索策略上?另外,有没有必要先做一下query改写或者HyDE?感觉每个环节都调一下太费时间了,希望有经验的朋友指点一下方向。
楼主
10天前
用开源模型搭RAG,召回效果差得离谱,是chunk切分问题还是embedding选错了?
请 登录 后发表回复
全部回复
共 24 条
2楼
1天前
说实话我觉得你这问题大概率不在embedding上,bge-large-zh-v1.5对中文技术文档已经够用了。chunk 512配50重叠对API手册这种结构化内容偏粗,试试按章节或者代码块边界切,或者用父子chunk策略,召回粒度会细很多。另外query改写确实值得先做,尤其是你这种同义问法差异大的情况,简单加个LLM意图归一化就能解决一大半,比直接换模型性价比高。
3楼
1天前
说实话我觉着你这情况大概率不是embedding的问题,bge-large-zh-v1.5在中文技术文档上不算差,更像chunk粒度太粗导致语义被稀释了。512对API手册这种结构化内容偏大,可以试试按标题或代码块切,或者用256+32的组合对比下。另外query改写确实值得搞,你举的“超时时间”和“请求超时”本质同一个实体,但直接向量检索很容易漂,加个简单的同义词扩展或者few-shot改写成本不高,效果可能立竿见影。HyDE有点重,先别上。
4楼
1天前
说实话你这问题大概率不在embedding上,bge-large-zh-v1.5对中文技术文档的语义理解其实够用了,问题更可能出在检索策略太单薄。我之前也踩过类似坑,chunk调参收益很低,后来加了BM25和向量检索的混合召回,再用Rerank模型过一遍,效果直接翻倍。query改写和HyDE确实有用,但成本高,建议先试试把top_k调大点(比如20),配合重排看能不能救回来。另外你那个“超时时间”和“请求超时”其实是同义表达,但bge对这种短query的语义泛化还是弱,可以试试在索引里加一些别名扩展。
5楼
1天前
换bge-m3大概率有提升,但你这问法差异大得先试query改写,低成本见效快。