RankVicuna,开源LLM Reranking的一大步丨论文解读

零、前言

📕欢迎访问

个人主页:conqueror712.github.io/

Github主页:github.com/Conqueror71...

注意,本文不涉及太多复杂的公式与数学推导,初学者或者像笔者一样数学不好的读者可以放心阅读!

论文链接:arxiv.org/abs/2309.15...

Github链接:github.com/castorini/r...

一、摘要

将LLM应用于信息检索 环境中的Reranking(我们会在下面给出介绍)已经不是什么秘密了,但迄今为止,这类工作大多建立在不透明API端点后面的闭源模型上,这导致了由这种方法产生的实验结果不可复制非确定性,影响到了真实性。

本文为了解决这一重大缺点,提出了RankVicuna,能够在zero-shot情况下执行高质量的列表Reranking。就结果而言,RankVicuna可以通过使用更小的7B参数模型实现与GPT3.5的zero-shot进行Reranking相当的效果,尽管RankVIcuna的效果仍略逊于GPT4,但是作者希望其工作为将来关于使用现代LLM进行Reranking的研究提供基础。

二、什么是Reranking

Reranking是指在信息检索过程中对搜索结果进行再次排序的过程。通常情况下,搜索引擎会根据某种算法对相关性进行评估,然后将搜索结果按照相关性排序并呈现给用户。然而,这种排序可能并不总能准确地满足用户的需求,好在我们已经有了神奇的LLM。通过使用LLM进行Reranking,可以利用其强大的语言理解和生成能力,对搜索结果进行更准确和个性化的排序。LLM可以通过对查询和搜索结果进行建模,生成相关性得分,然后将结果重新排序以提供更好的搜索体验。

LLM还可以用于zero-shot Reranking,这意味着模型在没有针对具体任务进行训练的情况下也可以进行Reranking。这种能力使得LLM在各种领域和任务中都可以应用,而无需进行昂贵的任务特定的训练。

三、介绍

依赖于闭源模型的LLM Reranking虽然在作为API时支持快速原型开发,但基于它们的实验结果的可重复性是存疑的。大家希望能够获得完全开源的LLM和相关的代码基础设施,来执行高质量的重新排序。

RankVicuna正是提供了这一需求,在构建RankVicuna过程中有一些见解:

  • 闭源LLM确实在zero-shot方式下进行Reranking时是有效的,但除了不可复制性的明显问题外,这些模型的结果也是非确定性的,这使得它们在严格的科学研究中不可靠
  • 通过研究第一阶段检索方法对下游Reranking效果的影响,发现RankVicuna改善了基线检索结果。特别是使用有效的第一阶段检索器,即使只对前20个候选项进行Reranking(即Top20),也能带来类似于对前100个候选项进行Reranking的改进。
  • 通过实验,揭示了数据增强对系统鲁棒性的重要性,这在面对文档清洗和初始检索质量变化时起着至关重要的作用。

五、方法

5.1 Prompt Design

最近的研究表明,基于zero-shot列表级别的LLM的Reranking优于点对点方法,因为前者可以同时关注多个文档,确定它们在相关性排序中的相对位置。本文作者在这一发现的基础上进行了进一步研究,并将排序问题定义如下:

给定用户查询 <math xmlns="http://www.w3.org/1998/Math/MathML"> q q </math>q和来自前一阶段的候选文档 <math xmlns="http://www.w3.org/1998/Math/MathML"> { D 1 , . . . , D n } \{D1,...,Dn\} </math>{D1,...,Dn},任务是返回一个重新排序的输入文档标识符列表,以改进检索度量,如 <math xmlns="http://www.w3.org/1998/Math/MathML"> n D C G nDCG </math>nDCG。

本文的zero-shot列表级别Reranking的Prompt模板类似于RankGPT Prompt,但考虑到Vicuna和GPT之间的差异,作者使用了Vicuna的默认系统描述。对于Vicuna而言,系统描述是一个好奇的用户和人工智能助手之间的聊天,助手对用户的问题给出有帮助、详细和礼貌的回答。

5.2 RankVicuna

作者将RankGPT3.5作为Vicuna的teacher model(解释如下),用于Prompt Decode生成高质量的排序列表。

Teacher model是在机器学习中用于指导 和训练其他模型的模型,它通常是一个在大规模数据集上进行了预训练的模型,具有较高的性能和知识,其的任务是生成高质量的输出,可以用作参考或目标,以帮助训练其他模型。本文使用了RankGPT3.5提供的10万个训练集查询生成的排序列表来训练RankVicuna。

为了生成这个数据集,作者从MS MARCO v1段落排名训练集中随机抽取了10万个查询,并使用Pyserini的BM25对每个查询检索了20个候选文档。然后,将这些候选文档传入RankGPT3.5以生成参考排序,然后将其精炼为student model RankVicuna。由于RankGPT3.5和RankVicuna都没有直接接触过人工标记的相关查询-段落对,所以RankVicuna可以被认为是zero-shot。

为了确保训练出更高质量和更稳健的模型,作者采取了以下额外的步骤:

  • 作者从训练集中排除了具有错误列表格式、缺少文档标识符或重复的示例。这一点很重要,因为作者发现大约12%的输出结果存在格式错误,而模型能够一致地生成格式正确的排序显然是我们所希望的。
  • 除了包含teacher model提供的原始生成结果之外,RankVicuna还包括了输入顺序被重排的情况。作者希望这样可以使模型接触到更复杂的Reranking任务,同时不增加额外的数据生成成本。不过,作者仍保留原始的BM25输入顺序,因为他认为模拟成功对于模型在推理过程中的输入最接近是很重要的。除非另有说明,本文中的所有RankVicuna设置都涉及此数据增强过程。

这神奇的RankVicuna的训练情况如何呢?

  • 7B参数的RankVicuna模型进行了两个阶段的训练,有效batch大小为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 128 128 </math>128,学习率为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 2 × 1 0 − 5 2 × 10^{−5} </math>2×10−5。
  • 训练过程大约花费了80小时。在四个NVIDIA RTX A6000 GPU上进行。

六、结论与尾声

在信息检索中,Retrieval和Reranking共同构成了多阶段的文本排序流程。过去的研究主要使用点对点 的方法进行Reranking,而最近的研究开始采用成对和列表级别的方法来提高Reranking的效果。一些商业API端点的出现也表明Reranking模型已经在实际应用中得到广泛使用。

在LLM的检索增强时代,准确可靠的信息检索系统的需求不断增长,RankVicuna的开源模型和代码基础设施为未来的研究奠定了坚实的基础,并促进了重新排序领域的进一步探索和创新。


FIN

相关推荐
肥猪猪爸16 分钟前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
LZXCyrus44 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
我感觉。1 小时前
【机器学习chp4】特征工程
人工智能·机器学习·主成分分析·特征工程
YRr YRr1 小时前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
DieYoung_Alive1 小时前
一篇文章了解机器学习(下)
人工智能·机器学习
夏沫的梦1 小时前
生成式AI对产业的影响与冲击
人工智能·aigc
jwolf21 小时前
Elasticsearch向量搜索:从语义搜索到图搜图只有一步之遥
elasticsearch·搜索引擎·ai
goomind1 小时前
YOLOv8实战木材缺陷识别
人工智能·yolo·目标检测·缺陷检测·pyqt5·木材缺陷识别
只怕自己不够好1 小时前
《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》
人工智能·opencv·计算机视觉
幻风_huanfeng1 小时前
人工智能之数学基础:线性代数在人工智能中的地位
人工智能·深度学习·神经网络·线性代数·机器学习·自然语言处理