高阶RAG-ReRank

1.背景-现RAG存在的问题

现在很明显,仅仅依靠向量检索技术不足以开发 RAG 应用程序,尤其是在生产环境中部署。

以下为案例:

  • 关键词搜索容易返回不回答问题的结果
  • 稠密检索容易返回不正确的结果

实际RAG检索中也有很多类型问题,关键词或者稠密检索知识基于向量相似度,完全没有考虑逻辑语义。导致检索失败,有时适得其反。

2.ReRank的原理

ReRank 在许多 QA 对上进行了训练

  • ReRank Model是通过监督学习训练好的预训练模型
  • 给定大量正确的查询-文件对(QA pairs),让模型学习给出高分数
  • 同时给定大量不正确的查询-文件对,让模型学习给出低分数
  • 通过最大化正确对的分数和最小化不正确对的分数来训练
  • 经过训练后,ReRank 就能区分查询和文件之间的关联性
  • 从而按照相关性对检索结果进行排序

直接看ReRank的原理图

  • ReRank 可以给查询和回答一个相关性分数,从而排序结果
  • ReRank 可以用来改进关键词检索和稠密检索,找到正确答案

rerank 模型通过根据候选文档与用户查询的语义一致性对候选文档进行重新排序来增强语义排序结果。 其核心原则包括计算用户问题与每个文档之间的相关性分数,然后返回按相关性排序的文档列表,从高到低。流行的rerank模型包括 Cohere rerank、bge-reranker 等。

通常,在rerank之前进行初步搜索,因为计算查询与数百万个文档之间的相关性分数效率非常低。因此,rerank通常位于搜索过程的末尾,使其成为合并和排序来自各种搜索系统的结果的理想选择。

然而,重新排名不仅限于组合来自不同搜索系统的结果。这在单一搜索模式下也很有用。引入重新排名步骤,例如语义重新排名后关键字搜索,可以显着提高文档召回率。

在实际应用中,除了规范化多个查询结果之外,传递给大型模型的文本段数量通常在提供它们之前受到限制(即 TopK,可在重新排名模型参数中调整)。此限制是由于大型模型的输入窗口大小,通常范围为 4K 到 128K token。因此,有必要选择与模型的输入窗口大小约束相一致的合适分割策略和 TopK 值。

重要的是,即使模型的上下文窗口足够大,过多的chunk片段也会带来不太相关的内容影响prompt结构内容,从而降低答案的质量。因此,重新排名中较大的 TopK 参数并不是越大越好。prompt中放入越多的无关知识,会干扰大模型的生成能力。

重新排序不应被视为搜索技术的替代品,而应被视为增强现有搜索系统的补充工具。它的主要优势在于提供了一种简单、低复杂性的方法来优化搜索结果,从而能够将语义相关性集成到当前的搜索系统中,而无需进行重大的基础设施修改。

3.基于LLM或者Agent的ReRank

以下过程展示了Embedding检索后,将检索结果返回给大模型去做一次评估。类似CRAG或者Self-RAG,本质上都是利用了大模型的推理能力加强检索的准确性。由之前的完全由 向量检索相似度 转化为逻辑推理相似度。但是这种方案会降低RAG的效率,提升了准确度。

4.其它ReRank方案 

4.1. 使用更精细的评分函数

RAG通常会在检索阶段根据输入问题或上下文生成一系列候选文档,然后利用这些文档的信息进行生成式回答。
reranking可以通过设计更精细的评分函数,对这些候选文档进行重新排序,优先选择与输入问题更相关、质量更高的文档作为生成回答的依据。
这可能涉及:
融合更多特征:除了原始的检索得分(如BM25分数),考虑加入其他特征,如文档长度、主题相关性、实体提及次数、段落位置等,以更全面地评估文档与问题的匹配程度。
引入深度学习模型:使用预训练的语言模型(如BERT、RoBERTa等)计算问题与文档的语义相似度,或者使用专门针对文档相关性设计的模型(如ANCE、DPR等)进行reranking。
考虑上下文敏感性:对于多轮对话或具有明确上下文的场景,评分函数应考虑上下文信息,确保所选文档不仅与当前问题相关,还与对话历史或上下文保持一致。

4.2. 集成外部知识

在reranking阶段,可以引入外部知识源(如百科、词典、专家规则等)来辅助判断文档的质量和相关性。例如:
利用领域专业知识:对于特定领域的应用,如医疗、法律、金融等,可以利用领域知识库或规则库来筛选出符合专业要求的文档。
利用常识知识:使用常识推理模型或知识图谱来判断文档内容是否符合常识,避免生成不符合事实的回答。

4.3. 采用多阶段reranking

将reranking过程分为多个阶段,逐步精细化文档排序:
粗排阶段:首先基于简单、高效的指标(如BM25得分)进行初步排序,筛选出一部分高潜力文档。
精排阶段:对粗排后的文档集使用更复杂的评分函数或模型进行二次排序,进一步提升相关文档的优先级。
微调阶段(可选):对于某些关键应用场景,可以加入人工规则或专家干预的微调阶段,确保最终选择的文档满足特定业务需求。
 

5.ReRank的意义

引入Rerank模型后的retrieval引擎能够去除上下文不相关的污染数据、提供更精准的上下文信息。重排后(Rerank)精准的上下文不仅可减少了token的使用量进而还可能提高LLM推理速度与准确率。

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

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

相关文章

python基础---匿名函数

匿名函数 使用def定义的函数是一个普通的函数, 适合用于功能完善的代码 匿名函数使用lambda 定义 lambda value1, value2 ... : 表达式lambda a, b : a b调用 这一个函数没有名字, 使用的时候一般使用一个变量指向这一个函数, 之后使用这一个变量进行调用 my_test_func …

「活动预告」PolarDB走进青岛,邀请您一起畅游琴岛山海春韵,共话数据生态创新

预告 由PolarDB开源社区、海信聚好看、PostgreSQL中文社区共同发起的《开源数据库沙龙》,将于青岛举办。 时间地点 时间:2024年5月17日 13:00 地点:青岛市市南区香港中路17号 市政府3期『城市会客厅』 活动亮点 本次嘉宾汇聚海信、阿里…

如何缩小图片大小kb?6个压缩图片大小的软件教你快速压缩

如何缩小图片大小kb?6个压缩图片大小的软件教你快速压缩 当需要缩小图片的大小(KB)时,可以利用一系列专门设计的工具和软件来帮助完成这一任务。这些工具可以有效地减小图片的文件大小,而又不会明显降低图片的质量。以…

SARscape操作:GF3 数据预处理

1、设置 Prefrences 参数 点击 SARscape->Preferences->Preferences specific,弹出如下图所示的对话框; 点击 Load Preferences,在弹出的菜单栏中选择适用于GF3影像处理的 MR(between 10m and 30m) 模式; 点击 General p…

java实现方法重复调用防抖

防抖含义:在指定延时时间内,不管调用了多少次方法,只会执行最后一次调用的动作去执行方法。 举例:设定延时为5秒,调用防抖方法后,5秒内没有重复调用则会执行动作,5秒内有重复调用则会继续再延时等待五秒&am…

CFETS系统介绍

CSTP服务是什么 CSTP(CFETS Straight Through Process)是交易中心为外汇市场提供的数据直通式处理接口服务。用户通过标准式接口将本方交易数据直接从交易中心的服务器接收下来,根据需要对数据进行处理并导入到中、后台系统。其基本功能包括…

双非二本找工作前的准备day23

学习目标: 每天复习代码随想录上的题目1-2道算法(时间充足可以继续) 今日碎碎念: 1)滴滴开了暑期实习。 2)今天开始是回溯篇,然后是贪心以及dp,保持打卡!加油啦&#…

解析直播美颜SDK:计算机视觉在实时视频中的应用

今天,小编将带大家深入探讨直播美颜SDK的原理、应用及其在实时视频中的重要性。 一、直播美颜SDK的原理 直播美颜SDK的核心原理是基于计算机视觉技术,通过识别人脸、肤色、眼睛、嘴巴等关键特征点,对视频图像进行实时处理。其主要包括以下几…

milvus2.4多向量搜索源码分析

milvus2.4多向量搜索源码分析 api入口 HybridSearch是多向量搜索的API。 func (node *Proxy) HybridSearch(ctx context.Context, request *milvuspb.HybridSearchRequest) (*milvuspb.SearchResults, error) {var err errorrsp : &milvuspb.SearchResults{Status: merr…

【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】

目录 前端文件操作与文件上传前端接受后端传输文件指南 前端文件操作与文件上传 一、前端文件上传有两种思路: 二进制blob传输:典型案例是formData传输,相当于用formData搭载二进制的blob传给后端base64传输:转为base64传输&…

基于StatefulSet控制器在Kubernetes上部署MySQL一主多从

一、前提--StatefuSet特性 1.1 有状态的节点控制器 -- StatefulSet 及其网络状态 容器的解决方案是针对无状态应用场景的最佳实践,但对于有状态应用来说,就并非如此了。Kubernetes 用 StatefulSet 解决了有状态应用编排的问题,本文我们就来…

短视频账号没流量怎么办?三个方法提高播放量!沈阳短视频剪辑线下培训

做短视频的最怕什么? 最怕没流量啊,一旦没有流量,就吸引不到粉丝,更别提变现了! 但是,不同的短视频账号遇到没流量的情况是不同的。有的是新账号,始终没有流量;而有的是做了很久的账…

旧衣回收小程序开发:线上回收模式成为行业发展趋势

当下人们生活水平在不断提高,对衣服的要求也在增加,更新速度越来越快,闲置下来的旧衣服也在增加,为了减少浪费,旧衣回收行业受到了大众的关注。旧衣回收对我国资源回收、环境保护具有非常大的意义。 在互联网时代下&a…

第9篇:创建Nios II工程之读取Switch的值<二>

Q:上一期我们完成了Quartus硬件工程部分,本期我们创建Nios II软件工程这部分。 A:创建完BSP和Nios II Application之后,在source文件main.c中添加代码:system.h头文件中新增了Switch PIO IP的硬件信息,包括…

Windows cmd bat之特殊符号及变量

cmd 常用变量 bat批处理常用命令 %1~%9表示拖入文件(%0以外的输入文件),%0表示批处理文件本身 %0~%1字母意思基本相同,不区分大小写 ::打印当前窗口地址 echo “%cd%” %0 获取当前文件路径 %~d0 …

最新AI实景自动无人直播软件:智能讲解、一键开播,享受24小时自动专业直播体验

在现今数字化时代(ai无人直播下载:hzzxar)直播行业越来越受到人们的关注和喜爱。随着人工智能的不断发展,AI实景自动无人直播软件应运而生,为商家提供了更便捷、高效的直播方式。本文将介绍如何利用这一创新技术&#…

融知财经:期货交易原理是怎样的?期货交易有哪些特征?

期货的原理是基于对某期货品种未来走势的判断而形成对其合约的买卖交易,因此期货可以解释为买涨或买跌。买涨,即看多交易,预期某期货品种未来价格上涨而进行的买入开仓交易;买跌,即看空交易,预期某期货品种…

简站WordPress主题

简站WordPress主题是一种专为建立网站而设计的WordPress模板,它旨在简化网站建设过程,使得用户能够更容易地创建和管理自己的网站。简站WordPress主题具有以下特点: 易用性:简站WordPress主题被设计为简单易用,适合各…

redisson 使用脚本实现将一个队列的元素弹出并推入另一个队列的原子操作

脚本逻辑: 从队列1弹出元素如果存在值则推入队列2否则返回null RScript script redissonClient.getScript(); final String scriptText """local value redis.call(lpop, KEYS[1]);if value thenredis.call(rpush, KEYS[2], value);return valu…

Android广播机制简介

文章目录 Android广播机制简介广播的基本概念广播的类型广播的使用场景Android广播的优缺点优点缺点 使用Android广播的一些最佳实践: Android广播机制简介 Android广播是一种轻量级的消息传递机制,用于应用程序之间或系统与应用程序之间进行通信。它类似于订阅-发…