最近在做一个知识库问答项目,用的Milvus存了大概200万条384维的向量,文本是中文长文档切块后过bge-base的embedding。现在问题是:用测试集跑出来的Recall@10只有65%左右,但单独用向量检索看相似度,感觉结果还挺相关的。我试过调nprobe和efSearch,也换过距离算法(L2换IP),效果变化不大。目前怀疑是不是切块策略有问题——之前是按固定512字符切的,有些语义完整的段落被拆开了。另外也考虑过是不是embedding模型本身不够强,但暂时没资源换更大的模型。想请教下各位,除了这些常规调参,还有哪些方向值得排查?比如索引参数(HNSW的M和efConstruction)对召回的影响大吗?或者有没有必要做query改写?先谢谢了。