最近在搭一个基于企业文档的问答RAG,用的是bge-large-zh + faiss,分块按512字符overlap 50。但实际测试时发现,明明库里有多条相关的历史案例,检索top5经常只中1条,甚至有条问题答案就在某文档里,结果召回的都是些泛泛的概念段。我试过调chunk大小、换过BM25混合,效果还是不稳定。想问下各位大佬,这种情况通常是embedding模型选型问题,还是说检索策略(比如重排)没跟上?另外,有没有针对长文档做RAG更合理的分块或索引思路?先谢过。
最近在搭一个基于企业文档的问答RAG,用的是bge-large-zh + faiss,分块按512字符overlap 50。但实际测试时发现,明明库里有多条相关的历史案例,检索top5经常只中1条,甚至有条问题答案就在某文档里,结果召回的都是些泛泛的概念段。我试过调chunk大小、换过BM25混合,效果还是不稳定。想问下各位大佬,这种情况通常是embedding模型选型问题,还是说检索策略(比如重排)没跟上?另外,有没有针对长文档做RAG更合理的分块或索引思路?先谢过。
你这个情况我遇到过,bge-large-zh在长文档上确实容易把泛泛的概念段排前面,因为语义相似度高但信息密度低。建议先别急着换模型,加个bge-reranker对top20做重排试试,召回率能明显提一截。分块上512字符对案例类文档有点碎,可以按段落或标题层级切,再给每块拼上文档标题和所属章节当上下文,检索命中率会稳不少。