首页/AI/RAG 与向量库速查/Milvus 混合检索与重排器

Milvus 混合检索与重排器

Milvus 2.4 起支持多向量混合检索:对同一集合的多个向量字段发起多路 search,用 Ranker(如 RRFRanker、WeightedRanker)在服务端融合,减少应用层拼装。

RAG 与向量库速查AI更新于 2026-10-12

稠密 + 稀疏字段定义

稠密 + 稀疏字段定义
schema.add_field("dense", datatype="FLOAT_VECTOR", dim=1024)
schema.add_field("sparse", datatype="SPARSE_FLOAT_VECTOR")
# 分别建索引:dense 用 HNSW,sparse 用 SPARSE_INVERTED_INDEX

RRF 融合检索

RRF 融合检索
from pymilvus import AnnSearchRequest, RRFRanker

r1 = AnnSearchRequest(data=[dense_q], anns_field="dense", param={"ef": 64}, limit=20)
r2 = AnnSearchRequest(data=[sparse_q], anns_field="sparse", param={}, limit=20)
res = client.hybrid_search("kb", [r1, r2], RRFRanker(60), limit=10,
                           output_fields=["source"])
权重可调的 WeightedRanker 适合两路分数已归一化的场景;不确定时先用 RRFRanker。

易错点

  • 两路 anns_field 与查询向量类型不匹配,报错难以按字面理解
  • RRF 的 rank 参数语义与 Elasticsearch 的 rank_constant 相近但位置不同,迁移时容易传错

数据来源与参考

  • Milvus 官方文档(Multi-Vector Hybrid Search / Ranker)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌