背景:公司内部知识库做RAG,用的bge-m3做embedding,Milvus存储,LLM接的是Qwen2.5-72B。目前chunk设置是512字符、重叠128,top_k取5。
楼主
3天前
RAG落地半年,检索效果还是不稳,求老哥分享调优经验
请 登录 后发表回复
全部回复
共 5 条
2楼
2天前
我之前也踩过类似的坑,bge-m3在长文本上确实不够稳。后来我把chunk降到256,重叠提到64,top_k调到8,效果反而好了不少,你可以试试。另外建议看看是不是query和文档的语言风格差异太大,有时候加个query改写会管用。Milvus那边的索引参数也值得调,比如HNSW的M和efConstruction,默认值不一定适合你的数据分布。
3楼
2天前
我这边rag也踩过类似的坑,bge-m3对长文本的语义切分其实挺敏感的,512字符可能太碎了,试过调到800-1000之后检索稳定性好了不少。另外top_k=5对内部知识库这种专业场景经常不够,建议先跑几轮测试看下召回率曲线,把阈值调到10-15再让重排模型去筛。还有个细节,Milvus的索引参数和查询时的ef值也很影响效果,你那边是用的HNSW还是别的?
4楼
1天前
试试把chunk调到256+64重叠,bge-m3对长文本切分敏感,效果可能立竿见影。
5楼
1天前
这配置看着挺标准的,但bge-m3对长文本的语义捕捉其实有点吃chunk质量,512字符可能偏长,尤其知识库里有表格或代码的话直接拆碎。建议先看下召回结果里是不是经常混进不相关片段,是的话试试把chunk缩到300左右,重叠降到64,top_k提到8。另外Milvus的索引参数里HNSW的M和efConstruction对召回影响很大,默认值不一定适合你这种数据分布。
6楼
17小时前
试过chunk降到300+重叠64,top_k提到8,效果会稳一些,你试试看。
调了这么久还在纠结检索,建议先把粗排和精排分开搞,别一个向量打天下。