修复 Milvus 混合检索 RRF 分数与相似度阈值不兼容
· 阅读需 3 分钟
在 RAG 知识库项目中调试混合检索评分问题,以下是完整排查过程。
TL;DR
Milvus 混合检索的加权融合分数 = 0.7 * dense_score + 0.3 * sparse_score,理论最大值约 0.7。如果用 min_similarity=0.7 过滤,结果几乎全被剔除。解决方案:将阈值降到 0.3,或根据融合策略动态调整。
在 RAG 知识库项目中调试混合检索评分问题,以下是完整排查过程。
Milvus 混合检索的加权融合分数 = 0.7 * dense_score + 0.3 * sparse_score,理论最大值约 0.7。如果用 min_similarity=0.7 过滤,结果几乎全被剔除。解决方案:将阈值降到 0.3,或根据融合策略动态调整。
在 RAG 知识库项目中调试查询结果返回格式问题,以下是完整排查过程。
RAG /query 接口返回的 sources 字段只包含 metadata,没有每条来源的 similarity 分数。解决方案:在组装响应时,将 metadatas 和 distances 合并,计算 similarity = 1 - distance。