当前位置: 首页 > article >正文

FastGPT 引申:混合检索完整实例

文章目录

    • FastGPT 引申:混合检索完整实例
      • 1. 各检索方式的初始结果
      • 2. RRF合并过程
      • 3. 合并后的结果
      • 4. Rerank重排序后
      • 5. 最终RRF合并
      • 6. 内容总结

FastGPT 引申:混合检索完整实例

下边通过一个简单的例子说明不同检索方式的分值变化过程,假设我们有一个查询:“如何使用Python进行数据分析”

1. 各检索方式的初始结果

向量检索结果 (相似度分数0-1):

1. {
   id: "doc1",
   q: "Python数据分析基础教程",
   score: 0.85,
   type: "embedding"
}
2. {
   id: "doc2",
   q: "数据分析工具pandas使用",
   score: 0.78,
   type: "embedding"
}

全文检索结果 (BM25分数):

1. {
   id: "doc2",
   q: "数据分析工具pandas使用",
   score: 8.5,
   type: "fullText"
}
2. {
   id: "doc3",
   q: "Python编程基础",
   score: 6.2,
   type: "fullText"
}

2. RRF合并过程

使用公式: score = 1/(k + rank),这里 k=60

向量检索RRF分数:

doc1: 1/(60 + 1) = 0.0164
doc2: 1/(60 + 2) = 0.0161

全文检索RRF分数:

doc2: 1/(60 + 1) = 0.0164
doc3: 1/(60 + 2) = 0.0161

3. 合并后的结果

1. {
   id: "doc2",  // 出现在两个结果中
   q: "数据分析工具pandas使用",
   score: [
     {type: "embedding", value: 0.78},
     {type: "fullText", value: 8.5},
     {type: "rrf", value: 0.0325}  // 0.0161 + 0.0164
   ]
}

2. {
   id: "doc1",
   q: "Python数据分析基础教程",
   score: [
     {type: "embedding", value: 0.85},
     {type: "rrf", value: 0.0164}
   ]
}

3. {
   id: "doc3",
   q: "Python编程基础",
   score: [
     {type: "fullText", value: 6.2},
     {type: "rrf", value: 0.0161}
   ]
}

4. Rerank重排序后

假设重排序模型对这些文档评分:

1. {
   id: "doc2",
   q: "数据分析工具pandas使用",
   score: [
     {type: "embedding", value: 0.78},
     {type: "fullText", value: 8.5},
     {type: "rrf", value: 0.0325},
     {type: "rerank", value: 0.92}
   ]
}

2. {
   id: "doc1",
   q: "Python数据分析基础教程",
   score: [
     {type: "embedding", value: 0.85},
     {type: "rrf", value: 0.0164},
     {type: "rerank", value: 0.88}
   ]
}

3. {
   id: "doc3",
   q: "Python编程基础",
   score: [
     {type: "fullText", value: 6.2},
     {type: "rrf", value: 0.0161},
     {type: "rerank", value: 0.75}
   ]
}

5. 最终RRF合并

将重排序结果作为第三个来源(k=58)进行最终 RRF 合并:

doc2: 0.0325 + 1/(58 + 1) = 0.0325 + 0.0169 = 0.0494
doc1: 0.0164 + 1/(58 + 2) = 0.0164 + 0.0167 = 0.0331
doc3: 0.0161 + 1/(58 + 3) = 0.0161 + 0.0164 = 0.0325

6. 内容总结

展示如下环节:

  1. 不同检索方式的分数范围不同
  2. RRF 如何将不同分数统一到相同尺度
  3. 多次出现的文档如何累加 RRF 分数
  4. 重排序如何提供额外的相关性评分

文档排序综合考虑:

  • 语义相似度(向量检索)
  • 关键词匹配(全文检索)
  • 语义理解(重排序)
  • 在不同搜索结果中的排名位置(RRF)

http://www.kler.cn/a/572303.html

相关文章:

  • 网络原理--HTTPS的加密过程简介
  • 57、深度学习-自学之路-自己搭建深度学习框架-18、RNN神经网络的简介
  • composer 错误汇总
  • 网络原理 初识[Java EE]
  • 20250301在chrome中安装CRX猫抓
  • HarmonyOS NEXT开发进阶(十一):应用层架构介绍
  • CES Asia 2025:聚焦前沿科技,探索未来无限可能
  • 运营商三要素API:构建安全信任的桥梁
  • 加油站小程序实战教程06地图多站点显示
  • 虚拟化园区网络部署指南
  • 算数操作符、赋值操作符、单目操作符、强制类型转换
  • 全球首创!微软发布医疗AI助手,终结手写病历时代
  • 清理pip和conda缓存
  • 华为OD最新机试真题-计算疫情扩散时间-C++-OD统一考试(E卷)
  • linux 如何查看gpu使用情况
  • 深度学习---卷积神经网络
  • 算法 并查集
  • 神经机器翻译:联合学习对齐和翻译
  • 【wsl/cline/mcp】在cline中初步使用mcp工具(以git为例)
  • 【STM32项目实战系列】基于STM32G474的FDCAN驱动配置