最近在做一个代码库问答的RAG项目,用的bge-m3做embedding,chunk是按函数粒度切的。问题是查询“如何实现用户登录接口”时,召回的前20个chunk里有一半是工具函数或者配置文件,真正的业务代码反而排到后面去了。我试了cross-encoder做rerank,结果更离谱——它把两个根本没有业务关联但文本表面相似的chunk排到了第一。感觉是不是我的chunk元数据(比如文件路径、依赖关系)没被利用起来?还是说这个场景应该直接用代码专用embedding模型?有没有大佬分享下代码RAG的chunk策略和召回技巧?