Query2doc——Query改写

大模型LLM最近一年比较火,但是可能由于数据量较大,存在一些矛盾的数据或者质量差的数据,就会导致大模型存在幻视情况,即存在严重不符合事实的情况。随着之而来,RAG(Retrieval Augmented Generation),作为补充缓解LLM的幻视的情况。更加高效的检索尤为重要,Query2doc一种通过LLM改写Query,提高检索的能力。

论文:

Query2doc: Query Expansion with Large Language Models

概述:

本文介绍了一种简单但有效的查询扩展方法,称为 query2doc,旨在提升稀疏(如BM25)和密集检索(如E5,bge-m3等 )系统的性能。该方法首先通过少量样本提示大型语言模型(LLMs)生成伪文档,然后使用生成的伪文档来扩展查询。LLMs 是训练于网络规模的文本语料库,并擅长于知识记忆。来自 LLMs 的伪文档通常包含高度相关的信息,有助于查询消歧并引导检索器。实验结果表明,query2doc 在 MS MARCO 和 TREC DL 等信息检索 数据集上,将 BM25 的性能提升了 3% 至 15%,且无需对模型进行微调。此外,我们的方法无论是在领域内还是领域外的结果上,都对最先进的密集检索器有所裨益。

为什么需要改写或者需要query2doc?

搜索查询往往简短、模糊或缺乏必要的背景信息,LLMs 能够提供相关信息来引导检索系统,因为它们通过预训练在万亿量级的标记上,记住了大量的知识和语言模式。

方法:

简单理解,就是用LLM根绝Query,生成回答doc,然后利用Query融合doc进行检索。

如何生成答案?

在这里插入图片描述
Prompt为:Write a passage that answers the given query:
论文结合k=4个样例作为few-shot使LLM能够参考样例,生成我们需要的回答,其中样例源于训练集,进行随机采样获取。
生成的回答展示:
在这里插入图片描述

如何利用生成的结果doc?

稀疏检索:BM25

由于查询q通常比生成的文档(doc即伪文档)短得多,为了平衡查询和doc伪文档之间的相对权重,我们在与伪文档doc连接之前,将查询重复n次,以提高查询词的权重。
q u e r y = c o n c a t ( { q } × n + doc ) query=concat( \{q\} \times n + \text{doc}) query=concat({q}×n+doc)
其中n设置5效果比较好,并且不需要进行微调。

密集检索

对于密集检索,其结果仅仅需要通过[SEP]拼接,LLM生成的doc。我理解,模型应该需要重新进行训练。
q u e r y = c o n c a t ( q + [ S E P ] + doc ) query =concat( q+ [SEP]+\text{doc}) query=concat(q+[SEP]+doc)

实验结果

在这里插入图片描述

分析

模型规模的影响

在这里插入图片描述
随着从13亿参数的模型过渡到1750亿参数的模型,性能稳步提升。由较小的语言模型生成的文本往往更短,并且包含更多的事实性错误。此外,使用更好的训练数据和改进后的指令调优,“davinci-003”模型的表现超过了其早期版本“davinci-001”。最近发布的GPT-4(OpenAI,2023)取得了最佳结果。

怎么使用query 和生成的doc

二者一起使用效果更好,如下图所示:
在这里插入图片描述

局限性

一个明显的局限是检索的效率。我们的方法需要在大型语言模型(LLMs)上运行推理,但由于逐个符号的自回归解码,这可能会显著降低速度。此外,在使用query2doc时,随着扩展后查询术语数量的增加,搜索倒排索引的速度也会变慢。
在这里插入图片描述

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

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

相关文章

计算机组成原理(超详解!!) 第三节 运算器(浮点加减乘)

1.浮点加法、减法运算 操作过程 1.操作数检查 如果能够判断有一个操作数为0,则没必要再进行后续一系列操作,以节省运算时间。 2.完成浮点加减运算的操作 (1) 比较阶码大小并完成对阶 使二数阶码相同(即小数点位置对齐)…

windows@浏览器主页被篡改劫持@360篡改主页@广告和弹窗设置@极速版

文章目录 360篡改浏览器主页方法1锁定浏览器主页 方法2注册表修改 360广告和弹窗360极速版 小结 360篡改浏览器主页 如果您使用360,且不想卸载它,那么当你启动360后,它可能会篡改你的浏览器(比如edge)的主页start page为360早期可能是通过修改快捷方式的target等属性,但是现在…

《剑指 Offer》专项突破版 - 面试题 93 : 最长斐波那契数列(C++ 实现)

题目链接:最长斐波那契数列 题目: 输入一个没有重复数字的单调递增的数组,数组中至少有 3 个数字,请问数组中最长的斐波那契数列的长度是多少?例如,如果输入的数组是 [1, 2, 3, 4, 5, 6, 7, 8]&#xff0…

C++模版(基础)

目录 C泛型编程思想 C模版 模版介绍 模版使用 函数模版 函数模版基础语法 函数模版原理 函数模版实例化 模版参数匹配规则 类模版 类模版基础语法 C泛型编程思想 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。 模板是泛型编程…

【前端Vue】Vue3+Pinia小兔鲜电商项目第3篇:静态结构搭建和分类实现,1. 整体结构创建【附代码文档】

Vue3ElementPlusPinia开发小兔鲜电商项目完整教程(附代码资料)主要内容讲述:认识Vue3,使用create-vue搭建Vue3项目1. Vue3组合式API体验,2. Vue3更多的优势,1. 认识create-vue,2. 使用create-vue创建项目,1. setup选项的写法和执行…

【数据结构与算法】java有向带权图最短路径算法-Dijkstra算法(通俗易懂)

目录 一、什么是Dijkstra算法二、算法基本步骤三、java代码四、拓展(无向图的Dijkstra算法) 一、什么是Dijkstra算法 Dijkstra算法的核心思想是通过逐步逼近的方式,找出从起点到图中其他所有节点的最短路径。算法的基本步骤如下:…

应用层协议 - HTTP

文章目录 目录 文章目录 前言 1 . 应用层概要 2. WWW 2.1 互联网的蓬勃发展 2.2 WWW基本概念 2.3 URI 3 . HTTP 3.1 工作过程 3.2 HTTP协议格式 3.3 HTTP请求 3.3.1 URL基本格式 3.3.2 认识方法 get方法 post方法 其他方法 3.3.2 认识请求报头 3.3.3 认识请…

MyBatis是纸老虎吗?(七)

在上篇文章中,我们对照手动编写jdbc的开发流程,对MyBatis进行了梳理。通过这次梳理我们发现了一些之前文章中从未见过的新知识,譬如BoundSql等。本节我想继续MyBatis这个主题,并探索一下MyBatis中的缓存机制。在正式开始梳理前&am…

如何解决kafka rebalance导致的暂时性不能消费数据问题

文章目录 背景思考答案排它故障转移共享 背景 之前在review同组其它业务的时候,发现竟然把kafka去掉了,问了下原因,有一个单独的服务,我们可以把它称为agent,就是这个服务是动态扩缩容的,会采集一些指标&a…

使用C++实现一个简单的日志功能

日志对于一些大一些的项目来说,可以在项目运行出现问题时更好的帮助 项目的维护人员快速的定位到问题出现的地方并且知道出现问题的原因, 并且日志也可以帮助程序员很好的进行项目的Debug,那么今天我就来实 现一个C编写的一个简单的日志功能。…

深度学习中常用计算距离的几种算法对比与python实现

前言 距离度量在许多机器学习算法中扮演着至关重要的角色,无论是监督学习还是无监督学习。选择适当的距离度量可以显著影响模型的性能。 在高维数据集中,欧几里得距离可能会受到所谓的“维度诅咒”的影响,因为随着维度的增加,数…

海外媒体软文发稿:谷歌关键词优化细分人群成功案例,突破海外市场!

海外媒体软文发稿:谷歌关键词优化细分人群成功案例,突破海外市场! 引言 在全球化的时代,海外市场对于企业的发展至关重要。而在海外市场中,互联网媒体的作用不可忽视。本篇教程将介绍如何通过谷歌关键词优化细分人群…

Spring设计模式-实战篇之单例模式

实现案例,饿汉式 Double-Check机制 synchronized锁 /*** 以饿汉式为例* 使用Double-Check保证线程安全*/ public class Singleton {// 使用volatile保证多线程同一属性的可见性和指令重排序private static volatile Singleton instance;public static Singleton …

Learn OpenGL 30 SSAO

SSAO 我们已经在前面的基础教程中简单介绍到了这部分内容:环境光照(Ambient Lighting)。环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scattering)。在现实中,光线会以任意方向散射,它的强度是会一…

C++ STL - 优先级队列及其模拟实现

目录 0. 引言 1. priority_queue 介绍 1.1 构造函数 1.2 priority_queue 接口函数使用 1.3 仿函数 1.4 题目练习 2. priority_queue 模拟实现 2.1基本框架: 2.2 默认构造函数 2.3 基本函数 2.4 堆的向上以及向下调整 0. 引言 优先队列 (priority_queu…

【剑指offr--C/C++】JZ22 链表中倒数最后k个结点

一、题目 二、思路及代码 遍历链表并存入vector容器&#xff0c;通过下标取出对应位置元素或者返回空 /*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ #include <cstddef> #include <iterator> #…

【微服务】接口幂等性常用解决方案

一、前言 在微服务开发中&#xff0c;接口幂等性问题是一个常见却容易被忽视的问题&#xff0c;同时对于微服务架构设计来讲&#xff0c;好的幂等性设计方案可以让程序更好的应对一些高并发场景下的数据一致性问题。 二、幂等性介绍 2.1 什么是幂等性 通常我们说的幂等性&…

【Entity Framework】 EF三种开发模式

【Entity Framework】 EF三种开发模式 文章目录 【Entity Framework】 EF三种开发模式一、概述二、DataBase First2.1 DataBase First简介2.2 DataBase First应用步骤2.3 DataBase First总结 三、Model First3.1 Model First简介3.2 Model First实现步骤 四、Code First4.1 Cod…

全市场都忽视了!大摩:数据中心算力成本正在迅速下降

随着AI技术迈入普及与应用的新纪元&#xff0c;其算力需求蓬勃增长的同时&#xff0c;算力成本随技术进步呈现下降趋势。 摩根士丹利在3月24日的AI报告中指出&#xff0c;随着GPU技术的不断进步&#xff0c;例如英伟达从Hopper发展到Blackwell GPU架构&#xff0c;GAI的算力成…

ChatGPT 对 ELT的理解

本文主要内容来自 ChatGPT 4.0 到底什么是 ETL&#xff1f;在数据库内部&#xff0c;把数据从 ODS 层加工成 DWD&#xff0c;再加工成 DWS&#xff0c;这个过程和 ETL 的关系是什么&#xff1f;带着这些问题&#xff0c;我问了一下 ChatGPT&#xff0c;总结如下。 数据在两个数…