最近在搭一个简单的RAG问答系统,用的是LangChain+Chroma,文档切成了512字符的chunk。但实际跑起来发现,top-k设到5,经常召回一堆不相关的内容,比如问“苹果公司财报”,结果出来一堆水果种植的文章。我猜可能是Embedding模型没选好,或者chunk粒度太粗?但也尝试过调小chunk和降低k值,效果不稳定,有时候反而漏掉关键信息。有没有大佬遇到过类似问题?除了调参数,有没有更好的策略来过滤或重排召回结果?谢谢!
楼主
3小时前
RAG系统里检索到的文档太多太乱,怎么控制召回质量?
请 登录 后发表回复
全部回复
共 2 条
2楼
2小时前
试试加个reranker重排吧,比如Cohere的,能明显过滤掉那些不相关的噪声。
3楼
1小时前
遇到过同样的问题,后来发现单纯调chunk和k值确实容易顾此失彼。我试过在检索后面加一层reranker,比如用Cohere或BGE的reranker模型,对召回来的chunk重新打分排序,效果比直接调top-k稳定很多。另外embedding模型也可以换成bge-large或text-embedding-3-large,对领域术语的分辨率会高一些。还有个小技巧,检索前对query做一下重写,比如把“苹果公司财报”扩展成“苹果公司(AAPL)2024年第四季度财报”,也能明显减少噪音。