最近在搭一个文档问答的RAG系统,用的bge-large向量模型,chunk大小设了512。问题是:每次检索返回top 10个chunk,但用户问的问题往往只涉及其中1-2段,剩下8段全是噪声。试过调低top_k,但有时候相关片段又漏掉了。想问下大家,有没有什么策略能“二次过滤”这些chunk?比如先让LLM快速判断哪些chunk和问题相关,或者用关键词匹配做个粗筛?另外,chunk重叠设置多少合适?我现在设了32,感觉还是不够灵活。求指教,感谢!
楼主
2小时前
RAG检索出来的chunk太多,怎么让LLM只看最相关的几段?
请 登录 后发表回复
全部回复
共 3 条
2楼
2小时前
top_k设10确实容易带进来一堆噪音,我之前试过用LLM做rerank,先让模型快速给每个chunk打个0-1的相关性分,再取分高的前3个丢进去,效果挺稳的,不过得注意控制token消耗。chunk重叠的话,我一般设64,感觉对长文本的上下文衔接更友好,你可以试试看。另外,关键词粗筛我也试过,但太依赖问题本身的关键词质量,有时候反而把相关段落误杀了,不如用embedding加个相似度阈值来得直接。
3楼
2小时前
可以试试用LLM做个rerank,让模型快速打分排序,比关键词粗筛更准。chunk重叠设64左右可能更灵活。
4楼
1小时前
试过用LLM做个rerank先粗筛一轮,效果比单纯调top_k好很多,chunk重叠设64左右也更灵活。