解密prompt系列39. RAG之借助LLM优化精排环节

📅 2026/8/27 14:09:49
解密prompt系列39. RAG之借助LLM优化精排环节
前言RAG的部分我们之前讨论过信息召回的多样性信息密度和质量主要集中在召回融合粗排的部分。这一章我们集中看下精排的部分。粗排和精排的主要差异其实在于效率和效果的balance。粗排模型复杂度更低需要承上启下用较低复杂度的模型在大幅度缩小召回候选量级的基础上和精排的排序一致性做尽可能的对齐保证精排高质量内容不被过滤。而精排模型复杂度更高可以使用更复杂的模型来尽可能地拟合最终的目标排序。在RAG任务中最终目标就是候选内容可以回答问题客观评估就是推理引用率。精排模型的训练目标常用的有几种有全局优化的ListWise有每个item独立拟合ctr等直接目标的pointwise还有对比优化的pairwise。在RAG的排序模块也有多篇论文针对排序目标和样本的标注方式使用以上的不同方案进行了尝试以下方案均可以直接使用大模型做精排也可以使用大模型来构建微调样本训练小模型~PointWiseHELMHolistic Evaluation of Language ModelsUPRImproving Passage Retrieval with Zero-Shot Question Generation先说pointwise也就是每条召回内容都独立判断该内容能多大程度上回答query的问题既query和content的相关性。那最直观的方案就是把query和content一起输入大模型让模型判断是否相关也就是HELM中使用的few-shot指令判别方案。使用以下指令大模型推理的YESNO的token概率来对内容进行排序。Given a passageanda query,predict whether the passage includes an answer to the query by producing either ‘Yes‘or‘No‘.{{few_shot}}Passage:{{passage}}Query:{{query}}Does the passage answer the query? Answer:如果说上面的方案是针对每条内容候选计算P(query,content)的联合概率那考虑query对于所有content是固定的那我们也可以选择计算P(content|query)的条件概率。但考虑内容中的噪声会比较大既有相关也有无关信息所以我们放松bayesian的假设通过计算P(query|content)来近似P(content|query)也就是用给定content下query的概率来衡量query和content的相似度。UPR论文直接使用大模型基于以下的prompt模版计算query每个字的解码概率取平均作为P(query|content)的近似因为可以并行解码所以这个方案虽然用大模型但是也不算慢。Passage:{{passage}}.Please write a question based on this passage.以及是不是看着很眼熟和之前在LLM Agent之再谈RAG的召回信息密度和质量中提到的长文本压缩方案的LongLLMLingua是一个思路。只不过LongLLMLingua使用的指令是we can get the answer to this question in the given documentsListwiseRankVicuna: Zero-Shot Listwise Document Reranking with Open-Source Large Language ModelsRankGPTIs ChatGPT good at search? Investigating large language models as re-ranking agenthttps://github.com/sunnweiwei/RankGPTRankGPT提出了基于permutation的大模型排序方案模型会输入多个content上文并使用指令要求LLM根据内容的关联性按顺序输出内容序号, prompt模版如下ThisisRankGPT,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 queryis:{{query}}I will rank the{{num}}passages above based on their relevance to the search query.The passages will be listedindescending order using identifiers,andthe most relevant passages should be listed first,andthe outputformatshould be[][]etc,e.g.,[1][2]etc.The ranking results of the{{num}}passages(only identifiers)is:而所谓Permutation是考虑到LLM的上文长度有限因此对N条上文内容进行了分组组和组之间是有重叠的划分每次只让模型对一组数据进行排序。listwise效果虽好但是也有不少缺点推理上文长度的限制输入内容顺序会影响推理结果输出推理耗时较高多次预测的稳健性不高会出现排序冲突对模型能力的要求较高PairwiseLarge Language Models are Effective Text Rankers with Pairwise Ranking Prompting相比前面的pointwise依赖模型输出概率是well-calibratedlistwise依赖模型有较好的排序能力pairwise对模型的要求会放松不少。论文使用以下prompt让模型对两个内容进行对比输出A/B的结果这里论文也是使用了prob 概率不过相对于pointwise使用所有内容的prob概率直接进行排序pairwise会两两进行对比同时每次都会swap内容的顺序得到ABBA的两次对比的token推理概率。Given a query{query},which of the following two passagesismore relevant to the query? Passage A:{document1}Passage B:{document2}Output Passage AorPassage B:那如何使用以上两两对比的结果论文给出了三种排序方案: all pairsheap sort和bubble sortAll pairs使用内容间两两对比的结果对所有内容进行打分两两对比时如果(AB),(BA)模型均给出了AB的一致判断则A得一分如果两次结果矛盾则A,B各得0.5分。所以其实论文把prob概率打分进行了局部的ranking处理降低了因为模型预测概率不是well-calibrated带来的结果偏差。当然All Pairs的缺点很明显做一次整体排序是(N^2)的请求复杂度。Heap sort就是使用排序算法把复杂度缩减到了ONlogN而bubble sort就是冒泡排序的实现逻辑同时考虑到精排往往只保留Top-k排名最高的item即可因此只需要两两对比交换顺序K次所以复杂度是O(NK)。效果上论文和前面的point-wise的UPRlist-wise的RankGPT都做了对比除了打不过gpt4吧使用20B的FlAN-UL2基本能和gpt3.5效果差不多。并且对比listwisepair-wise的对比方案对输入内容顺序的敏感度很低同时对模型能力的要求也比较低小模型也能有和大模型相当的表现。SetWiseA Setwise Approach for Effective and Highly Efficient Zero-shot Ranking with Large Language Modelshttps://github.com/ielab/llm-rankers最后一篇介绍setwise其实是上面listwise和pairwise的结合体它使用了listwise的打分方式也借鉴了pairwise使用heap sort和bubble sort筛选topK文档的思路其实还用了pointwise使用大模型输出概率分布的思路。哈哈感觉其实算是个工程化实现的改进简单说一下前面的listwise打分需要大模型对所有内容进行一次性的排序不仅有上文长度的限制输入内容顺序对结果的影响推理比较慢的问题同时对模型来说本身难度也较高会出现多次推理顺序矛盾的情况。因此不妨把内容分成很多个小组降低输入长度同时把输出排序改为输出小组内最相关的文档序号这样既降低推理延时也同时可以使用输出token的logits分布来对组内的多个文档进行打分。然后基于小组内的打分同样是使用bubble sort对比pairwise的实现逻辑每次对比交换都需要计算大模型对比两个文档的相关性setwise可以一次对比组内的3-4篇文档在效率上会有进一步提升对比如下图效果上论文使用NDCG10作为评估指标上角标是setwise相对前面哪些方法有显著的指标提升下图一是不同模型大小的Flan-t5使用不同排序方案的效果效率对比虽然pointwise的latency是最低的但是效果也是最差的而pairwise效果是最好的但latency也是最高的。在兼顾排序效果和latency的方案中listwise-likelihood和setwise heapsort看起来是更合适的方案。想看更全的大模型相关论文梳理·微调及预训练数据和框架·AIGC应用移步Github DecryPrompt彩蛋最近想做个自己的博客网站于是用传说中一句话就能构建功能完备的web页面的网页模拟生成器websim.ai试了下下面是效果图感觉效果还不戳哦大家觉得嘞~最后的最后感谢你们的阅读和喜欢作为一位在一线互联网行业奋斗多年的老兵我深知在这个瞬息万变的技术领域中持续学习和进步的重要性。为了帮助更多热爱技术、渴望成长的朋友我特别整理了一份涵盖大模型领域的宝贵资料集。这些资料不仅是我多年积累的心血结晶也是我在行业一线实战经验的总结。这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习相信它们一定能为你提供实质性的帮助。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】