最近在搭一个本地知识库问答,用的ChatGLM3做生成,embedding试了m3e-base和bge-large-zh,检索出来的片段感觉相关性还行,但最后回答经常答非所问。我怀疑是embedding和生成模型之间的“语义断层”问题,尤其是长文档切分后,chunk之间上下文丢失很严重。有没有大佬遇到过类似情况?是必须上重排模型(比如bge-reranker)才能救回来,还是说切分策略(比如重叠窗口、按标题切)更关键?另外,如果只用CPU跑推理,有没有比较轻量但中文效果不拉胯的embedding方案?求指条明路,折腾两周了有点想放弃了……
楼主
2026-08-31
RAG系统用开源模型做embedding,中文效果总是差口气,大家怎么解决的?
请 登录 后发表回复
全部回复
共 22 条
2楼
1天前
切分策略比换模型更值得先调,chunk重叠给到20%试试,重排模型CPU跑bge-reranker-base也就多几百毫秒。
3楼
1天前
答非所问大概率不是embedding的锅,先别急着换模型。你试试把检索回来的top3 chunk连原文带问题一起塞给ChatGLM3,让它先复述一遍相关片段再作答,很多时候是生成端没吃透上下文。切分上按标题切加10%重叠确实比固定窗口强不少,长文档里表格和列表单独成块也管用。CPU跑的话可以看看text2vec-base-chinese,比bge-large轻不少,中文召回够用,再配个bge-reranker-base做精排,效果能拉回来一截。