论文"ChatGPT在搜索方面表现如何?调查大型语言模型作为重排序代理"的代码
本项目旨在探索像ChatGPT和GPT-4这样的生成式大型语言模型在信息检索(IR)中的相关性排序应用。
以下定义了一个查询和三个候选段落:
item = { 'query': '口罩对预防COVID-19传播有多大影响?', 'hits': [ {'content': '标题:COVID-19大流行中普及戴口罩刻不容缓:SEIR和基于代理的模型、实证验证、政策建议 内容:我们提出两个模型预测普及戴口罩对SARS-CoV-2病毒传播的影响——一个采用随机动态网络的SEIR(易感-暴露-感染-康复)分区模型方法,另一个采用个体ABM(基于代理建模)蒙特卡罗模拟——表明(1)当至少80%的人口戴口罩时,(几乎)普及戴口罩有显著影响,而当只有50%或更少人口戴口罩时,影响微乎其微,(2)当在地区疫情爆发的第50天前采取普及戴口罩措施时,影响显著,而晚期采取则影响微小。即使是过滤率较低的自制口罩也存在这些效果。为验证这些理论模型,我们将其预测与我们收集的新实证数据集进行比较'}, {'content': '标题:大众戴口罩可能减轻COVID-19疫情 内容:使用两种最先进的基于网络的软件,其中一种针对SARS-CoV-2病毒进行了校准,通过计算机模拟估计了大众戴口罩对COVID-19疫情的影响。所解决的问题如下:1. 大众戴口罩能否限制SARS-CoV-2在一个国家的传播?2. 存在哪些类型的口罩,对抗COVID-19需要多么精良的口罩才有效?3. 口罩是否必须在疫情早期使用?4. 简要讨论口罩及一些可能的未来研究问题。结果如下:(1)结果表明,任何类型的口罩,即使是简单的自制口罩,都可能有效。即使每个口罩的防护效果(这里称为"单个口罩防护")很低,戴口罩似乎也能降低新患者数量'}, {'content': '标题:戴还是不戴:模拟大众使用口罩遏制COVID-19大流行的潜力 内容:大众使用口罩遏制COVID-19大流行的传播存在争议,尽管越来越多地被推荐,但这种干预措施的潜力尚未得到充分理解。我们开发了一个分区模型,用于评估无症状公众广泛使用口罩的社区影响,其中一部分人可能是无症状感染者。使用与美国纽约州和华盛顿州COVID-19动态相关的数据进行模型模拟表明,即使是相对低效的口罩,如果得到广泛采用,也可能显著减少COVID-19的社区传播,并降低住院高峰和死亡人数。此外,口罩使用降低有效传播率的程度与口罩效果(作为阻止潜在传染接触的比例)和覆盖率(作为'} ] }
我们可以使用ChatGPT通过指令排列生成来重新排序段落:
from rank_gpt import permutation_pipeline new_item = permutation_pipeline(item, rank_start=0, rank_end=3, model_name='gpt-3.5-turbo', api_key='您的OPENAI密钥!') print(new_item)
我们得到以下结果:
<details> <summary>步骤示例</summary>{ 'query': '口罩对预防新冠病毒传播的影响有多大?', 'hits': [ {'content': '标题:新冠疫情中普及戴口罩的紧迫性:SEIR和基于代理的模型、实证验证、政策建议 内容:我们提出两个预测普及戴口罩对SARS-CoV-2病毒传播影响的新冠疫情模型——一个采用随机动态网络基于SEIR(易感-暴露-感染-康复)的分区模型,另一个采用个体ABM(基于代理建模)蒙特卡罗模拟——表明(1)当至少80%的人口戴口罩时,(接近)普及戴口罩有显著影响,而当只有50%或更少的人口戴口罩时,影响微乎其微,(2)在地区疫情爆发的第50天前采取普及戴口罩时影响显著,而晚期采取则影响微小。即使是过滤率较低的自制口罩,这些效果也成立。为验证这些理论模型,我们将其预测与我们收集的新实证数据集进行比较'}, {'content': '标题:戴还是不戴:为遏制新冠疫情普及公众戴口罩的潜力建模 内容:公众普及戴口罩以限制新冠疫情传播虽然存在争议,但越来越多地被推荐,这种干预措施的潜力尚不清楚。我们开发了一个分区模型,用于评估普通无症状公众戴口罩的社区范围影响,其中一部分可能是无症状感染者。使用与美国纽约州和华盛顿州新冠动态相关的数据进行模型模拟表明,即使是相对低效的口罩,如果得到广泛采用,也可能显著减少新冠病毒在社区的传播,并降低住院和死亡高峰。此外,口罩使用几乎与口罩效果(作为阻断潜在传染接触的比例)和覆盖率(作为'}, {'content': '标题:普及公众戴口罩可能会减轻新冠疫情 内容:使用两种独立的最先进网络软件,其中一种针对SARS-CoV-2病毒校准,通过计算机模拟估算了普及公众戴口罩对新冠疫情的影响。解决的问题包括:1. 普及公众戴口罩能否限制SARS-CoV-2在一个国家的传播?2. 存在哪些类型的口罩,口罩需要多复杂才能对抗新冠病毒有效?3. 口罩是否需要在疫情早期使用?4. 简要讨论口罩及一些关于口罩和SARS-CoV-2的可能未来研究问题。结果如下:(1) 结果表明任何类型的口罩,甚至简单的自制口罩,都可能有效。即使每个口罩的防护效果(这里称为"单口罩防护")很低,口罩使用似乎也能降低新患者数量'} ] }
</details>from rank_gpt import create_permutation_instruction, run_llm, receive_permutation # (1) 创建排列生成指令 messages = create_permutation_instruction(item=item, rank_start=0, rank_end=3, model_name='gpt-3.5-turbo') # (2) 获取ChatGPT预测的排列 permutation = run_llm(messages, api_key="你的OPENAI密钥!", model_name='gpt-3.5-turbo') # (3) 使用排列重新排序段落 item = receive_permutation(item, permutation, rank_start=0, rank_end=3)
我们引入了一种用于指令排列生成的滑动窗口策略,使大语言模型能够对超过其最大令牌限制的段落进行排序。
其思想是使用滑动窗口从后向前进行排序,每次只对窗口内的段落进行重新排序。
以下是使用窗口大小为2和步长为1重新排序3个段 落的示例:
from rank_gpt import sliding_windows api_key = "你的OPENAI密钥" new_item = sliding_windows(item, rank_start=0, rank_end=3, window_size=2, step=1, model_name='gpt-3.5-turbo', api_key=api_key) print(new_item)
我们使用pyserini为每个查询检索100个段落,并使用指令排列生成对它们进行重新排序。
TREC-DL19评估示例:
from pyserini.search import LuceneSearcher, get_topics, get_qrels from rank_gpt import run_retriever, sliding_windows import tempfile openai_key = None # 你的openai密钥 # 使用pyserini BM25检索段落。 searcher = LuceneSearcher.from_prebuilt_index('msmarco-v1-passage') topics = get_topics('dl19-passage') qrels = get_qrels('dl19-passage') rank_results = run_retriever(topics, searcher, qrels, k=100) # 运行滑动窗口排列生成 new_results = [] for item in tqdm(rank_results): new_item = sliding_windows(item, rank_start=0, rank_end=100, window_size=20, step=10, model_name='gpt-3.5-turbo', api_key=openai_key) new_results.append(new_item) # 评估nDCG@10 from trec_eval import EvalFunction temp_file = tempfile.NamedTemporaryFile(delete=False).name EvalFunction.write_file(new_results, temp_file) EvalFunction.main('dl19-passage', temp_file)
运行所有基准测试的评估
python run_evaluation.py
以下是我们在TREC、BEIR和Mr. TyDi上进行初步实验的结果(平均nDCG@10)。

| 文件 | 说明 | 链接 |
|---|---|---|
| marco-train-10k.jsonl | 从MS MARCO中抽样的10K个查询 | Google云端硬盘 |
| marco-train-10k-gpt3.5.json | ChatGPT预测的排列组合 | Google云端硬盘 |
| deberta-10k-rank_net | 使用RankNet损失函数训练的专业Deberta模型 | Google云端硬盘 |
| marco-train-100k.jsonl | 来自MS MARCO的100K个查询 | Google云端硬盘 |
| marco-train-100k-gpt3.5.json | ChatGPT对100K个查询的排列组合 | Google云端硬盘 |
python specialization.py \ --model microsoft/deberta-v3-base \ --loss rank_net \ --data data/marco-train-10k.jsonl \ --permutation marco-train-10k-gpt3.5.json \ --save_path out/deberta-10k-rank_net \ --do_train true \ --do_eval true
或者使用accelerate在多个GPU上运行:
accelerate launch --num_processes 4 specialization.py \ --model microsoft/deberta-v3-base \ --loss rank_net \ --data data/marco-train-10k.jsonl \ --permutation marco-train-10k-gpt3.5.json \ --save_path out/deberta-10k-rank_net \ --do_train true \ --do_eval true
python specialization.py \ --model out/deberta-10k-rank_net \ --do_train false \ --do_eval true
下图显示了不同模型大小和训练查询数量的蒸馏专业模型的结果。

@article{Sun2023IsCG, title={Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agent}, author={Weiwei Sun and Lingyong Yan and Xinyu Ma and Pengjie Ren and Dawei Yin and Zhaochun Ren}, journal={ArXiv}, year={2023}, volume={abs/2304.09542} }
@article{Sun2023InstructionDM,
title={Instruction Distillation Makes Large Language Models Efficient Zero-shot Rankers},
author={Weiwei Sun and Zheng Chen and Xinyu Ma and Lingyong Yan and Shuaiqiang Wang and Pengjie Ren and Zhumin Chen and Dawei Yin and Zhaochun Ren},
journal={ArXiv},
year={2023},
volume={abs/2311.01555},
}


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI 创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。


国内直接访问,限时3折
输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号