RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine)

https://blog.csdn.net/Xin_101/article/details/140230948

本文主要讲解混合搜索相关理论以及计算推导过程,
包括BM25、kNN以及ES中使用混合搜索分数计算过程。
详细讲解:
(1)ES中如何通过BM25计算关键词搜索分数;
(2)kNN如何通过consine计算语义/向量搜索最终分数,不是直接使用consine距离;
(3)混合搜索最终得分是如何计算的,如何进行归一化优化。

Note:提前声明
下面这张是使用ik分词器进行计算的,为了好截图,后文讲解则是使用默认分词器,
不影响过程分析。

在这里插入图片描述

4 理论

4.1 BM25

BM25(Best Matching 25)匹配算法用于文本检索,其中,25,查阅相关网络资源说是第25次迭代的算法,BM25基于TF-IDF,并进行了改进,引入了可调整参数k1和b。
k1:为饱和函数,防止某额词在文档中出现次数过多导致权重过大;
b:为文档长度因子,使文档长度堆权重的影响不是线性的,更好地适应不同长度的文档。
这也是BM25优点以及缺点的来源:

  • 优点
    (1)k1和b,考虑文档长度,可以有效避免文档长度带来的影响;
    (2)根据不同领域的数据,可以调整k1和b,获取更好的搜索效果,适应不同领域的数据。
  • 缺点
    (1)需要高质量的数据;
    (2)参数k1和b直接影响检索效果,需要不断优化调整,以适应具体的场景。

B M 25 ( Q , D ) = ∑ i = 1 n I D F ( q i ) ⋅ f ( q i , D ) ⋅ ( k 1 + 1 ) f ( q i , D ) ⋅ k 1 ⋅ ( 1 − b + b ⋅ ∣ D ∣ a v g d l ) BM25(Q, D)=\sum_{i=1}^{n}IDF(q_{i})·\frac{f(q_{i}, D)·(k_{1}+1)}{f(q_{i}, D)·k_{1}·(1-b+b·\frac{|D|}{avgdl})} BM25(Q,D)=i=1nIDF(qi)f(qi,D)k1(1b+bavgdlD)f(qi,D)(k1+1)
其中:
T F ( q i ) = f ( q i , D ) ⋅ ( k 1 + 1 ) f ( q i , D ) ⋅ k 1 ⋅ ( 1 − b + b ⋅ ∣ D ∣ a v g d l ) TF(q_{i})=\frac{f(q_{i}, D)·(k_{1}+1)}{f(q_{i}, D)·k_{1}·(1-b+b·\frac{|D|}{avgdl})} TF(qi)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统探索

本文不定时更新linux及类linux系统的有趣玩法和知识 一、有趣玩法 1. xshell连linux调试台时打印个性化信息 要在每次通过 xshell 连接到 Linux 调试台时打印个性化信息,可以通过修改 SSH 配置文件来实现。以下是具体步骤: 登录到 Linux 调试台&#…

SpringBoot注解--11--@JSONField @JsonProperty

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一个问题:后端实体类isXXX开头的属性,传到前端后自动去掉is解决方法: JsonProperty和JSONField1.简介2.注解的区别2.1 底层框架不…

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日,在2024世界人工智能大会上,容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上,容联云发布了容犀智能大模型应用升级,该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

【区分vue2和vue3下的element UI Collapse 折叠面板组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 中,我们通常使用 Element UI,而在 Vue 3 中,我们则使用 Element Plus 来获得类似的组件库功能。对于 Collapse 折叠面板组件,这两个库提供了相似的接口,但具体属性、事件和方法可能略有不同。以下将分别介绍 …

python库(12):Requests库实现HTTP请求

1 Requests库 Requests是一个极为流行的HTTP库,它允许你发送各种类型的HTTP请求。无论是GET、POST、PUT、DELETE还是其他类型的请求,Requests都能轻松搞定。 虽然还有其他HTTP库,但Requests库以其简洁的API和人性化的设计脱颖而出。它隐藏了…

Springboot 配置 log4j2 时的注意事项

感谢博主 https://www.cnblogs.com/fishlittle/p/17950944 依赖 SpringBoot 的 spring-boot-starter/ spring-boot-starter-web 自带的是 logback 日志,若要使用 log4j2 日志,需要引入对应依赖。logback 日志和 log4j2 日志都是对 slf4j 门面的实现&am…

寻找赛灵思IP核手册的办法

一、先google找到大家看的手册都是什么样的 二、在AMD技术手册网站搜索手册的名称 网址:AMD Technical Information Portal

数据湖仓一体(六)安装flink

上传安装包到/opt/software目录并解压 [bigdata@node106 software]$ tar -zxvf flink-1.17.2-bin-scala_2.12.tgz -C /opt/services/ 重命名文件 [bigdata@node106 services]$ mv flink-1.17.2-bin-scala_2.12 flink-1.17.2 配置环境变量 [bigdata@node106 ~]$ sudo vim /…

数据守卫者:sklearn中的异常点检测技术

数据守卫者:sklearn中的异常点检测技术 在数据分析和机器学习中,异常点(也称为离群点)是指那些不符合数据集其余部分的模式或行为的点。异常点检测是识别这些异常值的过程,它对于确保数据质量和提高模型性能至关重要。…

Docker 安装字体文件

由于 Docker 容器的隔离性,与宿主机是独立的运行环境,如果需要用到宿主机的字体文件就需要进行安装。 例如在导出 PDF 文件时,如果缺少字体文件,就会产生乱码(常表现为中文变成方框)。 Docker 字体文件的安…

国密证书(gmssl)在Kylin Server V10下安装

1.查看操作系统信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04:…

科普文:spring boot中常用的接口、工具栏、注解整理

1.springboot 常用接口 1.1 Aware接口 Spring IOC容器中 Bean是感知不到容器的存在,Aware(意识到的)接口就是帮助Bean感知到IOC容器的存在,即获取当前Bean对应的Spring的一些组件,如当前Bean对应的ApplicationContext等。 1.1.1 Applicati…

python如何进行pip换源

hello,大家好,我是一名测试开发工程师,至今已在自动化测试领域深耕9个年头,现已将本人实战多年的多终端自动化测试框架【wyTest】开源啦,请大家快来体验并关注我吧。 Python的包管理工具pip是开发者必备的利器之一。然…

企业公司网站建站自适应网站源码系统 前后端分离 带完整的源代码包以及搭建部署教程

系统概述 在数字化转型的浪潮中,企业网站已成为展示品牌形象、吸引潜在客户、促进业务交流的重要窗口。为了满足企业对于高效、灵活、易维护网站建设的迫切需求,小编给大家分享一款集先进技术与人性化设计于一体的“企业公司网站建站自适应网站源码系统…

Windows 如何安装和卸载 OneDrive?具体方法总结

卸载 OneDrive 有人想问 OneDrive 可以卸载吗?如果你不使用当然可以卸载,下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤: 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载,打开设置面板之后选择应用,然…

vue3+springboot+mybatis+mysql项目实践--简单登录注册功能实现

这里是一次对vue3springbootmybatismysql的项目实现,简单实现前后端分离的登录注册功能,主要工具:idea,navicat 目录 一、创建vue3项目并初始配置 创建vue3项目 2.修改项目结构 1)原始目录结构 2)修改后目录结构 …

【区块链 + 智慧政务】都江堰区块链公共服务应用平台 | FISCO BCOS应用案例

都江堰区块链公共服务应用平台是四川开源观科技有限公司运用 FISCO BCOS 区块链技术为都江堰市建设的市级 区块链节点平台,该平台上线运营一年以来已在政务服务、社区养老和慈善公益领域落地 3 个应用,上链数据超 过 30 万条。 区块链 政务服务应用&am…

RFID技术简介

1.RFID(无线射频设别技术)介绍 (1)RFID是一种通信技术,通过无线电讯号耦合识别特点目标并读写相关数据。 (2)类型 (3)应用 智慧仓库,AGV,ETC …

自动驾驶中,实现三维点旋转原理

文章目录 1. 三维点旋转的方案2. 使用复数表示二维点的旋转2.1. 复数的概念2.2. 复数的三种形式及相互转换2.3. 复数概念扩展:实数、虚数、复数 3. 四元数旋转三维点原理4. 使用四元数进行旋转的公式5. 旋转叠加6. 四元数转换为三维点7. 代码实现 1. 三维点旋转的方…

66、Flink 的 DataStream Connectors 支持的 Formats 详解

支持的 Formats 1.概述 Format 定义如何对 Record 进行编码以进行存储,目前支持以下格式: Avro Azure Table Hadoop Parquet Text files2.Avro format Flink 内置支持 Apache Avro 格式,Flink 的序列化框架可以处理基于 Avro schemas 生成…