用途:诊断 Qdrant 搜索质量差的问题,适用于结果不相关、缺少预期匹配或召回下降等反馈。
主要能力与排查思路: 先建立基线。用 exact=true 绕过 HNSW 近似做精确 KNN 作为基准,与近似 HNSW 比较,生产目标为 recall@K 大于 95%。
若不确定原因:用 exact=true 测试搜索 API;精确搜索差说明是模型或搜索管线问题,精确好而近似差则调 HNSW。检查量化是否降低质量(对比启用与不启用),检查过滤器是否过严(可能需要 ACORN)。若分块文档产生重复结果,用 Grouping API 去重。注意 payload 过滤与稀疏向量搜索是两回事:元数据(日期、类别、标签)放 payload 用于过滤,文本内容放稀疏向量用于搜索。
近似差于精确时:查询时提高 hnsw_ef;提高 ef_construct(高质量可 200+);提高 m(默认 16,高召回可用 32);启用量化 oversampling 加 rescore;过滤查询用 ACORN(v1.16+)。二进制量化必须配 rescore,否则质量损失严重,并用 oversampling(二进制至少 3 至 5 倍)恢复召回。量化上线前必须测对自身数据的影响。
精确搜索也差时:可能是嵌入模型不对,可用 100 到 1000 条样本查询测试前 3 个 MTEB 模型并测 recall@10,领域专用模型常优于通用模型;也可能是搜索管线未优化,需按高级搜索策略优化。
不要做:未确认模型是否合适就调 Qdrant(多数质量问题源于模型);二进制量化不配 rescore;把 hnsw_ef 设得低于所需结果数;过滤字段未建 payload 索引却归咎质量;未建立基线召回等指标就部署;混淆 payload 过滤与稀疏向量搜索。