一 混合检索(Hybrid Search)

为什么需要混合检索?

向量检索(Semantic Search):
✅ 理解语义:"采购" ≈ "购买"
❌ 对精确词不敏感:"PO-2024-001" 找不到

BM25 检索(Keyword Search):
✅ 精确匹配:"PO-2024-001" 完美匹配
❌ 不理解语义:"采购" ≠ "购买"

混合检索 = 两者结合:

# 查询:"查询库存组织ID的SQL"

# 向量检索返回:
[文档A: "库存管理系统设计", 
 文档B: "组织架构说明",
 文档C: "SQL查询示例"]

# BM25 检索返回:
[文档D: "🎈3.查询库存组织ID、业务实体ID、分类账名称",  # ✅ 正确!
 文档E: "库存组织ID字段说明",
 文档F: "SQL语法教程"]

# RRF 融合后:
[文档D,  # 两种检索都排名靠前
 文档C,
 文档E]

二 RRF 融合算法

RRF(Reciprocal Rank Fusion) 是一种无参数融合算法

📐 公式

RRF 分数 = Σ 1 / (k + rank_i)

🧮 计算示例

假设有 2 个检索结果:

向量检索:[文档A(1), 文档B(2), 文档C(3)]
BM25 检索:[文档B(1), 文档D(2), 文档A(3)]

文档A 的 RRF 分数:
= 1/(60+1) + 1/(60+3)
= 0.0164 + 0.0159
= 0.0323

文档B 的 RRF 分数:
= 1/(60+2) + 1/(60+1)
= 0.0161 + 0.0164
= 0.0325  # 最高!

最终排序:[文档B, 文档A, 文档C, 文档D]
✅ RRF 的优点
  • 无需调参(不需要设置权重)
  • 鲁棒性强(对不同数据集都有效)
  • 简单高效(计算量小)
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐