基于LLM的搜索排序

大语言模型在各种与语言相关的任务中表现出了显著的零样本泛化能力,包括搜索引擎。然而,现有的工作主要利用LLM的生成能力进行信息检索,而不是直接进行段落排序。这篇EMNLP2023的论文(Outstanding Paper)研究了LLM是否擅长搜索排序的问题。

# Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents (https://aclanthology.org/2023.emnlp-main.923/)

两个问题:

  1. ChatGPT在段落重排序任务中的表现如何?

  2. 如何在一个更小的专用模型中模仿ChatGPT的排序能力?

对第一个问题,文章提出了permutation generation的方案,让LLM直接输出对一组段落的排序组合。对第二个问题,文章采用蒸馏技术,以在更小的专用排序模型中模仿ChatGPT的段落排序能力。

具体而言,零样本段落重排序的三种指令如下图,灰色和黄色块表示模型的输入输出:

ChatGPT Rank Illustration

(a) 查询生成:依赖于LLM的对数概率,根据段落生成查询。(b) 相关性生成:指示LLM输出相关性判断。(c) 排序生成:生成一组段落的排序列表。

文章的方案是最后一个,将一组段落输入到LLM,每个段落都有一个唯一的标识符(例如,[1],[2],等)。然后,要求LLM根据段落与查询的相关性生成降序排列的段落顺序。段落使用标识符进行排序,格式如[2] > [3] > [1] > [...]。该方法直接对段落进行排序,而不生成中间的相关性分数,有点类似list-wise的思想。

用于排序的prompt模板如下:

  1. text-davinci-003

This is RankGPT, an intelligent assistant that can rank passages based on their relevancy to the query. The following are {{num}} passages, each indicated by number identifier []. I can rank them based on their relevance to query: {{query}} [1] {{passage_1}} [2] {{passage_2}} (more passages) ... The search query is: {{query}} I will rank the {{num}} passages above based on their relevance to the search query. The passages will be listed in descending order using identifiers, and the most relevant passages should be listed first, and the output format should be [] > [] > etc, e.g., [1] > [2] > etc. The ranking results of the {{num}} passages (only identifiers) is:

  1. gpt-3.5-turbo 和 gpt-4

system: You are RankGPT, an intelligent assistant that can rank passages based on their relevancy to the query. user: I will provide you with {{num}} passages, each indicated by number identifier []. Rank them based on their relevance to query: {{query}}. assistant: Okay, please provide the passages. user: [1] {{passage_1}} assistant: Received passage [1] user: [2] {{passage_2}} assistant: Received passage [2] (more passages) ... user Search Query: {{query}}. Rank the {{num}} passages above based on their relevance to the search query. The passages should be listed in descending order using identifiers, and the most relevant passages should be listed first, and the output format should be [] > [], e.g., [1] > [2]. Only response the ranking results, do not say any word or explain.

考虑到LLM的输入token长度限制,论文采用滑动窗口策略对更多的文档进行排序。直接看示例:

第一步先对第5-8位排序,p8和p5胜出;然后第二步对第3-6位排序,p8和p3胜出;最后对第1-4位排序,得到最终排序。

滑动窗口的方案简单,不过笔者认为从全局来看,该方案不太公平,因为不同段落之间的排序未必存在偏序传递关系:图中p4和p5未必比p6和p7更优。不过今天来看这个滑动窗口策略也没有太大意义了,LLM的长度限制已经不再是个问题。

另一方面,考虑到成本问题,用GPT-4做排序还是太贵。因此,将GPT-4的搜索排序能力蒸馏到更小的模型是很自然的做法。论文从MS MARCO中抽取了10,000个查询,并使用BM25为每个查询检索到20个候选段落。蒸馏的目标在于减少学生模型和ChatGPT对它们排序输出之间的差异。

上表展示了从TREC和BEIR数据集中获得的评估结果,可以得出几个结论:

  • GPT-4在这两个数据集上表现优异。值得注意的是,与monoT5 (3B)相比,GPT-4在TREC和BEIR上的nDCG@10分别平均提高了2.7和2.3。

  • ChatGPT在BEIR数据集上也表现不错,超过了大多数监督基线。

  • 在BEIR上使用GPT-4对由ChatGPT重排序的前30个段落进行重新排序。该方法取得了良好的结果,而成本仅为仅使用GPT-4进行重排序的1/5。

上表展示了在TREC数据集上的消融实验,有如下发现:

  • 初始段落顺序敏感:原始实现使用BM25的排名结果作为初始顺序,这里实验了另两种方案:随机顺序和反向BM25顺序。结果显示模型对初始段落顺序非常敏感,原因可能是因为BM25提供了较好的初始顺序,仅使用单个滑动窗口重排就能获得不错的结果。

  • 滑动窗口重排序次数的影响:表中的方法(3)(4)显示进行多次重排序可能会提高nDCG@10,但会损害nDCG@1排序性能(例如,nDCG@1下降了3.88)。而方法(5)使用GPT-4对前30个段落进行重排序显示出显著的准确性提升。这提供了一种将ChatGPT和GPT-4结合使用的方案,以减少使用GPT-4模型的高成本。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LLM(Language Model)的测试效率提升主要体现在以下几个方面: 1. 自动化测试:LLM的出现使得测试工程师能够利用自然语言的特点,快速生成测试用例和测试脚本。相比传统的手动编写测试用例,LLM能够极大地减少测试人员的工作量和时间成本,提高了测试效率。 2. 敏捷开发:LLM能够快速学习和适应不同的测试场景和需求,根据不同的自然语言输入生成相应的测试用例和脚本。这种灵活性使得测试人员能够更加快速地响应项目变更,及时执行测试,提高了敏捷开发的效率。 3. 覆盖率提升:LLM可以根据自然语言输入,自动生成全面且具有一定逻辑性的测试用例。相比人工编写测试用例,LLM能够更好地覆盖不同功能模块的边界条件和异常情况,从而提高测试的覆盖率。 4. 功能验证加速:LLM通过自动生成测试用例和脚本,可以快速验证新功能的正确性和稳定性。测试人员只需输入相应的功能描述,LLM会自动生成相应的测试用例,从而加快了功能验证的速度。 5. 测试回归:LLM可以根据自然语言输入,快速生成全面的测试脚本,以及对应的测试数据和预期结果。这种自动化回归测试能够提高测试的复用性和可维护性,降低了回归测试的工作量,提高了回归测试的效率。 综上所述,基于LLM的测试效率提升主要体现在自动化测试、敏捷开发、覆盖率提升、功能验证加速和测试回归等方面。LLM的应用能够帮助测试人员更快速、全面地进行测试工作,提高测试效率,降低测试成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值