混合搜索:向量搜索与BM25的协同

TL;DR · AI 摘要
混合搜索结合向量搜索与BM25技术,能同时处理语义匹配和精确术语查询,提升检索准确性;Milvus支持通过三步配置实现混合搜索,避免手动插入稀疏向量。
核心要点
- 向量搜索擅长语义匹配,但对精确术语如产品型号“XR-2048”召回不准。
- BM25更适合精确关键词匹配,例如“refund policy”可能无法匹配“return process”。
- Milvus通过添加稠密/稀疏字段、启用内置BM25函数、使用RRFRanker融合结果,实现混合搜索。
结构提纲
按章节快速跳转。
向量搜索在语义匹配中表现良好,但在处理精确术语时不可靠。
搜索“XR-2048”时,向量搜索可能返回相似产品而非目标型号。
BM25擅长精确词匹配,但可能遗漏语义相近的表达如“return process”。
混合搜索结合向量与BM25,弥补各自短板,提升整体检索质量。
RRF(Reciprocal Rank Fusion)将向量和BM25结果合并为统一排序列表。
Milvus支持三步配置:添加稠密/稀疏字段、启用BM25函数、使用RRFRanker融合。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 混合搜索技术
- 向量搜索
- 优势:语义匹配
- 劣势:精确术语召回差
- BM25
- 优势:精确词匹配
- 劣势:忽略语义变体
- 混合搜索
- 融合机制:RRF
- 应用场景:产品名、错误码等
- Milvus实现
- 步骤1:添加稠密/稀疏字段
- 步骤2:启用BM25函数
- 步骤3:使用RRFRanker
金句 / Highlights
值得收藏与分享的关键句。
向量搜索在语义匹配中表现良好,但在处理精确术语时不可靠。
BM25更适合精确关键词匹配,例如“refund policy”可能无法匹配“return process”。
混合搜索结合向量与BM25,弥补各自短板,提升整体检索质量。
RRF(Reciprocal Rank Fusion)将向量和BM25结果合并为统一排序列表。
Milvus支持三步配置:添加稠密/稀疏字段、启用BM25函数、使用RRFRanker融合。
标题:Milvus on X: "当语义意义重要时,向量搜索效果很好,但使用精确术语时可能不可靠。仅使用向量搜索查询“XR-2048”,你可能会得到类似产品的规格,但不会得到你所要求的确切型号。
BM25 在向量搜索经常遗漏的事情上表现更好:精确术语。当文档中提到“退货流程”时,搜索“退款政策”,BM25 可能会漏掉它。这就是混合搜索存在的原因。向量搜索覆盖语义匹配,BM25 捕获精确术语,而 RRF(互惠排名融合)将两者合并为一个排序列表。在 Milvus 中,你可以通过三个步骤设置: 将密集和稀疏向量字段添加到同一集合中
启用内置的 BM25 函数,以便 Milvus 可以从原始文本生成稀疏向量
使用 RRFRanker 融合向量和 BM25 结果
一个重要提示:如果你使用内置的 BM25 函数,请不要手动插入稀疏向量。Milvus 会为你生成它们。只有在使用外部稀疏嵌入模型(如 BGE-M3)时,才需要提供自己的稀疏向量。如果你的查询包含产品名称、错误代码、API 端点或其他精确标识符,仅使用向量搜索可能不够。尝试混合搜索。