Query Rewrite —— 基于大模型的query扩展改写,PRF+ GRF协同发力减少LLM的幻觉问题(论文)

通过GRF和PRF,可以有效提升召回率,和top的数据质量。两者可以相互互补,发挥更好的作用。

论文:Generative and Pseudo-Relevant Feedback for Sparse, Dense and Learned Sparse Retrieval

什么是PRF ?

Pseudo-relevance feedback (伪相关反馈)
为了解决模型的幻觉问题,在改写前,先拿原始query去进行一次query,然后将召回的数据作为参考内容,送给模型,根据这些内容重新生成query。
优势:可以一定程度上解决模型幻觉问题,有效解决解决词汇表不匹配问题。毕竟是根据query召回的内容去生成query的。
劣势:这将会很依赖首次的检索,如果召回的数据质量很差,就GG了。

什么是GRF

generative-relevance feedback (生成相关反馈)
最近关于生成相关性反馈(GRF)的研究表明,使用从大型语言模型生成的文本的查询扩展模型可以改进稀疏检索,而不依赖于第一次检索的有效性。这项工作将GRF扩展到密集和学习的稀疏检索范式。GRF是在检索前, 靠模型,依赖模型的知识能力去扩展query
优势:不依赖首次检索。GRF相比较PRF,会有10%的提升。
劣势:靠模型根据query生成,会存在幻觉问题。
如何用好GRF,才能减少幻觉问题?

更好的解决在改写过程中模型的幻觉问题

GRF和PRF具有不同的好处,GRF提供的外部上下文在首次检索中不存在上下文,而PRF将查询基于目标语料库中包含的信息。因此, GRF + PRF 是一个更好的工作方式。令GRF和PRF占不同的权重,是融合的方法。

论文中的核心思想

  论文:Generative and Pseudo-Relevant Feedback for Sparse, Dense and Learned Sparse Retrieval

论文中阐述了PRF和GRF的不同。用实验数据证明了GRF在召回率提升方面,比PRF好10%左右。 但是PRF + GRF 能带来1+1 大于2的效果。

论文中阐述了GRF的实现细节

GRF如何使用

先用LLM针对query生成K条数据,注意是不同主题方向的数据,从而避免同质化的问题。对于向量检索。论文中给出的query和K条数据的融合方式是,先算K条数据向量的平均值。然后query的向量占一定比例。再和k条数据的平均值向量融合,各自占不同的比例。

对密集的GRF采用Rocchio PRF方法[19],以允许查询向量和反馈向量的不同权重。这允许嵌入llm生成的文本,以一种可控的方式上下文化查询向量。具体来说,公式1表明,新的向量,®𝐺𝑅𝐹,是原始查询向量,®𝑄,和生成的文档向量,®𝐷𝐿𝐿𝑀=1/𝑘×(®𝐷𝐿𝐿𝑀1+®𝐷𝐿𝐿𝑀2+...+®𝐷𝐿𝐿𝑀𝑘).的均值的组合我们包括𝛼和𝛽来衡量查询和GRF向量的相对重要性。

但是我觉得这篇论文,对GRF的阐述不够清晰。请看这篇文章,会有更清晰的理解。Query Rewrite —— 基于大模型的query扩展改写,通过GRM减少LLM的幻觉问题(论文)-CSDN博客

GRF 如何和 PRF融合

 论文提出了加权倒易秩融合方法(WRRF),该方法结合了GRF和PRF(PRF+GRF)。公式如下:

WRRF使用一个评分公式𝑟(𝑑),基于文档在特定运行中的排名。有一组要排序的文档𝐷,一组排名𝑅,以及𝑘参数,这样低排名的文档信号就不会消失(默认值通常是60,这里就是召回多少条数据)。我们添加了一个超参数𝜆,它加权了伪相关文档排名的相对重要性,𝑟∈𝑅𝑃𝑅𝐹,和(1−𝜆)的生成文档排名,𝑟∈𝑅𝑃𝑅𝐹。

超参数𝜆是决定PRF和GRF权重占比的参数。论文中给到的𝜆取值范围是[0.2,0.5],具体可以再调试,会有不同的效果。𝜆不同取值的召回率对比如下图。

GRF效果如何?

 从论文中,可以看到GRF整提效果都要好于PRF,不挂失在向量检索下还是在BM25检索场景下。

测试项说明 

BM25 [ 41 ]: Sparse retrieval method where 𝑘 1 parameter was tuned
between 0.1 and 5.0 using a step size of 0.2, while 𝑏 was tuned
between 0.1 and 1.0 with a step size of 0.1, as described earlier.
BM25+Relevance Model (RM3) [ 1 ]: We tune 𝑓 𝑏 _ 𝑡𝑒𝑟𝑚𝑠 (between
10 and 100 with a step of 10), 𝑓 𝑏 _ 𝑑𝑜𝑐𝑠 (between 10 and 100 with a
step of 10), and 𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙 _ 𝑞𝑢𝑒𝑟𝑦 _ 𝑤𝑒𝑖𝑔ℎ𝑡 (between 0.1 and 0.9 with
a step of 0.1).
ColBERT-TCT (TCT) [ 22 ]: is a dense retrieval model incorporat
ing knowledge distillation over ColBERT [ 16 ]. We employ TCT
ColBERT-v2-HNP’s MS MARCO [ 36 ] model and use a max-passage
approach to convert our passage runs into document runs. For
ColBERT-TCT+PRF (TCT+PRF) [ 18 ], we tune Rocchio PRF pa
rameters: 𝑑𝑒𝑝𝑡ℎ (2,3,5,7,10,17), 𝛼 (between 0.1 and 0.9 with a step
of 0.1, and 𝛽 (between 0.1 and 0.9 with a step of 0.1).
SPLADE [ 12 ]: is a neural retrieval model which learns sparse
query and document weightings via the BERT MLM head and
sparse regularization. We index the term vectors using Pyserini
[20] and use their “impact” searcher for max-passage aggregation.
For SPLADE+RM3 , we tune 𝑓 𝑏 _ 𝑑𝑜𝑐𝑠 (5,10,15,20,25,30) 𝑓 𝑏 _ 𝑡𝑒𝑟𝑚𝑠
(20,40,60,80,100), and 𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙 _ 𝑞𝑢𝑒𝑟𝑦 _ 𝑤𝑒𝑖𝑔ℎ𝑡 (between 0.1 and 0.9
with a step of 0.1).
ColBERT [16] & ColBERT+PRF [ 46 ]: We use the runs provided
by Wang et al. [47], which use pyterrier framework [26].

 

GRF + PRF 效果如何?

从下图我们可以看到,GRF + PRF同时使用,几乎总能带来正面的召回率提升效果。

 

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

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

相关文章

python在flask中的请求数据“无限流”

文章目录 一、问题描述二、解决方案 一、问题描述 在flask请求中,有个需求是让调用方一直调接口,并立马返回,而接口方缓存请求,依次执行。 二、解决方案 from flask import Flask, request, jsonify from queue import Queue i…

新年伊始,VR全景释放“强信号”,可以结合哪些行业?

一年之计在于春,各行各业都想抢占在经济的第一线,那么如何抓住新一轮科技革命和产业变革新机遇呢?VR全景释放了“强信号”。对于大部分实体行业来说,都会有VR全景的制作需求,租房买房的,可能都见识过线上VR…

【JGit】分支管理实践

本文紧接【JGit】简述及学习资料整理。 以下梳理了使用 JGit 进行 Git 操作的实践 JGit实践 主函数 public static void main(String[] args) throws Exception {String localDir "D:\\tmp\\git-test\\";String gitUrl "http://192.168.181.1:3000/root/g…

如何邀请媒体参加活动报道?媒体邀约的几大步骤?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 邀请媒体参加活动报道通常需要发送邀请函、提供详细活动信息,并通过电话或邮件进行跟进确认。 在邀请媒体之前,应该制定一个详细的媒体规划表,包括拟…

高级统计方法 第2次作业

概念 1. (a) 光滑度高的好,样本足够多光滑度越高就越能表征真实情况,也能对预测变量更好的预测。 (b) 光滑度低的好,因为可能“过拟合”,一些误差大的数可能会较大的影响到预测…

Code-Audit(代码审计)习题记录

介绍: 自己懒得搭建靶场了,靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习,可以随地访问,本文所有的题目均来源于网站HSCSEC-Code Audit 1、习题一 题目内容如下: 1…

FX110网:easyMarkets易信被评为2023最佳外汇经纪商

easyMarkets 易信目前正在庆祝其进入行业第 23 周年,很高兴地宣布其在 2023 年 TradingView 经纪商奖中被授予“最佳外汇经纪商”称号,这是其第 51 次荣获殊荣奖项。 “我们的共同使命是为交易者提供最好的交易环境和交易工具。 得益于我们全球社区的广泛…

手把手将 VSCode 快捷键修改为 Eclipse 的快捷键

1.在 vscode 上方搜索栏输入 >keyboard 2. 选择图中红框的内容 3.将Eclipse的常用快捷键复制进去 { "key": "ctrld", "command": "-editor.action.addSelectionToNextFindMatch", "when": "editorFocus" }, {…

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…

说一下 JVM 运行时数据区 ?

目录 一、程序计数器&#xff08;Program Counter Register&#xff09; 二、Java 虚拟机栈&#xff08;Java Virtual Machine Stacks&#xff09; 三、本地方法栈&#xff08;Native Method Stack&#xff09; 四、Java 堆&#xff08;Java Heap&#xff09; 五、方法区&…

我是怎么用静态IP代理为Google账号保驾护航的

我为何要使用到静态IP代理服务 我是一名IT从业者&#xff0c;在很多年前就加入了一家跨国软件公司&#xff0c;日常需要在全世界各地跟甲方沟通&#xff0c;负责的工作中重要的一块就是Google广告&#xff0c;为此公司还特意给配置了一台笔记本电脑。 目录 我为何要使用到静态…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(9)模型优化

模型训练后&#xff0c;就要进行模型优化了。 一般来讲&#xff0c;很简单&#xff0c;优化就是不换模型换参数&#xff0c;或者直接换模型。 换了之后来对比&#xff0c;最后选个最好的。 比如在本案例中&#xff0c;选择LinearRegression后&#xff0c;MSE从22下降到12&am…

ubuntu分辨率更改、开机被重置、ubuntu屏幕小

ubuntu分辨率更改 分辨率改成&#xff1a;1920x1200 xrandr --size 1920x1200 在此之前可以先输入 xrandr 看支持哪些分辨率 开机被重置 我已经设置成这样了&#xff0c; 一开机变回这个 ubuntu屏幕小 输入命令行 xrandr --size 1920x1200 这个下次重启ubuntu又会重置…

防御保护第五次作业

​​​​​​​ 1,FW1和FW3组成主备模式的双机热备 2,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 3,分公司设备可以通过总公司的移动链路和电信链路访问到DMz区的http服务器 4,分公司内部的客户端可以通过公网地址访问到内部的…

【笔记】【算法设计与分析 - 北航童咏昕教授】绪论

算法设计与分析 - 北航童咏昕教授 文章目录 算法的定义定义性质 算法的表示自然语言编程语言伪代码 算法的分析算法分析的原则渐近分析 算法的定义 定义 给定计算问题&#xff0c;算法是一系列良定义的计算步骤&#xff0c;逐一执行计算步骤即可得预期的输出。 性质 有穷性确…

使用RK3588开发板使用scp指令互传-windows与开发板互传

MobaXterm 软件网盘下载路径&#xff1a;“iTOP-3588 开发板\02_【iTOP-RK3588 开发板】开发资 料\04_iTOP-3588 开发板所需 PC 软件&#xff08;工具&#xff09;\02-MobaXterm”。 打开 MobaXterm 创建一个 Shell 会话&#xff0c;如下图所示&#xff1a; 设置完成进入终端…

5G——物理层仿真

1.前置条件 2.仿真流程 1.填写搜索过程 解&#xff1a; 2.填写每一步细节 2.2.1 准备 解&#xff1a; &#xff08;1&#xff09;BCH &#xff08;2&#xff09;BCCH 解析&#xff1a;因为PBCH是物理广播信道&#xff0c;BCCH是用于广播系统控制信息的下行信道&#…

Facebook元宇宙探索:虚拟社交的新时代

在数字化时代的浪潮中&#xff0c;人类社交的模式和形式正在经历着翻天覆地的变化。而当下&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;正积极探索着元宇宙的未来。元宇宙被认为是虚拟世界的下一步进化&#xff0c;它将重新定义人们的社交方式、娱乐体验以…

【Python】OpenCV-图片添加水印处理

图片添加水印处理 1. 引言 图像处理中的水印添加是一种常见的操作&#xff0c;用于在图片上叠加一些信息或标识。本文将介绍如何使用OpenCV库在图片上添加水印&#xff0c;并通过详细的代码注释来解释每一步的操作。 2. 代码示例 以下是一个使用OpenCV库的简单代码示例&…

Spring6学习技术|IoC+基于xml管理bean

学习材料 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09; IoC 控制反转。是一种设计思想。 1.获取bean对象的方法 通过id&#xff0c;通过class&#xff0c;和双重方式。 ApplicationContext context new Cla…