2024-06-25 11:32 湖北
将大型语言模型(LLMs)作为零样本段落排名器研究越来越多,但是大多集中在如何检索示例并直接使用top-k示例进行ICL,忽略了示例之间的依赖性,这在少数样本(few-shot)的排序任务中可能导致性能不佳。
与选择前两个示范(z1和z2)相比,z1和z5的组合提供了更丰富和多样化的查询-段落关系,从而得出更好的相关性评估。
为了解决这一问题,提出了DemoRank框架,它将示例选择问题转化为检索(retrieve)和重排(rerank)过程。
DemoRank框架概述。DemoRank由两个主要组件组成:DRetriever和DReranker。使用LLM评分的示范候选来训练DRetriever,并构建一种依赖感知的训练样本来训练DReranker。在推理过程中,执行检索然后重新排名的流水线,并且使用重新排名后的前k个用于ICL。
示例池构建(Demonstration Pool Construction):
使用训练集构建示例池P,为每个查询构造正面和负面示例,保持示例池中输出标签的平衡。
示例检索器(Demonstration Retriever, DRetriever):
训练DRetriever以检索对后续重排可能有用的示例。
使用LLM对示例候选集进行评分,并通过多任务学习策略来训练检索器。
采用对比损失(contrastive loss)和排名损失(ranking loss)来优化检索器的训练。
示例重排器(Demonstration Reranker, DReranker):
将从检索器获得的示例进行重排,以考虑示例之间的依赖性。
一种有效的方法来构建依赖性感知的训练样本,这些样本将用于训练重排器。
依赖性感知训练样本的构建(Constructing Dependency-aware Training Samples):
给定一个训练输入I,使用DRetriever检索顶部M个示例,然后迭代选择这些示例,并为它们分配排名标签。
每次迭代选择最大化LLM反馈的示例,并将其添加到训练样本中。
训练(Training):
使用交叉编码器模型来训练DReranker。
应用RankNet损失函数来优化重排器模型。
推理(Inference):
在推理阶段,首先使用DRetriever对示例池进行编码并建立索引。
然后,对于每个测试输入,使用DRetriever检索顶部M个示例,并使用DReranker进行重排。
最后,选择顶部k个重排示例作为上下文示例,并与测试输入连接以计算相关性得分。
通过在多个排序数据集上的广泛实验,DemoRank证明了其有效性:
在领域内(in-domain)场景中表现有效,并且在跨领域(out-of-domain)场景中展现出强大的泛化能力。
结果(BEIR上的NDCG@10)。最佳结果用粗体标记。使用MS MARCO的示范池进行检索,并为E5和DemoRank使用3次样本的ICL。
与多个基线方法相比,DemoRank在1-shot和3-shot ICL中均显著提高了性能。
不同数据集上的主要结果(NDCG@10)。最佳结果用粗体标记,列"Avg"代表所有数据集的平均性能。"Initial Order"表示由BM25检索到的前100个段落的顺序。
不同LLM排名器的NDCG@10结果
DemoRank: Selecting Effective Demonstrations for Large Language Models in Ranking Task
https://github.com/8421BCD/DemoRank
https://arxiv.org/pdf/2406.16332
推荐阅读
• 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
• RAG全景图:从RAG启蒙到高级RAG之36技,再到终章Agentic RAG!
• Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“PaperAgent”,每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。