ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化

解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化 前言RAG最关键的一环其实不是LLM而是相关内容的召回作为大模型推理的上文优秀的内容召回应该满足以下条件多样性和召回率召回的内容要可以回答问题并且内容丰富度包括同一问题多个观点多角度相关性和准确率召回内容和问题相关总不能召回100篇里面只有2篇和问题有关一致性和低冲突召回内容间的观点一致性较高更高要求高时效性权威性观点完整性内容重复度低这里不妨借鉴前人经验参考搜索的主流框架Query理解和扩展 - 多路召回 - 合并排序 - 重排和打散。过去几个月RAG的论文也像是把传统搜索的方案使用LLM轮番做了一遍范式更新。本章我们先围绕召回内容的多样性唠上两句。直接使用用户Query进行向量检索召回率往往不高原因有以下几个query较短本身信息有限短文本的embedding效果较差query短文本向量和document长文本向量存在空间表征差异用户对自己想问的内容比较模糊用户的query提问可能需要多个方向的信息聚合才能回答以上问题其实覆盖了两个点Query本身包含信息的多样性搜索索引的多样性。下面我们结合新老论文以及langchain新增的一些功能来分别介绍~1. Query多样性2019 Query Expansion Techniques for Information Retrieval: a Survey传统搜索Query的扩展有基于用户搜索日志挖掘的相似Query有基于相同召回文档关联的相似Query也有基于SMT的Query改写方案。那和大模型时代更搭配的自然是改写方案LLM的加持很大程度上降低了Query改写的难度也为改写提供了更多的可能性。1.1 相似语义改写Learning to Rewrite Queries雅虎(2016)webcpm: Interactive Web Search for Chinese Long-form Question Answering清华(2023)比较早在16年yahoo就探索过query改写的方案那时还是个seq2seq的LSTM。再就是之前介绍的webcpm也有使用大模型进行query改写来提高内容召回。近期langchain也集成了MultiQueryRetriever的类似功能。逻辑就是把用户的Query改写成多个语义相近的Query使用多个Query一起进行召回如下1.2 双向改写Query2doc: Query Expansion with Large Language Models微软(2023)Query Expansion by Prompting Large Language Models, 谷歌(2023)除此之外还有一种另类Query的改写方案就是Query2doc中提到的把Query改写成document。论文使用4-shot prompt让LLM先基于query生成一个pseudo-document然后使用生成的答案来进行相关内容的召回。这种改写方案确实有一些显著的优点缓解短文本query向量化效果较差的问题缓解document长文本向量和query短文本向量存在空间差异的问题提高BM25等离散索引抽取的效果,毕竟文本长了更容易抽出有效关键词当然缺点也很显著一个是pseudo-docuemnt可能发生语义漂移幻觉回答会引入错误的关键词降低召回的准确率以及解码的耗时较长~这里Query2Doc反过来写Doc2Query也是另外一个优化方向就是给每篇文档都生成N个关联Querypseudo-query使用关联Query的embedding向量来表征文档和真实Query进行相似度计算。langchain的MultiVector Retriever也集成了类似的功能。谷歌也做了类似的尝试。分别对比了Query2Doc(Q2D), Query2Keyword(Q2E), Query2COT几种改写方案以及使用zero-shotfew-shot召回文档增强等不同prompt指令的效果。其中Query2Doc采用了和上面微软相同的prompt指令其他指令如下结果显示当模型规模足够大之后Query2COT展现出了显著更优的效果。甚至超越了在上文中加入相关文档的COT/PRF 方案。一方面COT会对Query进行多步拆解一方面思考的过程会产生更有效的关键词以及不使用相关文档可以更有效的释放模型本身的知识召回能力和创造力。1.3 强化学习改写ASK THE RIGHT QUESTIONS: ACTIVE QUESTION REFORMULATION WITH REINFORCEMENT LEARNING谷歌(2018)Query Rewriting for Retrieval-Augmented Large Language Models微软(2023)以上的改写方案在openai的闭门会都有提到确实一定程度上可以提升RAG的效果可以用于初期的尝试。不过这种改写是无监督的也就是基于相似语义进行改写并不能保证改写后的query搜索效果一定更好。那我们不妨引入一个目标来定向优化改写效果。2018年谷歌就曾尝试使用强化学习来优化改写模型把搜索系统视作Environmentseq2seq模型生成多个Query的改写候选作为Action。把原始Query的召回内容和改写Query的召回内容一起送入后面的排序模块使用排序模块TopK内容中改写Query召回内容的召回率作为Reward打分来梯度更新改写模型最大化改写召回率。毕竟不论你改写的多么花里胡哨能有效提高内容召回拥有更高的独占召回率才是真正有用的改写模型。而在大模型时代改写模块被升级为LLM。在微软提出的rewrite-retrieve-read框架中使用大模型作为rewriterBing搜索作为Retrieverchatgpt作为Reader在QA任务上尝试使用PPO微调改写模型Reward模型的目标是不同改写query召回后推理内容和真实答案的Exact Match和F1。不过真实场景中这种有标准答案的QA问答其实占比很小更多都是开放式问答。那么其实可以类比以上的传统方案使用大模型推理的引用率作为Reward目标。毕竟大模型选择哪几条输入的上文进行推理和精排原理其实是相似的。2. 索引扩展简单说完query扩展我们再来看下索引扩展。当前多数RAG得召回索引还是以单一的Embedding向量模型为主但单一向量作为召回索引有以下几个常见问题文本的相似有不同类型有语义相似有语法结构相似有实体关键词相似单一维度无法区分etc文本的相似有不同粒度有些场景下需要召回精准匹配的内容有些则需要模糊匹配多数向量模型的区分度有限不同领域相似定义不同在垂直领域存在向量模型适配度较低的问题长短文本间的相似问题长短文本向量可能不在一个向量空间下面我们看下还有哪些索引类型可以作为单一向量的补充2.1 离散索引扩展Query Expansion by Prompting Large Language Models, 谷歌(2023)ChatLaw: Open-Source Legal Large Language Model with Integrated External Knowledge Bases传统搜索中往往会使用到大量的离散索引在很多垂直领域的内容召回中往往和向量召回有很好的互补效果部分离散索引例如实体的召回准确率可能会显著高于向量召回。一些常见的Query理解生成离散索引的方案包括抽取: 分词新词ngram识别词性识别实体抽取关键词抽取etc分类意图分类话题分类概念分类地点分类etc多跳实体链接同义词扩展KG查询etc最先想到使用大模型来进行范式改良的方向大家都不约而同把目光放在了关键词扩展。虽然在上面谷歌的论文中尝试query2Keyword的效果并没有超越query2Doc和Query2COT。但是关键词生成本身低耗时以及在一些垂直领域其实有很好的效果。例如ChatLaw一个法律领域的大模型就是用了LLM进行法律条文的关键词联想。论文使用LLM针对用户Query生成法律相关联想关键词并使用关键词的Ensemble Embedding来召回对应的法律条款。当然也可以使用关键词直接进行召回。这种设计其实是针对在法律领域领域关键词往往有显著更好的召回效果而设计的。2.2 连续索引扩展https://github.com/FlagOpen/FlagEmbeddinghttps://github.com/shibing624/text2vechttps://github.com/Embedding/Chinese-Word-VectorsAUGMENTED EMBEDDINGS FOR CUSTOM RETRIEVALS, 微软2023向量索引的扩展最先想到的就是同时使用多种不同的连续向量索引包括朴素模式不同的Embedding模型常见的就是OpenAI的Ada智源的BGE还有Text2vec系列使用多路embedding模型同时召回或者加权召回的方案取长补短。简单模式使用以上抽取的关键词使用词向量加权进行召回。相比文本向量词向量的召回率往往更高在一些垂直领域有很好的效果。当然反过来就是词向量可能准确率偏低不过召回阶段本来就是广撒网多敛鱼Hard模式训练领域Embedding。成本最高可以放在最后面尝试在openai devday上提及的观点也是领域模型对比通用模型提升有限且成本较高不过微软近期提出了一个相比微调领域embedding模型更加轻量化的方案和lora微调的思路类似咱不动基座模型但是在上面微调一个adapter来定向优化query和document的匹配效果。向量变化的adapter论文使用了向量加法就是在原始模型输出的D维embedding的基础上加一个residualresidual的计算是一个Key-Value lookup函数包含两个相同shape的变量K和v。例如针对openai的向量输出是D 1536维residual会选用hD来进行变换h的取值在16~128则K和V都分别是h*D维的矩阵也就是adapter部分只需要梯度更新2hD量级的参数如下\[\begin{align} score(query,content) argmax Sim(Tr(Embedding(query)),Embedding(content)) \\ Tr(embedding) embedding f(embedding, θ)\\ f(emb,K, V ) softmax(emb \cdot K^T )V \end{align} \]微调损失函数使用了对比学习的GlobalNegative Loss也就是每个querycontentpair是正样本其余样本内所有content均是负样本学习目标是query和正样本的相似度和其余所有负样本相似度的最大值。看起来似乎是很轻量的方案有机会准备去试一下~2.3 混合索引召回https://learn.microsoft.com/en-us/azure/search/hybrid-search-ranking把BM25等离散索引召回和Embedding向量等连续索引召回进行混合召回langchain的Ensemble Retriever集成了这个功能。不过混合召回最大的问题是不同召回的打分较难进行排序。因此当多路混合召回内容较多时需要引入排序模块对内容做进一步筛选过滤这个我们放到后面再说啦~最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。四、AI大模型商业化落地方案五、面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表