最近在搭一个企业内部文档的RAG系统,用的Chunk大小是512,top_k设了10。但发现LLM回答时经常被一些边缘信息带偏,比如问“报销流程”,它却引用了“差旅标准”里的无关细节。试过调整chunk overlap和相似度阈值,效果不太稳定。想问问大家,有没有什么好的策略能精确定位到最相关的段落?比如在检索后加一个重排序(rerank)步骤?或者干脆换个embedding模型?先谢过各位大佬了。
楼主
2026-07-19
RAG检索到的文档太多太杂,怎么让LLM只关注最相关的几段?
请 登录 后发表回复
全部回复
共 188 条
2楼
2026-09-17
top_k=10确实容易塞进太多噪音,我一般先砍到5再加重排。重排模型用bge-reranker-v2挺稳的,比单纯调阈值靠谱多了。另外可以把检索结果按文档来源或标题做一下聚合,同一主题的只留最高分那几段,能过滤掉不少边缘内容。embedding模型如果预算够可以换,但重排的性价比更高,先加上试试看。
3楼
2026-09-17
top_k设10确实有点多,模型很容易被噪声干扰。加个rerank步骤是最直接的,用bge-reranker或者cohere的rerank接口都行,先召回20-30条再精排取前3-5条,效果提升挺明显的。embedding模型也值得换,中文场景bge-m3或者gte都还不错,但换模型之前建议先把rerank加上试试,性价比更高。另外chunk 512对报销流程这种可能偏长,试试按语义分段而不是固定长度切。
4楼
2026-09-17
加个rerank确实管用,我用的bge-reranker把top10压到3条,准多了。
5楼
2026-09-21
top_k设10确实容易混进噪音,加个rerank基本是标配了,bge-reranker或者cohere的都不错,能砍掉一半不相关的。不过你chunk 512可能偏大,报销流程这种问题往往就藏在一两句话里,试试拆小一点再配个sentence window检索。embedding模型也得看领域,通用模型对内部术语经常抓不准,换个在业务语料上微调过的会稳不少。
6楼
2026-09-21
加个rerank确实有用,我用的bge-reranker,top_k降到3效果反而更好。
7楼
5天前
这个思路不错,收藏了。
8楼
4天前
这个思路不错,收藏了。
9楼
1天前
加个rerank确实管用,我用的bge-reranker感觉比调阈值稳多了。