【IR 论文】Google 对通过 prompt LLM 做 Query Expansion 的工作

devtools/2024/11/17 0:23:17/

论文:Query Expansion by Prompting Large Language Models
⭐⭐⭐
Google Research, arxiv:2305.03653

论文速读

之前我在论文笔记 Query2doc 中介绍了信息检索(IR)以及 Query Expansion 的相关背景知识。

本篇文章是 Google 发表的关于对 LLM 进行 prompt 来做 Query Expansion 的论文,所采取的思路与 Query2doc 相似,但侧重点不同。

论文的思路如下:

整体思路

可以看到,也是把 user query 带上 prompt 输入给 LLM,然后拼接 user query 和 LLM 响应得到 Query Expansion 的结果,将其输入给 Retrieval System 来完成检索。

其中“concat”这个拼接过程,也是为了提高 user query 的权重,把 user query 重复了 5 遍再与 LLM response 拼接,做法与 Query2doc 十分相似:

concat 公式

本文工作主要研究 sparse retrieval 的场景,与之前 Query2doc 的工作的区别主要如下:

  • 不同 prompt 的研究:这篇文章研究了多种不同的 prompt 方式,包括 Q2D、Q2D/ZS、Q2D/PRF、Q2E、Q2E/ZS、Q2E/PRF、CoT 和CoT/PRF,而 Query2Doc 论文主要关注单一的少样本提示。(这几种 prompt 方法的具体含义可以参考原论文)
  • 生成查询扩展术语:这篇文章的工作重点是生成 query expansion terms,而不是像 Query2doc 论文那样生成整个 pseudo-document 作为 expansion。
  • 模型大小的多样性:这篇文章在多种不同大小的模型上测试了提示的性能,以更好地理解LLM方法在查询扩展上的实用能力和局限性。而Query2Doc论文使用的是一个更大的模型,且没有详细比较不同模型大小的性能。
  • 开源模型的使用:这篇文章完全使用开源模型进行实验,以促进研究的可复制性和开放性。相比之下,Query2Doc 论文使用的是一种只能通过第三方 API 访问的特定类型的模型。
  • 实验数据集:这篇文章在 MS-MARCO 和 BEIR 数据集上进行了实验,以验证 LLMs 在查询扩展中的有效性,而 Query2Doc 论文可能使用了不同的数据集或实验设置。
  • 性能提升:文章中提到,通过使用CoT提示,尤其是结合PRF文档的CoT/PRF提示,可以在保持召回率的同时,提高排名指标,如MRR@10和NDCG@10,而传统的查询扩展方法可能会牺牲这些排名指标来提高召回率。
  • 模型大小对性能的影响:文章还探讨了不同模型大小对查询扩展性能的影响,并发现CoT方法只需要3B参数的模型就能达到与BM25+Bo1基线相当的效果,而Q2D方法则至少需要11B参数的模型。

实验结果

本论文做了大量的实验,文中展示的实验数据对比值得一看:

实验结果
每个指标的最好结果已经用黑体进行了标注,可以看到,CoT 的 prompt 下可以让 LLM 生成的 expansion 表现更好。原文作者认为,CoT 这种特殊的 prompt 指示模型通过将其答案分解为多个步骤来生成详细的解释,这种详细性的解释可能会导致生成许多潜在的有效关键字,并对查询扩展有用。

总结

文章提出了一种新的查询扩展方法,该方法利用大型语言模型(LLMs)的生成能力。通过不同的提示方式(zero-shot, few-shot, Chain-of-Thought, CoT)来指导 LLM 生成与原始查询相关的新术语,并将其对 query 进行 expansion 从而提高检索的效果。文章做了较多实验,其实验结果值得我们一看,从而让我们对 LLM 生成 Query Expansion 的不同 prompt 有了一个不同表现的认识。

但是文章也指出了该工作的一些局限性,如只研究了稀疏检索系统,未考虑密集检索系统;仅使用了 Flan 系列的LLMs,未来可以扩展到其他模型;提示模板可能还有改进空间;LLMs 的计算成本可能限制了其在实际应用中的部署。


http://www.ppmy.cn/devtools/18523.html

相关文章

人脸识别开发项目汇总

1.基于FaceX-Zoo实现的人脸识别系统-CSDN博客 2.人脸识别:京东开源FaceX-Zoo:PyTorch工具箱 - 知乎 (zhihu.com) 3.人头识别-人群中准确快速的检测头部算法_在输入图像中检测人像头部的方法-CSDN博客 4.Github开源人脸识别项目face_recognition - 知乎…

金融案例:统一查询方案助力数据治理与分析应用更高效、更安全

随着企业数据规模的增长和业务多元化发展,海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态,这既带来了数据管理的复杂性,又加大了数据使用的难度,面对日益复杂的数据环境和严格的数据安全要求&#xf…

python基础之元组、集合和函数的定义与返回值

1.元祖 1.元祖的定义 元组的数据结构跟列表相似 特征:有序、 有序:有(索引/下标/index) 正序、反序标识符: ( ) 里面的元素是用英文格式的逗号分割开来关键字:tuple 列表和元组有什么区别? 元组…

Linux重启防火墙后容器网络无法被访问的解决办法

背景 在系统运行的时候,可能会操作防火墙的配置,可能重启防火墙。不料,重启防火墙之后,却导致运行在上面的容器无法被访问了。只能重启docker服务后才正常。 分析 docker实现容器的服务能被外部访问,借助的是iptable…

文字PDF转图片PDF,适合pdf防复制

完整代码已传至github平台: https://github.com/yaunsine/text_pdf_to_image_pdf 分成两步操作: 1、将文字pdf输出成图片 2、将所有图片合成为pdf 将PDF文件输出为图片的形式 """pdf转图片 """ def pyMuPDF_fitz(pdfPa…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中,数组是一种基本的数据结构,用于存储一系列相同类型的数据。数组可以是多维的,最…

探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮 ✨欢迎…

proteus+stm32+CubeMX+dht11+lcd1602

浅浅记录下过程遇到的问题🤡🤡🤡 1 供电网配置错误(加上就好了 新起个名也会出这个 / 电源不起名 不创建估计项目也会)没zet6的 proteus 里 固件库 账号注册半天没成 就用的stm32F103R6的然后发现单片机不输出高低电平…