微信扫码
与创始人交个朋友
我要投稿
研究背景和动机
大型语言模型(LLMs)虽能力强大,但在特定领域知识、时效性、事实准确性及可控性解释性等方面存在局限,如易出现知识过时、缺乏专业知识、产生幻觉、输出难以控制和解释等问题。
数据增强的LLMs通过在推理过程中纳入外部数据源,可解决上述局限性,而检索增强生成(RAG)技术是其中的重要方法。
数据增强LLMs的优势
增强专业性和及时性:能提供更详细准确的答案,适应复杂问题,允许数据更新和定制,确保模型回答基于当前信息,适用于快速变化的领域。
与领域专家对齐:利用特定领域数据,使模型表现出更像领域专家的能力,极大地扩展了LLMs在专业领域的潜在应用。
减少模型幻觉:基于真实数据生成反应,将反应建立在事实基础上,显著减少产生幻觉的可能性。
提高可控性和可解释性:所使用的数据可作为模型预测的参考,从而提高可控性和可解释性,有助于建立对人工智能系统的信任,尤其是在高风险应用中。
查询分层及特点
显式事实查询(q1):是最简单的查询类型,询问直接存在于给定数据中的明确事实,不需要任何额外的推理。系统的主要任务是从数据中找到并提取相关信息。
隐含事实查询(q2):需要综合多个来源的信息或进行简单的推断,要求一定程度的常识推理或基本逻辑推理。
可解释的推理查询(l3):要求理解和应用外部数据中明确提供的特定领域的推理或指南,通常涉及解释和遵循结构化指令、工作流或决策树。
隐藏推理查询(l4):推理过程没有明确说明,必须从数据模式中推断出来,需要分析和提取数据中隐藏的模式、原理或策略以回答查询。
RAG技术及相关流程
数据处理:需处理多模态文档,从文本、表格和图表中连贯地提取信息,关键挑战是分块优化,即把长文档分割成易于管理的片段并保留上下文,论文介绍了各种分块策略。
数据检索:包括为高效搜索而对处理过的数据编制索引,将查询与相关文档段对齐,以及对检索到的信息重新排序和过滤,讨论了llm2vec和llama2vec等密集检索方法。
响应生成:要将检索到的信息与LLM的知识进行整合,处理潜在的冲突,并生成一致而准确的响应,介绍了有监督的微调等增强该过程的技术。
不同级别查询的处理方法
隐含事实查询(q2):介绍了react和self-rag等迭代RAG方法,它们执行多轮检索和生成,以逐步完善答案。
可解释的理由查询(l3):探讨了提示调整和思维链提示等技术,介绍了这些方法如何引导LLM逐步完成推理过程,从而提高透明度和准确性。
隐藏推理查询(l4):讨论了star和leap等离线学习方法,可在查询之前从数据中提取规则和模式;还探讨了上下文学习技术,如din-sql等方法可将复杂问题分解为更简单的子任务;此外也提及了微调方法。
研究结论与展望
总结了利用外部数据增强LLMs的重要性和RAG技术的优势及处理不同级别查询的方法。
对未来研究方向进行了展望,如进一步优化RAG技术、探索更有效的查询处理方法、提高模型对外部数据的利用效率等。
能力展现:大型语言模型(LLMs)具备令人瞩目的能力,比如拥有广泛的世界知识,这意味着它们能够知晓众多不同领域的常识、事实等信息;同时还具备复杂的推理技能,像进行逻辑推导、因果分析等,以此来生成合理的文本回复,帮助人们解答各类疑问或者辅助完成各种文本相关任务。
部署难题:然而,尽管能力突出,但要将其在各个专业领域有效投入使用却面临重重困难。一方面存在模型幻觉问题,即模型可能会生成一些看似合理但实际并不准确、没有事实依据的内容,就好像产生了“幻觉”一样;另一方面,模型所掌握的知识与特定领域的专业知识可能并不匹配,比如在医疗领域有其独特的专业术语、诊疗规范等知识,通用的LLMs可能并不熟悉,从而导致在专业应用场景中表现不佳。此外,很多特定领域的私有数据(如企业内部机密数据、个人隐私相关的数据等)或者本地数据(只存储在特定场所、未公开的相关数据)在模型初始训练时没有被包含进去,而这些数据对于使模型贴合具体行业需求、发挥精准作用又是非常关键的。
专业性和时效性增强:
数据局限问题:通常用于训练LLMs的数据存在不足,时效性滞后是一大问题,例如可能学到的是过去某个阶段的知识,难以跟上当下快速变化的现实情况。而且这些数据没办法覆盖所有领域,尤其是那些属于用户个人或者特定企业所独有的专有数据,往往不在训练数据范围内。
对应解决方式:数据增强型的LLM应用就可以克服这些问题,针对复杂的问题,它能够凭借融入的新数据给出更详细、准确的答案。并且它还允许对数据进行更新,比如及时补充最新行业动态数据等,同时可以按照不同行业、不同用户的需求进行定制化,使其更贴合具体应用场景。
与领域专家的契合度:通过将特定领域的数据引入并让模型学习这些数据,数据增强型的LLM应用能够在能力表现上更接近领域专家,比如在医疗领域像医生一样给出专业的诊断建议、在法律领域如同律师般提供准确的法律分析和建议等,从而使其在专业领域的应用更具权威性和实用性。
减少模型幻觉:这种应用是基于真实的数据来生成回复内容的,它会将回复内容扎根于事实基础之上,不像普通的LLMs可能凭空编造一些内容,这样就能够大大降低出现幻觉现象的可能性,让生成的结果更可靠、更值得信赖。
可控性和可解释性提高:所使用的特定领域数据能够作为模型进行预测时的参考依据,这就使得开发人员或者使用者能够更好地把握模型的运行情况,了解为什么模型会给出这样的预测结果,从而增强了对模型的控制能力,也让模型的预测变得更可解释,不再是一个“黑箱”操作,更符合实际应用中对结果可追溯、可理解的要求。
人力投入难题:尽管数据增强型LLM应用有诸多优势,可开发人员要达到预期效果却并不容易,需要投入大量的人力劳动。例如在问答应用场景中,想要实现较高的问答成功率,就需要花费大量精力去调整模型、优化数据等工作,过程十分艰辛。
多领域挑战情况:
数据处理方面:从构建数据管道角度来看,涉及到数据的处理、索引编制等诸多环节都存在挑战。像在金融领域应用时,常常要处理高维时间序列数据,要理解这些数据中蕴含的各种复杂信息(如不同时间点的股价波动、经济指标变化等)并运用到模型中去;在医疗保健领域,医学图像(如X光片、CT影像等)以及按时间顺序记录的医疗记录(如患者不同阶段的病历、检查报告等)都是很关键的数据形式,而让LLMs去理解和运用这些多样化的数据难度很大。
模型能力局限:在法律和数学等应用场景中,LLMs往往很难把握不同结构之间的长距离依赖关系,例如在分析一份复杂的法律合同中不同条款之间的关联、数学证明过程中多个步骤之间的逻辑连贯性等方面表现欠佳。而且不同的应用领域,对LLMs回复的可解释性(要清楚说明回复依据)和一致性(针对类似问题给出相对稳定、统一的回答)要求也更高,然而LLMs本身存在可解释性低、不确定性高的固有特性,这就使得在满足这些要求方面面临重大挑战。尤其在那些对精准度要求极高(如医疗诊断、金融风险评估等)、对责任划分很明确(如法律领域)的领域,提高模型的透明度、降低不确定性对于让人们信任其输出结果、放心使用是至关重要的。
认识到应用的局限性:通过与领域专家以及开发人员深入交流、仔细分析他们面临的实际问题后,深刻认识到数据增强型LLM应用并非是一种适用于所有情况的通用解决方案。现实世界里,尤其是在专业领域中,需求是极其复杂多样的,不同的应用场景与给定的数据之间有着千差万别的关系,并且在推理难度上也各有不同,比如有的领域需要深度逻辑推理,有的领域则更侧重对大量数据的综合分析等。
开发误区与正确做法:但很多开发人员往往没有意识到这些区别,在开发过程中没有针对性地去解决问题,最终得到的解决方案往往存在很多性能方面的缺陷,就像盖了一座到处漏水的房子一样,看似有了个成果,但实际使用起来问题很多。与之相反,如果能够全面、深入地理解不同层面的需求以及各自独特的挑战,那么就可以根据这些情况来构建相应的应用,并且可以让应用像盖房子一样一步一个脚印地稳步改进,变得越来越完善、可靠。
综述的目标:当前的研究工作以及已有的相关综述大多只是聚焦于其中某一个层面或者特定的技术主题,不够全面系统。所以作者们才想要编写这样一份综合性的综述,目的就是要清晰地把不同层面的问题界定清楚,准确找出每个层面所特有的挑战(还通过图1直观展示这些关联和挑战),并且将那些致力于解决这些挑战的相关工作和努力都罗列出来,以便帮助读者能够从宏观角度全面了解数据增强型LLM应用的整体情况,同时也为开发人员提供一本系统的开发指南,指导他们如何有条理、有针对性地去开展这类应用的开发工作。
数据增强的LLM应用的多样形式
数据增强的大型语言模型(LLM)应用在实际中有着各种各样的呈现方式。比如,我们常常能见到的问答机器人,它是基于特定领域的数据来运行的。像在医疗领域,这种问答机器人可以依据大量的医学知识、病例数据等,来回答患者关于病症、治疗方案等方面的问题;在法律领域,就能依据法律法规条文、过往案例等数据,解答法律咨询相关疑问。
还有复杂数据管道内的语义处理操作符,在一些涉及众多数据流转、处理的复杂系统里,它发挥着对数据进行语义层面分析和操作的作用,确保数据在整个流程中能被准确理解和运用,比如在大数据分析项目中,帮助解析文本数据的语义,以提取有价值的信息。
另外,在多智能体系统里,也会存在负责特定步骤的智能体,不同智能体承担不同任务,其中基于数据增强的LLM的智能体可以利用相关数据完成它所负责的那部分特定工作,例如在一个模拟商业运营的多智能体系统中,某个智能体负责市场调研环节,就可以借助市场相关数据结合LLM的能力来生成调研报告等内容。
应用的一般性表述及任务
从通用的理论角度来看,数据增强的LLM应用可以用公式
这个公式意味着,在整个应用的运行机制里,用户输入的查询内容Q以及给定的相关数据D共同作为输入信息,而应用f的核心任务就是依据给定的数据D,在用户输入的查询Q和期望得到的答案A之间建立起一种映射关系,也就是当接收到某个具体的查询Q,通过参考和运用相应的数据D,从而输出对应的答案A。
与独立LLM系统的区别及外部数据的作用
通常独立的大型语言模型系统,主要是依靠其预先已经学习到的既有知识来应对各种情况,就像是一个装满了之前学到的知识的“知识库”,根据这个“知识库”里的内容去回复用户提问等。
但数据增强的LLM应用不一样,它的关键特性在于依赖外部数据D。正是借助这些外部数据,它才能更精准地去处理用户提出的查询Q。例如,仅靠通用LLM原本的知识储备,可能对某企业最新的内部业务流程相关问题无法准确回答,但如果引入该企业内部的业务流程数据作为外部数据D,那就能很好地解答相关疑问了。
而且外部数据D的加入能极大地强化LLM的能力,让它能够获取当下最新的、特定领域的知识,像掌握某个行业最新的技术动态、发展趋势等。同时还能帮助其理解领域专家思考问题的方式和思路,比如医疗专家判断病症的逻辑、法律专家解读条文的角度等,进而使模型输出的结果更贴合专业领域的实际需求。
查询的复杂度分层依据
根据查询利用外部数据的程度以及方式,可以对查询进行不同复杂程度级别的划分。比如说,有的查询可能只需要简单参考一点外部数据就能解答,那它的复杂程度相对较低;而有的查询可能需要深入挖掘、综合运用大量不同类型的外部数据,并且要按照很复杂的逻辑关系去分析这些数据才能得到答案,那这样的查询复杂程度就很高。这种分层方式其实也反映了不同查询在处理过程中,模型需要参与的深度如何,以及处理这些查询所涉及的本质特点是什么样的,有助于进一步了解和把握不同查询对于数据增强的LLM应用的要求差异。
整体分层意义
在数据增强的大型语言模型(LLM)应用环境里,之所以要依据查询的复杂程度以及和数据交互的深度来对查询进行分层,是因为这样做能让我们清晰地知晓LLM在面对不同查询时,需要动用何种程度的“思考”能力,也就是认知处理过程,去生成准确又贴合需求的回复。从简单直接获取已知事实,到挖掘深层次、隐含的知识来作答,每一层级的提升都意味着对LLM要求的提高,涉及的任务也变得越发复杂精细。
各层级具体分析
一级:明确事实:
特点:这是最基础、最简单的查询类型。用户提出的问题所涉及的答案就是明明白白摆在给定数据里的事实,不需要LLM进行额外的思考、推理等操作,就像从一个资料库里直接找现成的内容一样。例如想知道“2024年夏季奥运会将在哪里举办?”,相关的举办地点信息肯定已经存在于外部数据(比如体育资讯数据库、官方报道资料等)当中了,模型只要能准确地从这些数据里把对应信息提取出来就行。
对LLM的要求:重点考验LLM能否精准定位到相关信息所在位置,并顺利地把它提取出来,整合为一个完整准确的回复呈现给用户,主要涉及数据提取和简单整合的能力。
二级:隐含事实:
特点:这类查询的答案虽然也在数据当中,但不是一眼就能看到的,需要LLM运用一些常识或者进行基本的逻辑推导才能找出来。比如提到的“堪培拉所在国家的当前执政党是哪个?”,模型得先知道堪培拉属于澳大利亚这个事实(这可能是它已知的常识,或者在数据里有相关关联信息),然后再去查找澳大利亚当前执政党的情况,相当于要把分散在不同地方或者需要简单关联推断的信息整合起来。
对LLM的要求:除了具备基本的数据查找能力外,还要求它有一定的常识储备以及进行简单逻辑推理的能力,从而把隐含的事实挖掘出来,形成合理的回复。
三级:可解释的依据:
特点:此时的查询已经不单单是找事实了,还要求LLM理解数据所处领域的一些特定依据、规则等内容,并且能够运用这些去解答问题。像在制药领域,FDA的指导文件有着明确的关于药品监管等方面的要求和思路,这些内容在通用的LLM预训练阶段基本没接触过,属于特定领域特有的重要依据。在客户支持场景中,也有公司预先设定好的工作流程和服务标准等,这些都是要遵循的“依据”,模型得明白这些才能准确处理用户咨询。例如按照医疗诊断手册里的标准去判断病症、给出诊疗建议等。
对LLM的要求:需要LLM能够学习并掌握这些外部的、特定领域的依据,把它们融入到自己的处理过程中,使生成的回复既符合事实情况,又契合相应领域的规范和要求,这就涉及到对新知识的理解和应用能力,要和专业领域的思维方式“接轨”。
四级:隐藏依据:
特点:这是最难的一类查询了,因为要用到的依据在数据里根本没有明确写出来,得靠LLM自己从过往的数据所呈现出的各种模式、处理结果等情况去推测、总结出来。比如在IT运维领域,以往处理众多事件时,每个事件的解决办法可能并没有一个清晰固定的文档说明背后的依据是什么,但是存在着一些隐性的、大家默认有效的策略和决策逻辑,软件开发中的调试过程也是类似情况,调试决策的详细理由可能没记录,但有潜在的原则在里面。
对LLM的要求:LLM要具备很强的洞察力和分析能力,能从海量、看似杂乱的历史数据里挖掘出那些隐藏的、不成文的依据,然后基于这些总结出来的依据生成回复,这个回复不仅要准确回答问题,还要能体现出那些长期积累下来、经验丰富的专业人员所拥有的独特专业知识和解决问题的窍门,也就是要把那些“只可意会不可言传”的东西挖掘出来并运用好。
层级间对比与整体意义
对比:前两个层级(明确事实和隐含事实)主要聚焦在如何从数据里把事实相关的信息找出来,不管是直接能看到的,还是稍微需要推导一下的,重点在于对数据本身的处理和整合,看LLM能不能把碎片化的信息整合成有条理的事实回复。而后两个层级(可解释的依据和隐藏依据)更关注LLM能不能理解数据背后深层次的“道理”,也就是依据,并且运用这些依据来生成高质量回复,这就要求LLM和专业领域的专家思维去契合,或者从杂乱的历史数据中提炼出有用的智慧,需要更深层次的认知加工和知识运用能力。
整体意义:把查询这样分类成不同层级,一方面清晰地展现出了不同查询的复杂程度变化,以及对LLM能力要求的差异;另一方面,由于每个层级都有其独特的挑战,比如有的是数据提取难,有的是依据理解运用难等,所以就提示我们需要针对各个层级的特点去制定专门的解决办法,来帮助LLM更好地应对这些不同类型的查询,从而让数据增强的LLM应用在各个场景下都能发挥出更好的效果。而且通过这样深入探究各层级,我们可以进一步了解LLM目前的能力水平,也能看到这个领域在不断进步的方向以及未来可能有哪些新的发展潜力,为后续的研究、开发等工作提供很好的参考。
应对各层级挑战的后续探索
后续我们会深入到每个层级的具体细节当中,去研究到底有哪些具体的策略和方法,能够让LLM在面对这么多不同类型、不同复杂程度的查询时,游刃有余地处理好数据增强应用中的各种复杂情况,使得整个应用更加完善、高效,不断提升其性能和实用性,跟上领域发展的步伐。
明确事实查询代表了数据增强查询中最直接的类型。处于这一层级的查询可以通过直接访问特定领域文档或文档集合中的片段来作答。这些问题的答案通常就在文档的纯文本内容里,在生成回复时仅需极少的推理或简单的依据即可。
这一层级的显著特征是对特定外部数据片段有着清晰且直接的依赖关系。
Data Dependency
数据集D可以通过多种方式分割成文档或片段,将其表示为D_1、D_2、……、D_n,如下所示:
每个片段D_i都被认为相对较短,并且包含的内容更加聚焦、更具针对性。
对于给定的查询q ∈ Q,并非D中的每个片段对于构建回复都是必需的。设δ : Q* D ->{0, 1}来表示数据片段d ∈D对于特定查询q的必要性,其中δ(q, d) = 1意味着数据片段d是回答查询q所需要的,而δ(q, d) = 0则表示并非必需。那么,查询q的数据依赖关系(其特征是对于处理查询q而言不可或缺的片段子集)可定义为:
不难理解,Dep(q) ∈P(D),其中P(D)是D的幂集。
Definition
明确事实查询(用Q_1表示)是一类比较特殊的查询方式,它最大的特点就是能够非常直接地从数据集D里的某些特定数据片段中把答案找出来。在数据增强的大型语言模型(LLM)这个大的应用系统环境下,我们可以通过一些规则和组件来对它进行更严谨、准确的定义,以便更好地理解它是如何运作以及和其他类型查询相区别的。
明确事实查询的定义要素
检索组件r_D的作用与要求:
功能:在整个查询过程中,有一个很关键的检索组件r_D,它的作用是接收一个查询q,然后在数据集D里去查找并确定出哪些数据片段是回答这个查询q所必需的,最后输出这些相关的数据片段集合(这个集合属于D的幂集\mathcal{P}(D))。
匹配要求:而且它筛选出来的数据片段集合r_D(q)要尽可能和Dep(q)相匹配。这里的Dep(q)指的是真正回答这个查询q所不可或缺的最小的数据子集,也就是说r_D要精准地把那些最关键的数据片段都找出来,不能多也不能少,这样才能保证后续基于这些数据能准确回答查询问题。
回复生成器θ的作用与特点:
构建答案的方式:还有一个回复生成器θ,它主要负责根据前面检索组件r_D所找到的信息来构建出最终的答案a。它的工作方式通常是基于大型语言模型进行推理,不过这个推理是在给定了前面检索到的数据的基础上进行的,也就是只利用这些已经确定好的信息来生成答案,不会去额外参考其他没被检索出来的数据。
答案的准确性要求:回复生成器生成的结果θ(r_D(q))要能够等于或者非常接近正确的答案a,通过这样的要求来体现出这种查询类型的关键特性,那就是它是紧紧依赖那些明确的、可以直接获取到的事实信息来得到答案的,不需要再进行复杂的、超出已确定数据片段范围的推理或者推断过程。
定义所强调的核心要点
整个对明确事实查询的定义着重突出了一点,就是这类查询主要就是依靠直接的数据检索来获取答案。在回答这类查询时,一旦通过检索组件确定好了相关的数据片段,那后续只需要基于这些片段里的内容就能生成答案了,不需要像处理其他更复杂的查询那样,还要去深挖数据背后隐藏的逻辑、进行复杂的推理演绎或者参考更多额外的数据等,它的过程相对来说是很直接、简洁的。
在这一层级上,查询主要需要大型语言模型(LLMs)正确地检索数据,以便提供准确的回复。检索增强生成(RAG,Retrieval-Augmented Generation)技术[6]由于其有效性、灵活性以及相对较低的成本,是处理这一层级查询最常采用的技术解决方案。然而,即便采用了RAG技术,要构建一个稳健且高质量的系统仍面临重大挑战。这些挑战包括:
数据处理难题
外部数据往往是高度非结构化的,并且包含多种模态的组成部分,例如表格、图像、视频等等。此外,对这类数据进行分割或“分块”的过程中,如何保持原始的语境和含义是个难题。
数据检索难题
从大型的非结构化数据集中检索相关的数据片段可能会耗费大量计算资源,而且容易出错。难点在于开发出高效且精准的检索机制。
评估难题
评估一个RAG系统的性能,尤其是在组件层面进行评估,是一项复杂的任务。这需要制定可靠的指标,以便能够准确地衡量数据检索以及回复生成的质量。
鉴于RAG技术的流行,已经涌现出大量的文献资料和工具来应对这些挑战。在本节的剩余部分,我们将着重介绍一些针对RAG最实用且影响力较大的改进措施。此外,我们还会讨论除RAG之外可以采用的其他技术解决方案。
检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种方法,指的是语言模型在生成过程中通过动态检索外部信息来增强其自然语言生成能力。这种技术将大型语言模型(LLMs)的生成能力与从大量数据库或文档中进行信息检索的功能相结合。该过程通常通过数据索引构建、检索系统构建以及答案生成这几个环节来实现。
Data Processing Enhancement
在相应层级中,文档解析工作主要是围绕着如何从不同形式的内容(像文本、表格以及各种图表等)里提取出有用信息展开的,并且要保证提取过程有条理、连贯,最终能精准地把和查询相关的那些信息片段找出来,方便后续的检索与使用,以此来为准确回答查询问题奠定基础。
多模态文档解析
处理多模态内容的重要性及常见问题:
在实际的文档资料里,往往不只有单纯的文字内容,还会包含像图表、表格,甚至是视频这类多模态的内容。比如一份企业的项目报告文档,可能既有文字描述部分,又有展示项目进度的图表、相关数据统计的表格,或者是项目会议的视频记录等。而如何妥善处理这些不同模态的内容,使其能被有效利用起来,就成了经常要面对的问题。
两种处理方法:
转换为文本形式的方法:
第一种处理思路就是想办法把这些非文本的多模态内容都转变成文本形式,这样就能更方便地让大型语言模型去处理了。例如,对于表格来说,有专门的“表格转文本”方法(如文献[34]提及的相关技术),可以把表格里的行列数据、表头信息等按照一定逻辑规则转化成文字表述;对于图片、视频等视觉内容,也有相应的技术手段(像文献[35, 36]中提到的那些),可以把其中呈现的画面、场景等信息提取出来,转化成文字描述或者基于属性的说明,像描述画面里物体的颜色、形状、位置关系等属性内容,转化好之后大型语言模型就能像处理普通文本一样对其进行后续的分析、理解等操作了。
多模态嵌入技术的运用:
另一种方法则是借助多模态嵌入技术(像文献[37, 38, 39]涉及的相关技术),这个技术的核心是先把多模态数据(比如图像、视频等)通过特定的算法处理,得到它们对应的嵌入向量,这些向量能够在一定程度上代表原多模态数据的特征和语义信息。然后把这些检索出来的嵌入向量当作“软提示”,也就是一种辅助输入的信息,提供给模型,帮助模型更好地理解和处理包含多模态内容的文档,让模型在生成回复等操作时能考虑到这些多模态信息所蕴含的意义。
分块优化
分块操作的必要性及特点:
当面对长篇的文本内容时,为了便于管理、检索以及后续的处理,通常需要把整个文档分割成一个个相对较小的文本块,这是很常见且必不可少的操作。不过,文本块大小的选择是有讲究的。如果文本块划分得比较大,好处是它能保留更多的上下文语义连贯性,也就是能让文本中的语义逻辑、前后关系等保持得更完整,不会因为分割而被破坏得太厉害;但与此同时,大块的文本里面往往会夹杂着很多和核心内容关联不大的“干扰信息”或者说“噪声”,这可能会给后续的检索、分析等操作带来一定麻烦。
常用的分块策略:
固定大小分块:就是按照预先设定好的固定字数、字符数或者段落数量等标准,把文本均匀地分割成一个个大小相同的块,这种方法比较简单直接,但可能不太灵活,有时会切断原本完整的语义内容。
递归分块:它会按照一定的层次结构或者逻辑关系,不断地对文本进行细分,比如先按照大的章节主题把文本分成几个大块,然后再对每个大块进一步按照更小的主题或者段落关系继续细分,有点像层层嵌套的划分方式。
滑动窗口分块:设定一个固定大小的窗口(类似一个框框),这个窗口沿着文本从头到尾依次滑动,每滑动到一个位置,窗口内包含的文本内容就形成一个文本块,这样可以保证文本不同部分都能以合适的窗口大小被分割出来,但可能会有部分内容在不同窗口中重复出现。
基于段落的分块:直接以文档中原有的段落为单位进行分块,尊重文本原本的结构划分,操作相对简便,不过可能会因为段落长短不一,导致文本块大小差异较大。
语义分块:依据文本的语义内容来进行划分,比如通过分析句子之间、段落之间的语义关联程度,把语义联系紧密的部分划分为一个块,这种方式更注重内容的内在逻辑,但实现起来往往需要比较复杂的语义分析技术。
基于查询需求的分块选择与处理:
根据查询确定合适粒度:有一些方法会先去判断具体的查询问题需要多详细的信息,也就是确定查询对文本内容精细程度的要求。比如,如果是一个比较宽泛的、只需要大概了解某主题整体情况的查询,可能就选择粒度较大、包含内容较多的文本块;而如果是一个需要深入了解某个具体细节的查询,那就会挑选粒度更细、信息更聚焦的文本块来进行检索,以此来满足不同查询的需求。
处理成高信息完整性的小片段:还有些方法的思路是把文本进一步处理,提炼出更小的片段,不过这些小片段不是随意划分的,而是要保证每个小片段都能保持比较高的信息完整性,让其在被检索和使用时依然能准确传达关键内容,避免因为分割而丢失重要信息。
利用视觉模型按结构分割文本:另外,存在一些做法是借助视觉模型,特别是针对那些有特定格式、排版的文档(比如有图表、分栏等复杂排版的文档),按照文档原本呈现出来的视觉结构来对文本进行分割,使得分割后的文本块更贴合文档的实际布局和逻辑关系,方便后续准确提取和利用相关信息。
Data Retrieval Enhancement
信息检索(IR)技术能应用到检索增强生成(RAG)应用里,其包含建立数据索引、处理查询、检索与匹配、重新排序以及评估这几个主要步骤。下面分别对各步骤涉及的具体内容和相关方法展开介绍。
建立数据索引(Indexing)
目的及分类:这一步是为了构建从搜索词到文本片段的映射关系,由此确定检索系统运行逻辑。索引方法主要分稀疏检索、密集检索、混合检索这三类。
稀疏检索:
特点与常用技术:它是最早因简单直观被广泛运用的索引方法,像TF-IDF(词频 - 逆文档频率)和BM25这类技术,会依据文本片段中字词相对频率来确定最具代表性的关键词,至今在很多RAG项目里仍常用。
局限及解决办法:不过字词匹配方法存在缺陷,因无法识别同义词可能导致检索遗漏。对此,可采用KNN(最近邻算法)进行基于相似度的关键词匹配,或者把关键词索引转变为对应文本片段查询词概率预测的形式来弥补不足。
密集检索:
基本做法:通常利用预训练或微调过的文本编码器,把文本映射到契合查询要求的密集向量空间中。比如基于BERT的编码器,常用DPR、ANCE、SimCSE、TAS-B等方法在无监督数据上微调成密集检索器,也有采用无监督对比学习(如Contriever)微调的情况。
与LLMs结合及探索:利用大型语言模型(LLMs)的反馈引导检索器训练目标,能增强其与LLMs适配性。基于LLMs的密集检索已成为热门探索领域,像LLM2vec通过修改预训练LLM的注意力机制并采用特定训练方法生成相应嵌入器,Llama2Vec基于LLaMA架构利用两个前置任务训练出密集检索编码器,都提升了检索性能。
混合检索:将稀疏检索和密集检索结合很有效,既能关注文本片段核心主题又能兼顾全局特征。有的研究先确定回答查询的知识领域,再用密集检索在此领域召回补充信息;还有很多研究探索不同的二者结合方式来捕捉语义信息、提高段落检索精度。另外,也有通过微调LLM使其具备索引和检索能力,让其能自主生成数据索引和文本片段的做法。
查询文档对齐(Query Document Alignment)
目标及对齐方式:旨在把查询与外部数据中的文档片段对齐,找出辅助回答查询的最佳文档片段,主要有传统对齐、文档域对齐、查询域对齐这三种方式。
传统对齐:把文档片段和查询都映射到同一个编码空间中,基于双编码器的密集检索架构常设有专门查询编码器来实现这一点。若采用稀疏检索,就得从查询中提取关键词搜索,还可通过查询改写技术提高搜索精度,改善因用户术语或描述问题导致的搜索准确性不足。
文档域对齐:先生成合成答案,再利用这些答案召回相关数据,以此解决查询和检索数据不在同一分布空间的问题,HyDE就是这方面比较典型的成果。
查询域对齐:为每个文本原子单元生成合成问题,将文本片段映射到查询空间,检索与原始查询最接近的合成问题及其对应文本片段,确保选出最相关、语境合适的片段回复查询。SlimPLM通过小型代理模型生成启发式答案来预测所需知识,为查询与文档空间对齐提供了有效途径。
重新排序和修正(Re-ranking and Correction)
在检索出排名前k的文本块后,RAG系统要对其筛选和重新排序。多数系统以检索器提供的相关性分数为排序依据,也有研究采用困惑度、困惑度增益等特定指标作为排序标准。此外,还有利用LLMs评估文本块可信度和实用性、训练奖励驱动的上下文适配器优化检索器输出,或者预训练小型事实核查语言模型过滤不正确文本块等不同方式,来提高召回文本的质量。
递归检索或迭代检索(Recursive Retrieval or Iterative Retrieval)
鉴于单次检索准确性存在固有局限,有效的应对策略是进行多次检索来逐步解决可能遗漏的问题。比如金等人(2023)提出树状递归检索方法,结合剪枝策略把有歧义的问题逐步分解为无歧义问题以得到接近正确的答案;SEATER则利用k - 均值算法构建待检索项目的层次树结构,迭代地召回树结构内的节点。
Response Generation Enhancement
生成回复需要判断检索到的信息是否充足,或者是否还需要额外的外部数据。处理检索到的知识与模型内部先验知识之间的冲突同样至关重要[84, 85, 86]。有监督微调是提升检索增强生成(RAG)系统生成性能的一种有效方法。
当检索到的上下文信息存在不相关或错误的内容时,预训练的大型语言模型往往很容易被误导,进而产生错误的回复。许多研究表明,通过巧妙地为RAG系统设计训练数据,进行微调或预训练能够有效地缓解这一问题[87, 88, 89]。通过实验分析,RAAT(检索增强微调)[89]证明了无关检索噪声、相关检索噪声以及反事实检索噪声对RAG模型的不利影响是逐渐递增的。通过将这些因素融入训练过程,这些方法能够让大型语言模型(LLM)从内部识别出存在噪声的上下文,即便在检索结果存在噪声的情况下,也能使回复生成的质量得到显著提升。
此外,为确保RAG系统内检索器和生成器之间的性能更加一致,一些研究在训练阶段对检索器和生成器进行联合训练[90, 91, 92]。
二级查询的总体特点
数据依赖与推理要求:二级查询所涉及的数据依赖关系不像一级查询那样直观明显,不是直接就能找到对应答案的。它往往需要运用一些常识性的推理或者进行基本的逻辑推导才行。比如说,要回答这类查询,可能需要从不同地方把相关信息收集整合起来,这些信息可能分散在多个文档的不同部分,而且还得在收集的基础上进一步推断,才能最终得出答案。
信息收集与处理难度:当处理这类查询时,仅靠一次简单的检索操作通常没办法获取到全部所需信息,因为它需要的信息量可能比较大,涉及多个文档的内容。所以就需要把原始的查询问题拆解成好几个子查询,然后分别进行检索操作,最后再把这些检索得到的结果汇总起来,形成一个完整、全面的答案。同时,这一层级的查询主要依靠常识推理来处理信息,不像更高级别的某些查询那样,必须要特定领域的专业知识才能解决。
二级查询的定义要素
基于一级查询的分解关系(r_D相关):
对于任意一个二级查询q以及它对应的答案a,首先要知道存在一组属于一级查询(Q_1)的明确事实查询,比如{q_1, q_2, ......, q_m}。这些一级查询都有个特点,就是能够直接从数据集D里的特定数据片段中检索到答案,也就是比较简单直接的那种查询类型。而且它们之间存在这样一种关系:r_D(q)=U_{i = 1}^{m} r_D(q_i)。这意味着,用来识别回答二级查询q所需要的数据片段的操作r_D(q),其实就是把回答各个一级子查询q_i所需要的数据片段(通过r_D(q_i)来识别)合并起来。换个角度说,把这些一级查询对应的相关数据片段都找全了,汇总在一起,就包含了回答二级查询q所必备的全部信息了。
回复生成器的作用(θ相关):
还有一个重要的部分就是回复生成器θ,它通常是基于大型语言模型进行推理的,不过会按照一定的规则来生成答案。具体来说,它先是分别针对每个一级子查询q_i,通过θ(r_D(q_i))得到相应的回复,然后把这些回复汇总起来,再运用常识推理进一步加工处理,最终推导出一个完整的答案a,而这个答案在原始的数据集中并不是直接写明了的,是经过这样一系列处理才得出来的。并且要求最终生成的回复θ(r_D(q))要和正确答案a比较接近,以此来证明二级查询q确实可以通过先拆解成一级查询,再汇总这些一级查询的回复这种方式来有效得到解答。
定义所强调的核心要点
整个对二级查询的定义重点在于突出它的处理方式,也就是依赖于一种能力——把比较复杂的查询分解成多个简单的、属于一级的明确事实查询,然后利用这些简单查询能够直接获取信息的优势,把它们的答案组合起来,经过进一步的常识推理等操作,最终生成针对原始复杂的二级查询的正确回复。这种分层定义和处理逻辑,有助于更清晰地理解在不同复杂程度下查询是如何依托数据和相应机制来得到答案的。
在这一层级,查询仍然围绕事实性问题展开,但答案并不会在任何单个文段中明确呈现出来。相反,它们需要通过常识推理将多个事实结合起来才能得出结论。二级查询面临的挑战主要包括:
自适应检索量
不同的问题可能需要检索不同数量的上下文信息,而且具体需要检索的上下文数量取决于问题本身以及数据集的情况。固定数量的检索可能会导致信息噪声(检索到过多无关信息)或者信息不足的问题。
推理与检索之间的协调
推理能够引导确定需要检索内容的重点,而从检索到的信息中获得的见解又可以迭代性地优化推理策略。应对这些复杂情况需要对外部数据进行智能整合以及有选择性地利用,充分发挥大型语言模型(LLMs)内在的推理能力。
应对这一层级挑战的方法包括迭代式检索增强生成(RAG)、基于图/树的检索增强生成(RAG)以及结合结构化查询语言(SQL)的检索增强生成(RAG)等等。
隐含事实查询和多跳检索增强生成(RAG)任务有着相似之处,它们都不是能一步到位获取答案的简单情况,而是需要经过多个步骤、多次操作来不断完善信息,最终才能得到正确答案。在这个过程中,有不同类型的方法来对多步骤的RAG流程进行动态控制,下面分别介绍基于规划的方法和基于信息差距填补的方法。
基于规划的方法
核心思路与作用:
这类方法重点在于通过生成检索计划来让整个检索过程更有条理、更高效。具体来说,它会在开始检索之前的预检索阶段,或者在实际检索正在进行的过程中,动态地制定出一个按步骤进行的检索计划。这个计划就像是一个导航,能够明确每一次检索应该重点关注什么内容,从而让迭代式的RAG系统知道朝着哪个方向去收集信息,避免盲目检索,使得整个检索过程更加有的放矢,有助于更高效地获取到最终回答问题所需的全部信息。
具体方法示例:
ReAct(推理与行动):它在运作时会不断地更新每一步的目标,比如在回答一个比较复杂的问题时,第一步可能先确定大致的知识范围去检索,检索到部分信息后,分析目前掌握的情况和最终答案之间还存在哪些知识空缺,然后把下一步检索的目标更新为去填补这些空缺,就这样逐步缩小和最终答案之间的差距,就好像一步一步朝着目标靠近,让每一次检索都更有针对性,减少回答问题时还欠缺的知识量。
IRCoT(信息检索与思维链)和RAT(检索增强微调):它们利用思维链的方式来引导整个RAG流程。思维链可以简单理解为一种逻辑链条,把每一次检索获取到的信息串联起来,依据前面已经检索回来的信息去分析、判断,进而决定当下这一轮检索应该把重点放在哪里,也就是确定当前的检索目标是什么,通过这样的方式让整个检索过程沿着合理的逻辑推进,不断积累和完善回答问题所需的信息。
GenGround:它为大型语言模型(LLMs)设定了一种交替进行的工作模式来获取最终答案。首先进入第一个阶段,模型会把复杂的问题拆解成一个相对简单的单步问题,然后针对这个简单问题直接给出答案;接着进入第二个阶段,模型会把这个问答对(也就是问题和刚生成的答案)和之前检索到的文档进行对照,看看答案里有没有不准确的地方,对其进行验证和修正。通过这样不断地在两个阶段之间来回切换、完善,保证最终生成的回复既可靠又准确。
基于信息差距填补的方法
核心思路与作用:
这类方法聚焦于在检索和生成答案的过程中,不断发现还存在的知识空白、信息不足的地方,然后针对性地去填补这些空缺,从而让答案越来越完整、准确。它是基于一种认识,即在每一轮生成答案的时候,可能由于现有知识有限,答案并不完美,会存在一些未知的部分,那就需要继续去检索更多信息,然后基于新获取的信息再次生成答案,不断重复这个过程,逐步把答案完善起来。
具体方法示例:
ITRG(迭代检索生成协作):它构建了一个迭代检索 - 生成协作的框架,操作过程是先依据已经掌握的知识尝试生成一个初步的答案,然后对这个答案进行分析,看看哪些地方还不清楚、不完整,也就是找出答案中的未知部分,接下来在后续的轮次里,针对这些未知部分再次去进行检索,获取新的信息后,又基于新信息对答案进行更新、完善,如此循环往复,使得答案不断朝着准确、完整的方向发展。
FLARE(灵活语言模型增强检索):在每一轮迭代生成答案的过程中,它会着重关注答案里那些概率比较低的词元(可以简单理解为从语言模型角度看,不太确定、不太可靠的词语部分),对这些部分进行重新审视,分析是不是因为信息不足或者不准确导致的,如果是,就根据情况去修改这些词元,通过这样不断优化答案里的细节,提升答案的质量。
Self - RAG(自主检索增强生成):这种方法是对大型模型进行一种特殊的微调,让模型具备自主判断的能力,它可以自己决定什么时候该去进行检索操作,去收集更多信息,什么时候感觉信息收集得差不多了,就停止检索,开始利用已有的信息去回答问题,就好像给模型赋予了一种自我管理、自我决策的能力,使其能更灵活地应对不同问题的检索和回答需求。
隐含事实查询需要整合多方面参考信息,而图或树结构因其能很好地展现文本间的关系,所以在解决这类查询相关的数据检索问题上很有优势。下面分别从传统知识图谱以及数据块图/树这两方面来进一步阐述如何利用它们应对隐含事实查询。
传统知识图谱
基本概念与作用:
传统知识图谱是一种特定的结构化表示形式,里面的每个节点代表一个实际的实体(比如人物、地点、事物等具体的概念),而节点与节点之间的连线(边)则清晰地表明了这些实体之间存在的关系(像“属于”“关联”“因果”等关系)。它对于大型语言模型(LLMs)来说,是一种能提升其效能的重要结构,有助于模型更好地理解和运用知识。
发展路线图相关内容:
知识图谱增强的大型语言模型(KG - enhanced LLMs):
在大型语言模型的整个生命周期里,预训练阶段和推理阶段都引入知识图谱意义重大。在预训练时,结合知识图谱能让模型接触到更有条理、有结构的知识关系,就好像给模型学习知识搭建了一个清晰的框架,帮助它更深入地理解所学内容;到了推理阶段,知识图谱里蕴含的各种实体关系又能辅助模型更准确地分析问题、推导答案,让模型依据已有的知识结构去思考和处理新的查询情况,从而提升其回答问题的质量和准确性。
大型语言模型增强的知识图谱(LLM - enhanced KGs):
大型语言模型本身具有强大的语言处理能力,利用它来助力知识图谱相关的各类任务也很有价值。例如在嵌入任务中,能帮助把知识图谱里的实体等元素更好地转化为适合计算机处理、且能体现语义关系的向量表示形式;在知识图谱补全任务上,凭借其对文本语义的理解,可以推测出图谱中缺失的部分关系或实体;在构建新的知识图谱时,利用它来分析文本资料,提取关键信息构建节点和边;还能进行图到文本的生成,把图谱里蕴含的知识用自然语言表述出来,方便人们理解,以及用于问答场景,依据图谱里的知识结构去准确回答关于图谱中实体和关系的各类问题。
大型语言模型与知识图谱协作的方法(collaborative LLMs + KGs approaches):
这里强调两者相互配合、互为补充。它们之间不是独立运作的,而是通过数据和知识驱动的双向推理过程来让彼此变得更强。比如说,知识图谱可以给大型语言模型提供准确的实体关系知识作为基础,让模型在这个基础上进行推理;反过来,大型语言模型基于其对自然语言的理解和推理能力,能帮助知识图谱进一步完善、拓展,或者在面对具体查询时,更好地挖掘图谱里有用的知识来回答问题。像Rigel - KQGA模型就是这种协作的典型体现,它作为一个问答模型,会先根据查询内容预测在知识图谱里需要用到哪些节点(也就是相关的实体等知识元素),然后把这些和大型语言模型结合起来,综合两者的优势去生成最终的答案。
相关应用示例:
Think-on-Graph和KnowledgeNavigator这两项研究工作,首先会从查询语句里把涉及的实体提取出来,然后以这些实体为出发点,在知识图谱上按照广度优先搜索(BFS)的方式去遍历图谱,寻找与之相关的其他节点和关系,在这个过程中,把大型语言模型当作一个具有思考能力的“大脑”,依靠它来判断在搜索过程中哪条路径是最优的探索方向,哪些部分可以进行剪枝(也就是去除不必要的搜索分支),从而更高效地在图谱里找到能回答问题的关键信息。而R3则是另一种思路,它借助大型语言模型提出一些可能解决查询问题的常识性公理(也就是大家普遍认可的一些道理、规则等),然后依据这些公理,按照顺序去搜索知识图谱里相关的子图谱部分,每搜索一部分就评估一下当前获取到的信息是不是足够用来回答查询了,如果不够就继续搜索其他相关子图谱,一直重复这个过程,直到最终把问题解决,成功得到答案为止。
数据块图/树
背景与构建思路:
大型语言模型本身阅读理解能力很强,所以有时候不需要把文本拆解到特别细的实体和关系层面,也能理解文本的大致意思。基于这个特点,研究人员想到把文本或者数据按照一定的块状划分,将这些文本块或数据块当作图或者树上的节点,然后通过边来表示它们之间的关系。这些关系可以是比较高层次、概括性的,也可以是经过精心设计、更细致复杂的,以此构建出一种新的结构来辅助处理隐含事实查询问题。
不同方法及应用示例:
知识图谱提示(Knowledge - Graph - Prompting):
它主要聚焦于三种常见的需要挖掘隐含事实的问题类型。衔接性问题通常需要按照一定的先后顺序进行推理,比如要根据事件发生的先后顺序、因果的先后逻辑等来推导答案;比较性问题则是要在不同的文段内容之间进行并行对比、分析,才能找出差异或者共同点等隐含事实;结构性问题需要依据文档本身的结构特点去获取相应部分的内容来回答问题。为了处理这些不同类型的问题,它会运用像实体识别技术先把文本里涉及的实体找出来,利用词频 - 逆文档频率(TF - IDF)来判断词语的重要性,借助最近邻算法(KNN)寻找相似的内容,同时考虑文档结构的层次关系,通过这些手段综合起来构建文档图,并且从这个图里提取出合适的子图,最终依靠这些子图来回答具体的查询问题。
MoGG:
它把一到两个句子看作是最小的语义单元,将这些单元作为图上的节点,然后根据节点之间语义的相似程度来构建边,也就是把语义相近的句子连接起来。而且它还额外训练了一个预测器,这个预测器的作用是判断回答一个查询问题大概需要多大范围的文本内容,也就是通过确定需要的子图大小,来明确回答问题所需要的文本粒度,使得在查找和整合信息回答问题时更有针对性,避免信息过多或过少的情况。
RAPTOR:
为了能够捕捉到文本块之间更高级别、更抽象的语义关系,它采用聚类算法对最细粒度的文本块进行分层聚类操作。想象一下,就好像把文本块按照它们的语义相似性一层一层地归类分组,在每一个层次级别上,都会对这些归类后的文本块所蕴含的新的语义信息进行总结提炼,这样当要回答查询问题时,就能从这个像树形结构一样层层折叠起来的节点集合里,快速提取出最关键、最必要的信息,为生成准确答案提供有力支持。
GraphRAG:
同样也是采用聚类的思路,先是依据文本块之间的语义相似性把最小的文本块连接起来,然后运用社区检测算法把这些连接起来的节点进一步分组,形成一个个类似社区的集合。最后,在面对查询时,通过分析每个节点社区内的相关响应情况,把这些局部的信息综合起来,总结出关于这个查询的全局答案,以此来完成对隐含事实查询的回答。
在处理结构化数据时,将自然语言查询转换为结构化查询语言(SQL)(即自然语言转SQL,NL2SQL)会是一种有效的方法。像Chat2DB之类的工具能够通过将用户查询转换为数据库查询来助力这一过程。在大型语言模型时代,文本到SQL(text-to-SQL)领域已经取得了重大进展[105, 106, 107, 108],这使得我们可以利用这些工具从结构化数据库中检索信息。这种能力可作为一种很有价值的外部数据源,用以增强大型语言模型(LLMs)的生成能力。
通过整合文本到SQL工具[109],大型语言模型能够访问并融入结构化数据,提升其生成更准确且契合上下文相关回复的能力。这种整合不仅提高了生成内容的深度和质量,还拓展了大型语言模型应用的范围,使其能够执行需要与数据库内容进行交互及解读的更为复杂的任务。
是否使用微调部分
微调对LLMs获取新知识的影响:
大型语言模型(LLMs)在自然语言处理等诸多方面展现出强大能力,但在通过微调来获取新的事实性知识时,却面临不少难题。所谓微调,就是在已经预训练好的模型基础上,利用新的数据进一步调整模型的参数,让它能适应新的任务或者掌握新的知识。然而,一些研究发现,在这个过程中,模型很难真正把新的事实知识融入进去。比如,给模型输入一些新的关于科学常识、历史事件等事实性的数据进行微调,模型并不能很好地理解和吸收这些内容,将其转化为自身可用的知识储备。
微调导致的性能问题及表现:
这种难以有效获取新知识的情况进而引发了一系列负面效果。一方面,模型整体生成准确回复的性能会受到影响,原本能够相对准确回答的问题,经过微调后,回答的准确性反而下降了。另一方面,还出现了更多“幻觉”现象,也就是模型会生成一些看似合理,但实际上与事实不符的内容。例如,在问关于某个历史人物的生平事迹时,微调后的模型可能会编造出一些不存在的事件或者细节来作为回答。
机械记忆及理解局限问题:
而且,当用新的事实数据对LLMs进行微调时,模型往往只是机械性地记住了这些事实陈述,就好像死记硬背一样,并没有真正理解其中的内涵。从一个现象就能看出来,只要稍微改变一下这些已经记住的事实的表述方式,模型就没办法正确运用这些知识了,说明它对这些新知识的理解和记忆仅仅停留在很浅的表面层次,没办法灵活运用,一旦形式稍有变化就“失灵”了。这也充分暴露出当前微调这种方式在帮助模型学习新知识方面存在的不足,所以迫切需要探索更巧妙、更有效的方法,来让模型能真正把新信息整合好并且能适应实际应用的需求。
是否区分不同层级的事实查询部分
明确事实查询与隐含事实查询的特点及差异:
明确事实查询和隐含事实查询都和事实相关,但它们有着明显的不同特点。明确事实查询相对简单直接,通常能从单个的数据片段里找到答案,比如问“某本小说的作者是谁”,只要在对应的书籍信息数据里找到作者那一项就可以了,一般不需要综合太多其他额外的信息,只需要检索固定的、少量的外部数据就行。而隐含事实查询就复杂得多,它的答案不会直接呈现出来,需要把多个相关的事实结合起来,并且要根据具体的查询上下文动态地整合各种信息才能得出答案。例如问“某部电影在当年上映时为何能获得高票房”,可能就需要综合电影的题材、当时的市场环境、同期竞争影片情况等多方面的信息来分析回答,不是从某一处简单的数据就能直接知晓的。
误分类查询的不良后果:
如果在构建数据增强的大型语言模型应用时,把这两种查询类型弄混了,会产生不少问题。要是把明确事实查询错误地当成隐含事实查询,模型就会去检索大量不必要的信息,以为需要像处理隐含事实查询那样综合很多内容,但实际上那些多检索出来的信息只是表面上和问题相关,对真正回答问题并没有实质帮助,这样不仅会误导模型往错误的方向去思考和生成答案,还白白浪费了计算资源,拖慢整个处理过程。反过来,要是把隐含事实查询误判为明确事实查询,那模型就只会按照简单的、检索少量固定数据的方式去操作,没办法获取到足够全面、足够多的外部辅助数据,也就没办法把需要综合多方面信息的隐含事实查询回答好,最终导致模型生成的答案质量不高,整体性能表现不佳。
区分查询层级的重要性及相关努力:
所以,基于对要处理的目标任务有清晰、透彻的理解,提前把查询所属的层级区分清楚是非常有好处的,这样才能采取合适的策略去检索数据、生成答案。除此之外,研究人员也在想办法让模型自身具备判断能力,投入了很多精力去训练模型,让它能够自主地评估检索到的信息是不是足够用来回答问题,像self-RAG(自检索增强生成)这种方法就是这方面的一个典型尝试,通过让模型自己去判断信息够不够,进一步提升其应对不同类型查询的能力,提高整体应用的效果。
整体背景与查询分类概述
在特定的应用场景中,存在一些查询,它们在解答时不能仅依靠已有的知识,还需要借助外部数据来提供相应的依据,也就是要依靠外部数据里所蕴含的一些逻辑、思路等内容来支撑答案的合理性。而且这类查询对使用者的要求比较高,不仅要知晓事实本身,还得理解和运用与数据所处领域相关的特定依据,根据这些依据的性质差异,将其划分为基于可解释依据的查询和基于隐含依据的查询这两大类,接下来着重介绍基于可解释依据的查询相关内容。
可解释依据查询的特点
它在依靠外部数据找依据的各类查询里,属于相对容易理解和处理的类型。其关键特点在于辅助解答这类查询的外部数据往往会把解决问题时所运用的思维过程清晰明白地展现出来,让人能够比较直观地明白为什么要这么做、依据是什么,便于使用者参考这些依据去找到查询的答案。
数据组织形式
纯文本形式:
文本描述是最为常见的用来呈现可解释依据的方式,在实际生活和各专业领域中都广泛存在。像专业领域里的专业手册、官方出台的指南,还有针对特定领域的详细说明书、操作指南等,都属于此类文本。这些文本可不是简单的文字罗列,它们详细地梳理了在面对复杂情况、解决复杂问题时的推理步骤和决策思路。例如,美国食品药品监督管理局(FDA)为制药厂制定的指南,里面会清楚地说明在药品生产的各个环节,依据什么标准、怎么去把控质量、出现问题怎么处理等;而给医生的用药指南,则会阐述针对不同病症、不同患者情况,选择何种药物、用药剂量怎么确定、用药周期如何安排等思维过程,这些文本就相当于把专家们在处理相关专业问题时的“思考路径”呈现了出来,方便其他人学习和参考,以应对类似的情况。
结构化指令形式:
除了纯文本形式,还有一种更具结构化特点的呈现方式,也就是把依据以更明确的推理关系或者决策路径的形式展现出来,这里提到了两种类似的计算理论模型概念,即文本条件摩尔机(Text - Conditioned Moore Machine)和文本条件米利机(Text - Conditioned Mealy Machine)来帮助理解。
文本条件摩尔机方面:
摩尔机本身是一种有限状态机,在这种机制下,它的输出值仅仅取决于当前所处的状态。不过这里有个特殊点,控制状态转换的条件是通过文本形式来表达的,不像传统的程序依靠原生代码去运行和判断,这就需要大型语言模型(LLMs)去解读这些文本条件,进而明白状态是怎么转换、输出值怎么确定的。比如说一个客服人员,手里有一本处理用户各种请求的手册,这个手册就类似一个文本条件摩尔机的体现,客服人员所在的当前状态(比如正在处理用户要求更换产品这个阶段),以及手册里规定的对应这个状态下的处理方式(输出值,比如接下来要询问用户产品的相关情况等),都是依据手册里用文字描述的各种条件(比如用户提出更换产品的具体要求、产品的类型等文本描述的情况)来决定状态转换和相应操作的,客服人员通过遵循手册里这种文本形式呈现的规则来完成整个服务流程。
文本条件米利机方面:
米利机同样是有限状态机,但是它的输出值不是只由当前状态决定,而是由当前状态以及输入值共同决定。具体来说,在执行一些操作(比如进行应用程序编程接口调用,即API calls)时,不仅要看当前处于什么状态,还要看从之前状态转换过来时关联的文本消息内容(也就是输入值的一部分),综合这些因素来确定要采取的动作。在实际的专业领域中,像很多特定领域的工作流程、决策树或者伪代码等格式都可以用来表示这种依据。例如,一个软件开发项目的流程管理中,用决策树来呈现不同阶段(不同状态)下,根据用户反馈(输入值里的文本消息部分)、项目进度等情况,决定是进行代码修改、功能测试还是进入下一阶段开发等操作,这就是一种基于文本条件米利机概念的依据呈现方式,通过这种结构化且结合文本条件的形式,清晰地展示出整个决策和操作的逻辑链条。
在可解释依据查询这一领域,将特定领域的依据以一种易于理解的方式整合进大型语言模型(LLMs)是一项额外的挑战。主要挑战如下:
提示优化成本
提示优化的过程在时间和计算资源方面有着较高的要求。不同的查询需要专门定制的背景知识以及决策标准,这就意味着需要各种各样的示例。虽然人工设计的提示可能会非常有效,但这种方式耗费人力且耗时。而且,训练模型使其能够针对各类不同的查询生成定制化提示,还会产生大量的计算开销。
可解释性有限
提示对大型语言模型的影响是不透明的。在很多情况下,通常无法访问大型语言模型的内部参数,这使得确定不同提示对这些模型产生的影响变得复杂起来。这种缺乏透明度的情况,阻碍了我们持续理解并验证大型语言模型针对不同提示所做出回复的可解释性的能力。
可解释依据查询与外部依据整合的关键问题
在处理可解释依据查询时,核心要点在于怎样把外部数据里包含的各种依据顺利融入大型语言模型(LLMs),并且要保证模型能够精准地依照这些依据去开展后续的运算、生成合适的回复等操作,就好像让模型“读懂”并严格遵循这些外部依据所设定的规则一样。
相关示例展示整合思路与成果
Text2MDT(文本转医疗决策树):
Text2MDT [112] 为解决上述关键问题给出了一个实际可行的例子。它聚焦于医学领域,提出了两种专门的方法,用于从医学指南以及医学教材这类外部资料里自动提取出医疗决策树。要知道,医学资料往往篇幅很长、内容繁杂,而决策树这种形式能够把其中隐藏的逻辑关系清晰地梳理出来,将复杂的诊断、治疗等流程以一种更直观、有条理的结构展示,让人们更容易明白医学决策背后的逻辑链条,也有助于模型更好地理解和运用这些医学依据。
MedDM(医学决策模型):
MedDM [113] 在医学领域也有重要贡献,它开发出了一种特别的格式,也就是临床指导树(CGTs)格式,并且这个格式是能够被大型语言模型执行的。在此基础上,它还进一步提出了针对这些可执行临床指导树进行推理的具体方法,以及构建了一个用于患者和大型语言模型之间开展多轮对话的框架。这意味着在实际应用中,患者可以和模型围绕病情等问题进行多轮交流,模型依据临床指导树里的依据来回复患者,模拟专业医疗场景下的沟通与决策过程,让医学依据通过模型更好地服务于实际的医疗咨询场景。
InstructRec(指令推荐):
InstructRec [114] 的关注点则放在推荐系统领域,它充分挖掘大型语言模型在这方面的能力优势。通过设计一种通用的格式,这个格式能够用自然语言去详细描述用户的各种偏好(比如喜欢什么类型的商品、服务风格等)、意图(是想要购买、了解还是对比等意图)、任务形式(是单纯查询信息、进行商品筛选还是完成交易等)以及所处的具体上下文环境(比如在什么平台、什么时间段等)。借助这样的格式,打造出一个基于语言的推荐系统,使推荐过程更加贴合用户的实际情况,提高推荐的准确性和有效性,也就是把相关的推荐依据通过自然语言的形式整合进模型,让模型依据这些依据来做合理推荐。
提示微调技术的重要性及应用
整合依据面临的问题及解决方向:
仅仅把外部依据简单地以自然语言指令的形式直接放进大型语言模型里,实际效果可能不太理想,很难让模型达到最佳的性能表现。而且要是靠人工去设计提示语(也就是给模型的引导信息,帮助它理解如何运用依据),那会耗费大量的时间和人力成本,效率很低。所以,为了让模型能更好地遵循这些特定的外部依据,采用提示微调技术就变得非常关键了,它能够帮助改善模型运用依据的能力。
基于强化学习的方法及案例:
TEMPERA(基于强化学习的提示优化框架)框架:
强化学习在这个过程中发挥了重要作用,像TEMPERA框架[115]就是很好的例子。它在强化学习所设定的动作空间里进行提示语的设计,这个提示语里包含了有限的指令(告诉模型大概要做什么)、示例(给出一些类似情况的示范)以及表述词(规范回复的表述形式等)等内容。在这个框架里,把大型语言模型能够生成正确回复的概率当作一种奖励机制,就好比模型做对了题目就能得到奖励一样,通过这样的奖励引导,模型会不断去尝试不同的提示配置,在不同的数据集上寻找最能让自己表现好、生成正确回复的那种最优提示配置组合,从而更好地依据外部依据来回答问题。
Rlprompt(强化学习提示):
Rlprompt [116] 同样运用了强化学习的手段,不过它的侧重点在于训练一个适配器。这个适配器主要是为了帮助那些相对较小的语言模型,让它们能够根据大型语言模型回复的相对准确性反馈信息,来生成最佳的提示语。比如说,小模型一开始生成的提示可能不太准确,导致大型模型回复不太理想,通过这个适配器分析反馈回来的准确性情况,不断调整小模型生成的提示语,让其越来越合适,进而提升整个系统运用依据回答问题的能力。
定向刺激提示:
还有一种创新的策略叫定向刺激提示,它把大型语言模型在下游任务(也就是具体应用场景下执行的各种任务)中的表现当作奖励机制。具体操作是训练模型去提取和利用一些定向刺激元素,这些元素其实就是针对每一个具体实例专门定制的特定线索或者关键词,把它们作为提示语提供给模型。这样一来,模型接收到这些很有针对性的提示后,其后续的行为(比如生成回复、做决策等)就能和预期的结果更加吻合,更符合依据所设定的要求,有效提升了模型依据外部依据开展工作的准确性。
离散提示空间内的优化方法
GrIPS(基于编辑的提示优化系统):
在离散提示空间(也就是提示语可以进行离散变化的一种设定空间,比如通过增减字词、替换字词等操作改变提示语)的优化方面,像GrIPS [117] 这样基于编辑的方法就派上用场了。它的做法是先选取一个小数据集当作评分集,然后针对提示语开展各种各样的编辑修改操作,这些操作包括删除一些字词看看效果、把某些字词进行替换、用同义表述进行转换或者添加一些新的字词等,通过不断尝试这些不同的修改方式,再依据评分集里的数据反馈来快速且有效地判断出哪种提示语的配置是最有效的,从而找到最优的提示语形式,帮助模型更好地依据外部依据来运作。
利用大型语言模型自身助力提示优化的进展
OPRO(优化提示生成与评估):
近期的发展中出现了利用大型语言模型自身来让提示优化变得更便捷的情况,比如OPRO [120] 就是这样一个例子。它借助大型语言模型,一方面可以依据过往的历史数据以及和这些数据相关联的性能指标(比如之前根据某些提示语回答问题的准确率等情况)来生成新的提示解决方案,也就是创造出新的提示语可能性;另一方面,还能对这些新生成的提示语进行评分,判断它们的好坏,通过这样的方式把整个提示优化的过程变得更加高效、简洁,让模型能更快地找到适合依据外部依据来回答问题的提示语形式。
Reflexion(反思优化)框架:
Reflexion框架[121] 提出了一种很新颖的基于语言反馈的提示优化方法。它利用语言模型去分析大型语言模型的输出内容,然后把对这些输出内容的反思(比如哪里回答得好、哪里不符合依据要求、下次怎么改进等思考内容)存储在一个情节记忆缓冲区里。这个缓冲区就像是一个经验积累的仓库,在后续的交互过程中,模型可以利用里面存储的这些历史积累下来的见解,去完善自己的决策过程,对新的输出结果进行更合理的评估,从而不断优化依据外部依据回答问题的表现,让模型越来越贴合外部依据的要求来生成回复和做决策。
复杂依据与推理方法
在面对需要处理复杂依据的情况时,大型语言模型(LLMs)不能像处理普通事实查询那样简单地对分散的事实信息进行推理,而是要构建起较长的推理链条,进行更深入、连贯的思考过程。在这个过程中,像思维链(Chain-of-Thoughts)、思维树(Tree-of-Thoughts)以及思维图(Graph-of-Thoughts)这类方法被实践证明是行之有效的,它们能帮助模型更好地梳理逻辑,应对复杂的推理场景。
人工设计思维链提示语的作用与案例
人工设计的可行性及优势:
对于那些学界已经深入研究、且在很多场景下都通用的问题,人工去设计思维链(CoT)提示语是一个不错的办法。通过精心设计提示语,可以引导模型按照我们期望的逻辑和思路去思考问题,进而生成准确的答案。
具体案例展示:
季等人的自我反思方法:
季等人(2023年)提出的方法着重于将知识获取和答案生成联系起来。他们借助外部工具,同时巧妙地设计提示语,构建了三种很关键的自我反思循环。其中,事实知识获取循环能够帮助模型去主动获取相关的事实知识,让模型知道要从哪些方面去收集信息;知识一致性回答循环则确保模型在生成答案时,所运用的知识是相互协调、不矛盾的,符合知识体系的内在逻辑;问题蕴含回答循环促使模型去深入挖掘问题中蕴含的各种逻辑关系,更全面地考虑如何作答。通过这三种循环,成功地把外部的依据融入到模型处理问题的整个流程当中,使得模型能够更好地依据这些依据来生成合理的答案。
吴等人在临床记录方面的应用:
吴等人(2024年)针对临床记录这一特定领域展开研究,先是仔细分析了其中可能出现的各种错误类型,然后基于这些分析结果,专门为GPT - 4模型打造了三种不同的思维链(CoT)提示语。这三种提示语分别引导模型去关注干预、诊断以及管理这几个环节中可能存在的错误。例如,在干预方面,提示语可以引导模型去思考治疗手段是否合理、用药剂量是否恰当等;在诊断环节,提示语能让模型检查诊断依据是否充分、诊断结论是否准确;在管理方面,提示语有助于模型审视医疗流程安排、患者后续跟进等是否存在问题。借助这些有针对性的提示语,就能实现对临床记录中错误的自动检测,还能准确找出错误所在的范围,并且进行相应的纠正,大大提高了临床记录的准确性和规范性。
人工设计思维链提示语的成本问题及应对方法
成本问题:
虽然人工设计思维链(CoT)提示语效果显著,但它也存在明显的弊端,那就是需要投入大量的人力去进行设计、调试,同时耗费很多时间,效率相对较低,很难满足大规模、快速应用的需求。
自动思维链(Automate-CoT)的解决办法:
为了解决这个成本高昂的问题,自动思维链(Automate-CoT)技术应运而生。它提出了一种很巧妙的思路,即从标记数据量很少的数据集出发,去生成能够增强模型推理能力的推理链。具体操作时,采用一种降低方差的策略梯度策略,这个策略能够对每一条生成的思维链进行重要性评估,就好像给每条思维链“打分”一样,通过这种方式,模型就能清楚地知道哪些思维链在引导推理、生成答案方面更有效,进而可以从众多的思维链中挑选出最佳的提示语组合,既减少了人工成本,又能保证提示语的有效性。
围绕大型语言模型构建智能体工作流程
构建思路与模块划分:
还有一种利用思维链提示的方式是围绕大型语言模型构建智能体工作流程。这可不是简单的操作,需要打造一个功能更全面、更复杂的系统,以便应对现实世界中各种各样的实际场景。按照王等人的观点,这样的系统大致可以分为几个重要的模块,包括剖析模块(负责对问题、环境等进行分析拆解)、记忆模块(用于存储相关的信息、过往经验等,方便后续参考调用)、规划模块(制定行动的步骤和策略,明确要做什么以及怎么做)以及行动模块(实际去执行相应的操作,产生具体的行为和结果)。
依据融入与智能体反馈迭代:
可解释的依据可以通过多种不同的形式融入到这些不同的模块当中。比如在剖析模块中,依据可以帮助更准确地分析问题的本质和关键要素;在记忆模块里,依据能辅助筛选和整理需要存储的重要信息;在规划模块中,依据可以指导制定出更合理的行动方案等。而且,智能体能够根据所处的环境变化或者接收到的人类反馈,不断调整自己的行为和内部的信息处理方式,实现自适应和迭代优化,从而更好地完成各种任务。
推理链质量评估及相关应用进展
推理链质量评估的重要性与进展:
近期在这个领域也有不少新的发展成果,像大型语言模型推理器(LLM Reasoners)和社会推理评估(SocREval)等方面的研究,都着重关注如何自动地对推理链的质量进行评估。通过准确评估推理链的质量,能够知道模型的推理过程是否合理、可靠,进而发现可能存在的问题并加以改进,有助于构建更加稳健、性能更好的数据增强型大型语言模型应用,让模型在实际应用中发挥出更优的效果。
不同领域的应用实例展示:
协同机器学习(CoML):
在机器学习领域,协同机器学习(CoML)有着独特的应用方式。它把自动机器学习(AutoML)相关的知识巧妙地转化为提示语,融入到大型语言模型当中。然后,模型可以根据这些提示语,动态地从过往的历史实验记录里检索出对当下任务有用的信息,将AutoML知识和检索到的历史信息相结合,赋予大型语言模型新的能力,使其能够针对一些全新的任务开发出合适的机器学习解决方案,推动机器学习在新问题、新场景下的应用和发展。
元编程(MetaGPT):
在软件开发领域,元编程(MetaGPT)打造了一个很有创意的多智能体系统。在一个软件开发项目里,不同的利益相关者(比如程序员、测试人员、项目经理等)都被表示成一个个独立的智能体。这些智能体之间能够按照现实世界中软件开发的实际工作流程进行协作,就像真实的团队一样,各自发挥自己的作用,共同完成软件从需求分析、设计、编码到测试等一系列复杂的开发任务,有效提高了软件开发的效率和质量。
客户服务与医疗问答等领域:
同样地,在客户服务和医疗问答这些和人们日常生活密切相关的领域,也设计出了功能复杂、针对性强的智能体系统。在客户服务中,智能体可以根据用户提出的各种复杂请求,比如咨询产品功能、反馈使用问题、要求售后服务等,准确理解用户意图,然后提供相应的解答和帮助;在医疗问答领域,智能体能够针对患者或者家属关于病情、治疗、用药等方面的询问,依据专业的医学知识提供准确的医疗信息。这些智能体系统不仅让交互变得更加顺畅、高效,提升了用户的体验,而且还提高了回复的准确性,充分展现出大型语言模型在融入到精心设计的智能体工作流程后所具备的强大功能和应用潜力,能够在不同领域发挥重要作用,解决实际问题。
隐含依据查询的整体特点与难度
隐含依据查询在各类查询中属于难度级别最高的类型。对于可解释依据查询来说,它会清晰地把回答问题所需要依据的思路、逻辑等内容呈现出来,让人一看就明白该朝着哪个方向去寻找答案。但隐含依据查询完全不同,它涉及的是特定领域里的推理方法,这些方法往往不会明明白白地写出来让人知晓,而且数量极其多,几乎没办法全部罗列清楚。
这些推理依据涵盖的范围十分宽泛,在通常情况下,像语言模型所处理的那种有限的上下文窗口里,根本没办法把它们都梳理明白。同时,它们还缺少明确的指示,不会直白地告诉使用者该怎么用,实际上它们代表的是一种隐藏在数据当中的专业知识,只有深入挖掘、仔细分析才能发现并利用起来,这就使得处理这类查询变得格外困难。
涉及的数据类型及特点
领域内数据:
这类数据来自于和查询问题相同的领域,常见的有历史上留存下来的问答记录,或者是通过人工方式生成的相关数据。这些领域内数据可不是简单的信息堆积,它们自身就蕴含着解决当下查询问题所必备的推理技能和方法。比如说在Python编程这个领域,如果遇到了一些编程难题,去查看以往类似问题的解决记录,就会发现里面包含了很多经典的算法应用以及针对不同问题类型的解题策略,这些内容其实就是一种隐含的依据,当再碰到新的编程问题时,就可以参考之前的这些思路和方法,从中获取灵感,尝试去解决新问题,所以说这类领域内数据对于解决相关查询问题有着潜在的重要价值。
基础知识:
基础知识作为隐含依据的另一种表现形式,是由大量且分散在各处的知识库组成的。这些知识库在不同的实际场景中有着不一样的应用方式,而且非常复杂多样。它有可能是一个完整的公理体系,就像在法律领域,各个地方的法律法规综合起来构成了一个庞大的体系,当进行法律判断的时候,这些就是最基础的依据,虽然它们不会针对每一个具体案件都明确给出处理办法,但却是整个法律推理和判断的根基所在。
同时,在一些学术领域比如数学证明中,基础知识还包括那些已经被证明过的中间结论,在推导新的数学问题时,利用这些中间结论能够简化整个推理流程,让复杂的证明过程变得更容易操作。而且在处理现实世界的各种问题时,这种基础知识还可能来源于人们长期积累的各种经验以及对这些经验进行总结提炼后形成的内容,比如在一些行业里,老师傅们口口相传的一些实践经验和窍门,虽然没有形成很规范的理论,但却是解决实际问题时隐含在背后的重要依据。
处理隐含依据查询面临的挑战及示例
由于隐含依据查询的这些特点,要想处理这类查询,就必须运用十分复杂、精细的分析技术,去深入挖掘并利用好藏在不同数据源里的这些潜在智慧。对于检索增强生成(RAG)系统而言,这无疑是一个巨大的挑战,因为它需要准确地解读这些复杂又隐晦的信息,还要能够恰当地把这些信息运用到实际的查询回答过程中,目前要做到这一点是很不容易的。
数据增强的大型语言模型(LLM)应用的构建受到隐含依据查询的极大挑战,主要困难体现在以下几个方面:
逻辑检索方面
对于涉及隐含依据的问题,外部数据的有用性并非仅仅取决于实体层面或语义上的相似性,而是取决于逻辑上的一致性或主题上的关联性。标准的检索方法往往难以捕捉到查询的真正目标,也很难依据所呈现的问题去识别出具有逻辑相似性的文本片段。这就需要开发更为复杂精妙的检索算法,此类算法要能够解析并识别潜在的逻辑结构,而不能仅仅依赖表面的文本相似性。
数据不足方面
从根本上来说,外部数据可能并不会明确包含与当前查询相关的指导内容或答案。相反,相关信息通常隐含在分散的知识当中,或是通过示例来体现。这种间接的呈现方式要求具备强大的数据解读与整合能力,需要大型语言模型能够从碎片化的或关联性不大的数据源中有效地推导出条理清晰的答案。
这些挑战凸显出在大型语言模型框架内,具备成熟的数据整合与推理能力对于有效应对隐含依据查询的复杂性是至关重要的。
应对查询的总体思路
在处理相关查询(主要指那些有一定难度、需要深入挖掘依据的查询类型)时,有一种常用的办法,那就是先脱离实时的在线交互场景,在离线状态下对已有的数据集进行分析,从中找出规则以及指南类的内容。这些规则和指南就像是隐藏在数据中的线索,把它们找出来后,再依据这些内容去检索与之相关联的其他数据条目,以此来辅助回答各类查询问题,帮助梳理出合理的推理思路和答案。
生成推理依据的不同方法及示例
自举推理(STaR)[137]:
这个方法重点运用了迭代的小样本示例手段来生成推理依据。具体来说,最开始是基于一个相对较小的数据集,通过一定的逻辑和大型语言模型(LLM)的能力,生成相应的内容作为依据。然后,不断重复这个过程,逐步扩大数据集的范围,让生成的依据越来越丰富、完善,就好像滚雪球一样,从小的基础慢慢发展壮大,最终得到可以用于更广泛场景、更复杂问题的推理依据,为后续的推理查询工作提供有力支持。
逻辑解释采样(LXS)[138]:
它设计了一种比较独特的、包含两个角色的流程来提取解释作为依据。在这个流程里,有一个学习模型,它的任务是负责生成各种解释内容,尝试从不同角度、用不同方式去阐述相关的逻辑和思路。而另一个评判模型则起到审核的作用,对学习模型生成的这些解释进行评估,判断其是否合理、是否符合实际情况以及对推理有没有帮助等,通过这样的一“生”一“评”的配合,筛选出有效的解释作为可靠的推理依据,确保所提取的依据质量是过关的。
引导学习(GL)[139]:
引导学习采用的是情境学习的方式,在面对各种任务时,先去识别其中出现的错误情况。这些错误可不是简单记录一下就完事儿了,而是要对它们进行归纳总结,把它们转化成具有通用性、指导性的指南内容。这样一来,以后再遇到类似的任务时,就可以参考这些从过往错误中提炼出来的指南,避免再次犯错,同时也能依据这些指南更好地进行推理,完成相应的任务,让经验教训变成提升推理能力的宝贵财富。
学习、经验与原则(LEAP)[140]:
LEAP的做法是通过多个步骤来形成对推理有帮助的原则。首先,它会主动去生成一些错误情况,这里的错误生成不是随意的,而是有针对性地模拟可能出现的问题场景,然后基于这些错误进一步提炼出低层级的原则,这些原则可能是比较具体、针对局部问题的。接着,再从低层级原则中升华出更具普遍性、抽象性的高层级原则,最后把这些不同层级的原则整合起来,融入到给模型的提示语当中,让模型在进行最终推理时能够参考这些原则,按照合理的逻辑和思路去生成答案,增强推理的准确性和有效性。
基于错误的推理与原则生成(RICP)[141]:
RICP主要围绕训练数据里的错误做文章,利用这些错误信息来挖掘更深层次的内容。它先是借助错误来生成高层级的推理思路以及一些具体的见解,让我们能从错误中发现一些隐藏的逻辑和规律。然后,运用层次聚类这种数据分析方法,把各种各样的错误模式按照一定的相似性等特征进行分组,就好像把不同类型的错误归类整理一样。通过这样的分组,分别生成针对不同任务层级以及具体问题层级的原则,最后再把这些原则合并起来,并且根据具体的问题去检索与之匹配的原则内容,从中获取针对具体问题的深刻见解,辅助完成推理查询任务。
思维缓冲器(Buffer-of-Thought)[142]:
它借助一个问题提炼器工具,这个工具的作用是在众多不同的推理任务中进行提炼操作,把各个任务里有价值的内容提取出来,最终汇聚成一个元缓冲器。这个元缓冲器就像是一个知识库,里面存储着从多个推理任务中提炼出来的精华内容,在后续需要进行推理时,可以从中获取相关的依据和思路,帮助更好地完成推理过程。
综合性方法及相关特点
医学提示(MedPrompt)[143]:
MedPrompt是一种综合性的方法,它把GPT - 4生成的带有自我验证功能的思维链融入进来,作为训练示例的一部分。这里的思维链其实就是一种逻辑链条,展示了思考问题、推理答案的过程,而且还能自我验证其合理性。同时,它还结合了基于近邻检索的情境学习方法,也就是在检索相关数据时,会参考数据之间的相似性(近邻关系),把这些元素整合在一起,让模型在学习和推理过程中能够充分利用多种资源,从不同角度获取依据,提升对医学等相关领域推理查询的处理能力。
智能体医院(Agent Hospital)[144]:
智能体医院这个方法在生成依据方面,主要是通过反思的方式来实现的。它会对已有的情况、过往的数据等进行反思,从中挖掘出有用的依据内容。并且,在利用数据方面,它不仅会进行常规的记录检索,也就是查找已有的相关记录信息,还会对生成的数据进行经验检索,也就是从之前生成的数据里总结出有价值的经验作为依据,通过多维度的数据利用和依据挖掘,来更好地服务于推理查询工作,为解决相关问题提供全面的支持。
依据来源及应用特点总结
尽管上述提到的这些概念有着各种各样不同的叫法,像指南、原则、经验、思维模板等等,但它们本质上都是为了达成一个共同的目标,那就是提取出那些通用的、对推理有帮助的依据,以此来强化整个推理查询的过程。
这些依据的来源多种多样,有的是来自模型自行生成的思维链,比如医学提示、思维缓冲器就是通过这种方式获取依据;有的是从训练集里出现的错误中提炼而来,像引导学习、基于错误的推理与原则生成、智能体医院等方法,都善于从错误中总结经验教训,转化为有用的依据;还有的是通过有意去制造一些错误情况,然后进行分析总结得到依据,学习、经验与原则就采用了这样的策略。
而且,这些依据在应用的时候也有不同的特点,有些原则具有很强的通用性,可以适用于所有的任务,例如智能体医院、基于错误的推理与原则生成所生成的原则,在各种相关任务场景下都能发挥作用;而另外一些原则则是根据具体的问题动态地去检索、匹配,就像医学提示、思维缓冲器那样,针对不同的问题去查找最适合的依据内容,更具针对性地辅助推理查询。
最后,众多这方面的研究工作都共同表明了一个事实,那就是通过从一个个具体的案例中学习,不断积累经验,并把这些经验转化为推理依据,对于各种各样的推理任务来说,都是非常有益的做法,能够提升模型在处理复杂问题、进行推理查询时的能力和效果。
利用示例进行情境学习的基础与问题
情境学习与示例检索的作用及原理:
在帮助揭示隐含依据方面,利用示例开展情境学习是一种常用且有效的手段。预训练的大型语言模型本身就具备比较可观的情境学习能力,简单来说,就是模型能够依据给定的具体情境(比如提供一些示例作为参考的场景)来学习新知识或者完成相应任务。而通过基于相似性去检索示例,可以进一步强化这种能力,让模型更好地发挥少样本学习能力。少样本学习意味着模型只需少量的示例就能从中总结规律、进行学习,通过相似性检索示例能为其提供更契合的参考,辅助它更好地理解和处理新问题。
存在的干扰问题:
不过,这里面存在一个隐患,那就是如果给模型的提示信息(也就是提供给模型作为参考引导的内容,包含示例等)里夹杂了不相关的信息,就很容易让大型语言模型“分心”。就好比一个人在学习时,周围有很多无关的干扰因素一样,模型可能会受到这些无关内容的影响,导致最终给出的回复是错误的,没办法准确地完成相应的推理和回答任务。
相关框架与针对性改进方法
OpenICL框架:
吴等人开发的OpenICL框架有着重要意义,它构建了一个专门的情境学习(ICL)框架,聚焦于研究不同的传统示例检索方法以及推理技术,去探究它们到底会对情境学习的实际效果产生什么样的影响。比如说,不同的检索方法可能会找到不同的示例,这些示例质量参差不齐,对模型最终学习效果影响各异;不同的推理技术在结合示例进行推理时,也会有不同的表现,这个框架就是要把这些影响因素都梳理清楚,以便找到更优的组合方式,提升情境学习的有效性。
基于反馈训练小模型选择示例:
还有一种改进思路,那就是基于大型语言模型针对情境示例给出的反馈,来训练相对较小的模型,进而让小模型去挑选出最优的展示示例。打个比方,大模型就像是一个经验丰富但可能会受到各种干扰的“老师”,它能对示例的好坏给出评价反馈,然后利用这些反馈去训练小模型,小模型经过训练后就可以更精准地从众多示例中筛选出对特定任务最有帮助的那些,这样就能更有针对性地完善特定任务的情境构建,让模型在面对具体任务时有更合适的示例作为参考,提升学习和推理的准确性。
解决示例检索范围局限及构建更好示例的方法
Vote-k方法:
在实际应用中,仅仅依靠基于语义相似性的示例检索有时候是不够的,因为它可能没办法涵盖实际测试里需要的更广泛的关联范围。比如在一些复杂的领域问题中,除了语义相似,还可能涉及到逻辑关系、背景知识等多方面的关联,单纯语义相似检索到的示例可能太片面。苏等人提出的Vote-k方法就是为了解决这个问题,它是一种无监督、基于图的选择性标注方法,通过构建图结构,利用数据之间的复杂关系,对示例进行更全面的标注和筛选,最终为少样本学习打造出一个更加多样化、更能代表各种情况的示例数据库,让模型能有更丰富全面的参考资料。
自动思维链(Auto - CoT)方法:
张等人提出的自动思维链(Auto - CoT)方法采取了另一种思路。它先是把众多的示例按照一定的规则聚类成各种各样具有代表性的类型,就好像把杂乱的示例进行分类整理一样。然后通过对问题进行多样化的采样,模拟出不同情况的问题,并且针对这些问题生成相应的推理链,也就是把思考问题、解决问题的逻辑链条梳理出来。通过这样的方式构建出的示例,能够更好地贴合学习过程中不同阶段、不同类型问题的需求,为模型学习提供有力支持,帮助它更顺畅地理解和掌握新知识、新逻辑。
提升模型跨领域推理及解决特定问题的尝试
提升跨领域推理能力的方法:
让大型语言模型通过少样本学习去掌握其训练领域之外的推理能力是一个很难攻克的挑战。王等人尝试通过一种方式来解决这个难题,他们会对各种各样的推理路径进行采样,就好比把所有可能的思考方向、推理路线都罗列出来,然后在这些路径上进行边缘化操作(也就是综合考虑各条路径的情况,权衡利弊后做出选择),最终从中选出最一致的答案,也就是最符合逻辑、最靠谱的那个答案方向。通过这样的操作,能够增加大型语言模型选择正确推理链的概率,让它在面对训练领域之外的新问题时,也能更有可能沿着正确的思路去推理、回答。
扩充可用示例的方法:
阿加瓦尔等人引入了两种可扩展的生成可用示例的方法,分别是强化情境学习(reinforced ICL)和无监督情境学习(unsupervised ICL),它们的目标是取代人工生成示例。因为人工生成示例往往效率低、数量有限,而这两种新方法能够大量地生成可用的示例,从而扩充示例资源库,为模型提供更充足的学习素材,让模型有更多的参考资料可以选择,有助于提升其学习效果和应对各种任务的能力。
解决特定领域问题的针对性措施:
DIN - SQL方法:
在处理像将文本转换为结构化查询语言(SQL)这样的任务时,DIN - SQL采取了一种任务分解的策略。它把复杂的任务拆解成一个个更简单的子任务,然后把这些子问题的解决方案当作提示提供给大型语言模型。这样做的好处是,模型不需要一下子面对复杂的整体任务,而是可以先从简单的子任务入手,逐步积累经验和逻辑,最终显著提高了它从文本生成SQL的性能,让文本到SQL的转换更加准确、高效。
DUP方法:
DUP则聚焦于大型语言模型使用思维链方法解决复杂数学应用题时出现的问题,指出了三个主要方面的问题,分别是语义误解(对题目中的词语、表述理解有误,导致整个解题思路跑偏)、计算错误(在具体运算过程中出现失误)以及步骤缺失(解题时遗漏了必要的步骤,导致答案不完整或错误),其中语义误解是最主要的限制因素。所以,要是能鼓励大型语言模型更加深入地去理解数学应用题的题意,准确地提取出解决问题所必需的关键信息,把语义误解这个问题解决好,就能大大增强它解决数学问题的能力,让它在数学应用题这个领域的表现得到明显提升。
情境学习在多领域的应用及重要性
情境学习在如今的多个领域,像数学、法律、医学、金融等,应用得越来越广泛了。在数学领域,可以帮助学生或者相关从业者更好地理解数学概念、解决复杂的数学问题;在法律领域,辅助法律从业者依据过往案例等示例进行推理,做出合理的法律判断;在医学领域,让医护人员参考相似病症案例等示例来分析病情、制定治疗方案;在金融领域,帮助分析师依据过往的市场情况、投资案例等示例来预测市场走势、做出投资决策等。它在数据增强的大型语言模型应用的发展过程中扮演着至关重要的角色,一方面拓展了大型语言模型原本的功能范围,让它能够处理更多类型的任务;另一方面也切实提升了它在不同领域实际应用中的价值,使其能够更好地服务于各个领域的具体需求,发挥出更大的作用。
大型语言模型面临的挑战与微调的作用
面临的挑战:
尽管大型语言模型(LLMs)有着很强的情境学习能力,能够依据给定的情境去理解和处理不少任务,但在面对那些有着复杂且冗长逻辑链的情况时,要准确地找出其中的依据或者挑选出最优的示例来辅助推理,却不是一件容易的事,这成为了当前的一个重大难题。而且,当给模型提供大量外部先验知识时,这些知识反而可能干扰模型的推理过程,对其推理能力造成挑战,影响模型准确地得出结论。
微调的意义:
在这样的背景下,微调就凸显出了它的价值。微调这种方法可以充分利用大型语言模型在预训练阶段已经学到的大量基础知识,这些基础知识就像是一个坚实的根基,在此基础上,通过微调还能让模型快速地去掌握新的、特定领域内的依据和逻辑,让模型能够更好地适应那些更高级、更专业的任务场景,从而在应对这类复杂任务时变得更加有效,所以说它为提升大型语言模型的适应性和任务处理能力提供了一条切实可行的途径。
指令微调及指令数据集的构建方法
指令微调概述:
指令微调是一种常用的、用于给大型语言模型赋予新能力的手段。具体操作是利用成对的(指令,输出)数据来进行有监督的微调工作。简单来说,就是给模型提供一条指令(比如让它分析一篇文章的主旨、解答一个数学问题等明确的要求),同时给出对应的正确输出(也就是期望模型按照指令生成的准确答案),通过大量这样成对的数据去对模型进行调整,让模型学习到按照指令生成合适结果的能力。
指令数据集构建方法:
从现有数据集派生:
可以从已经存在的一些数据集中提取出符合要求的内容,将其整理成适合指令微调的(指令,输出)数据对形式。例如,在某个自然语言处理相关的现有数据集中,挑选出那些包含提问和对应正确回答的数据,经过适当的格式转换等处理,使其变成能用于指令微调的数据集,这种方式能利用已有的大量数据资源,相对比较便捷地获取一定量的训练数据。
人工精心编写指令创建:
依靠人工去精心地编写指令以及对应的输出内容来构建数据集。专业人员会根据具体想要让模型掌握的能力、应用的场景等,一个一个地去设计指令和答案,这样做的好处是可以非常精准地控制数据的质量和内容,确保指令和输出都符合预期的训练要求,但缺点就是比较耗费人力和时间,效率相对较低,不过在一些对数据准确性和专业性要求很高的情况下,这种方式是很有必要的。
利用强大的大型语言模型生成合成数据:
借助那些性能强大的大型语言模型自身的能力来生成所需的数据。比如让一个已经训练好的、能力出色的大型语言模型按照一定的规则和要求,去创造出大量的指令以及相应的输出内容,通过这种方式可以快速生成大量的数据,不过生成的数据质量可能需要进一步验证和筛选,以保证其符合实际训练的标准。
微调成本及降低成本的相关方法
微调成本问题:
在构建那种需要利用外部数据增强的大型语言模型应用时,虽然微调有诸多好处,但它在时间和计算资源方面的成本是比较高的。因为要处理大量的数据对,进行反复的参数调整和模型训练,这就需要耗费很长的时间以及大量的计算资源,比如占用大量的内存、消耗较高的算力等,从实际应用和成本效益角度来看,这是一个需要解决的问题。
降低成本的方法:
适配器微调(Adapter tuning):
这种方法是在微调的时候,把小型的适配器模型和大型语言模型结合在一起,然后采取一种特殊的策略,就是冻结大型语言模型原本的参数,不让它的这些参数在微调过程中发生变化,只对新添加的适配器模型的权重进行优化调整。这样做的好处是,不需要对整个大型语言模型的所有参数都进行重新计算和调整,大大减少了计算量,同时也能通过适配器模型来为大型语言模型添加新的功能或者调整其部分性能,在一定程度上降低了微调的成本。
前缀微调(Prefix Tuning)和提示微调(Prompt Tuning)
它们的思路是在向大型语言模型输入内容之前,额外添加一组可训练的向量。在后续的训练过程中,重点对这些添加的向量进行优化,通过调整这些向量的数值等属性,来影响模型对输入内容的处理,进而提升大型语言模型的整体性能。这种方式相当于在不大量改动模型原有结构和参数的基础上,通过对这些前置向量的优化来达到微调的效果,同样可以减少计算资源的消耗和时间成本。
低秩适应(Low - Rank Adaptation):
低秩适应的核心在于对大型语言模型中的每个密集层施加低秩约束,以此来逼近更新矩阵。这样做的目的是减少适应下游任务(也就是具体的各种应用场景下的任务)时所需要的可训练参数数量。因为参数数量减少了,在训练过程中需要计算和调整的量也就相应减少了,从而降低了微调所需的成本,让模型能够更高效地适应不同的任务要求。
微调在各专业领域的应用及成果
各领域应用情况总览:
近年来,很多研究工作都在利用有监督微调的方式,努力增强大型语言模型在诸如数学推理、金融、法律、医疗保健等各个专业领域的能力,让大型语言模型能够在这些特定领域发挥更大的作用,解决实际的专业问题。
具体案例展示:
ChatTimeLlama:
ChatTimeLlama [187]这个项目专门引入了一个很有特点的可解释的时间推理指令微调数据集,然后拿着这个数据集在LLaMA [188]这个大型语言模型上进行微调操作。通过这样的微调,模型在时间推理方面有了显著的提升,比如能够更准确地分析事件在时间线上的先后顺序、推断未来某个时间点可能发生的事件等复杂的时间推理能力变强了,而且模型的可解释性也得到了提高,也就是人们能够更容易理解模型做出推理判断的依据和过程,让模型在涉及时间相关的应用场景中表现得更加出色。
LISA:
LISA [189]则是利用了一小部分包含推理内容的分段数据样本,用这些样本对多模态大型语言模型LLaVA进行微调。这里的多模态意味着模型可以处理多种类型的数据,比如图像、文字等结合的信息。经过这样的微调后,LLaVA这个模型在推理分段方面的能力有了很大的进步,能够更精准地对不同的信息片段进行推理分析,在处理复杂的多模态数据时可以更好地梳理逻辑、得出结论。
MAmmoTH:
MAmmoTH [190]在数学领域有独特的贡献,它精心构建了一个数学示例数据集,这个数据集的特别之处在于将思维链(Chain of Thought)和思维程序(Program of Thought)这两种推理方式巧妙地结合在了一起,并且覆盖范围很广,涵盖了不同的数学领域,像代数、几何等各个方面。通过用这个数据集对大型语言模型进行微调,使得模型解决一般数学问题的能力大大增强,无论是简单的计算题还是复杂的数学证明题等,模型都能更有效地找到解题思路并得出正确答案。
ReFT:
ReFT [191]提出了一种创新的学习方法,它聚焦于同一个问题对应的多个带注释的推理路径,也就是针对一个数学问题,会收集很多不同的推理思路和过程,并且都带有相应的注释说明(比如每个步骤的依据、合理性等注释)。然后,它会针对给定的数学问题自动去采样众多这样的推理轨迹,再利用已知的正确答案作为一种奖励信号(就好像做对了题能得到奖励一样),引导模型去学习这些不同的推理路径中好的部分,通过这种方式让模型在数学推理方面变得更加准确和灵活。
ChatDoctor:
ChatDoctor [192]利用了来自一个广泛使用的在线医疗咨询平台的海量数据,具体是10万条医患对话的数据,用这么大的数据集对LLaMA进行微调。经过这样的微调后,模型对患者需求的理解能力大幅提升,比如能够更准确地明白患者描述的症状、诉求等内容,并且能够根据这些情况提供更有效的医疗建议,在医疗咨询这个应用场景中发挥了更大的作用,更好地服务患者。
FinGPT:
FinGPT [193]着眼于金融领域,开发了一个开源的大型语言模型,并且运用了自动化数据整理技术(可以更高效地整理金融相关的数据)以及轻量级、低秩适应技术(降低微调成本的同时让模型适应金融领域任务),在金融数据上对模型进行微调,使模型能够更好地处理金融领域的各种问题,比如分析金融市场趋势、解答金融投资相关疑问等,增强了模型在金融领域的实用性。
DISC - LawLLM:
DISC - LawLLM [194]针对中国司法领域开展工作,先是创建了一个专门用于有监督微调的数据集,这个数据集是依据中国司法领域的特点和需求打造的。然后利用这个数据集对大型语言模型进行微调,经过这样的处理后,模型在不同的法律场景下都能有效地服务各类用户,比如为普通民众提供法律咨询、帮助法律从业者进行案例分析等,其法律推理能力得到了显著增强,更好地满足了司法领域的应用需求。
数据增强的LLM应用分类及对应解决方法
分类依据与各类别特点及解法:
文章依据查询的主要关注点,把数据增强的大型语言模型(LLM)应用划分成了四个不同的类别,每个类别都有其独特之处,面临的难题不一样,相应的解决办法也各有侧重。
静态常识相关查询:当查询是围绕静态常识展开时,运用思维链(Chain of Thought)方法来部署通用的大型语言模型就可以取得比较好的效果。比如说,当人们想了解一些像历史事件发生的时间、著名人物的基本生平信息等常识性内容时,通过这种方式,模型能够顺着一定的逻辑链条去梳理知识,给出合适的答案。
明确事实查询:这类查询的关键难点在于要准确找到数据库里事实所在的具体位置。打个比方,在一个存有大量产品信息的数据库中,如果要查询某一款特定产品的价格,就需要精准定位到这个价格数据存储的地方,这时候基本的检索增强生成(RAG)方法就派上用场了,它能够帮助我们在数据库中快速、准确地找到对应的事实内容。
隐含事实查询:它和明确事实查询不同,不是简单找一个单独的事实就行,而是需要把多个相关的事实整合到一起。例如在分析一个公司的经营状况时,可能需要综合它的财务数据、市场份额变化、人员流动等多个方面的事实信息。对于这种情况,迭代式检索增强生成(RAG)以及基于图或树结构实现的检索增强生成(RAG)就更合适了,因为它们不仅能把单个的相关事实检索出来,还能把这些分散的数据点按照一定的逻辑关联起来,方便整理和分析,从而更好地回答这类需要综合多方面事实的查询。
可解释依据查询:在这类查询中,重点是要让大型语言模型能够更好地遵循外部给定的指令去进行推理和回答。比如在医疗领域,根据专业的诊疗指南等外部指令去分析病情、给出治疗建议,这就需要通过提示微调(prompt tuning)和思维链提示(CoT prompting)等手段不断改进模型,增强它依据外部指令开展工作的能力,使模型生成的答案更符合专业要求和逻辑。
隐含依据查询:这是最具挑战性的一类查询,它要求从海量的数据集中,依靠模型自己去总结、合成解决问题的办法。像在预测复杂的经济形势变化这类问题上,涉及到众多经济指标、政策因素、市场动态等大量数据,并没有现成的、明确的解决思路,就需要借助离线学习、情境学习以及微调等方法,让模型从这些复杂的数据中挖掘出内在逻辑,摸索出解决问题的途径。
知识注入LLM的三种机制及各自特点
三种机制概述:
在开发针对特定任务的大型语言模型应用前,领域专家需要先摸清楚预期任务的情况,搞清楚相关查询的复杂程度,然后从三种机制里挑选合适的方式把知识注入到大型语言模型中,以此来提升模型应对相应任务的能力。
基于查询提取领域数据作为上下文输入(机制a):
这种方式是根据具体的查询需求,从相关的领域数据里提取一部分内容,把它当作大型语言模型的上下文信息输入进去。例如在一个法律问答系统中,如果用户查询关于某类合同纠纷的法律问题,就从法律条文、过往案例等领域数据里提取和合同纠纷相关的内容作为上下文,辅助模型理解问题并回答。这样做的好处是能够让模型的回答具有较好的可解释性,也就是人们能比较清楚地知道答案是基于哪些信息得出的,同时也让模型的表现相对稳定。但是它存在明显的局限,由于模型能处理的上下文窗口大小是有限的,可能没办法把所有相关的重要信息都包含进去,而且在提取和输入过程中,容易出现中间信息丢失的情况,所以它比较适合那些能用简短文字就能把关键数据解释清楚的场景。并且,这种方式对模型自身的检索和知识提取能力要求比较高,如果模型这两方面能力不足,就很难充分利用好这些输入的上下文信息。
用特定领域数据训练小模型引导外部信息整合(机制b):
先利用特定领域的数据去训练一个相对较小的模型,这个小模型经过训练后,就可以在后续引导外部信息整合并输入到大型语言模型当中。比如在处理某一专业领域的大量实验数据时,先训练一个小模型让它学习这些数据里的规律和特点,然后由它来筛选、整理外部信息,再传递给大型语言模型。这种方法的优势在于可以缩短整体的训练时间,而且小模型能够吸收处理相对大量的数据,不过它的效果好不好很大程度上取决于小模型自身的能力。要是面对比较复杂的任务,小模型自身能力有限,可能就没办法很好地引导信息整合,从而限制了大型语言模型在这些复杂任务上的表现。并且随着要处理的数据量不断增加,还可能会产生额外的训练成本,需要不断投入资源去优化小模型。
直接用外部领域知识微调通用大模型(机制c):
直接拿外部领域的知识对通用的大型语言模型进行微调,让它变成一个在特定领域有专长的模型。例如在金融领域,用大量的金融市场数据、专业理论知识等去微调通用的大型语言模型,使其能够更专业地处理金融相关的任务。这种方式能够充分利用大型模型的强大能力,结合大量的特定领域知识来提升模型在该领域的性能。然而,它也存在风险,要是在微调过程中使用了领域外的事实数据,或者数据设计不合理,很容易导致大型语言模型生成更多错误的答案。而且还有可能出现丢失之前已经掌握的领域知识的情况,以及忽视那些在微调过程中没遇到过的任务,使得模型在一些特殊场景下表现不佳。
实际应用中的综合考量与应对策略
在实际的应用场景里,情况往往比较复杂,数据增强的大型语言模型应用通常不会只涉及单一类型的查询,而是多种查询类型混合在一起的。比如说,一个智能客服系统,可能既会遇到像查询产品基本参数这种明确事实查询,又会有分析用户反馈问题背后原因这种隐含事实查询,还可能有根据公司业务规则给出解决方案这种可解释依据查询等情况。面对这样复杂的局面,开发人员就需要精心构建一个路由管道,这个管道要把前面提到的多种解决不同查询类型的方法都整合起来,让系统能够根据不同的查询自动切换、运用合适的方法去应对,这样才能有效解决实际中遇到的各种各样、多方面的挑战,使整个大型语言模型应用能够稳定、高效地运行,满足用户多样化的需求。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-13
使用RAG技术构建企业级文档问答系统:切分(3)使用Jina API进行语义切分
2025-01-13
使用RAG技术构建企业级文档问答系统:切分(2)使用Embedding进行语义切分
2025-01-12
RAG在智能问答系统中的应用
2025-01-12
CAG能取代RAG吗?别被表面现象迷惑!
2025-01-12
Agentic AI 系统设计:第四部分 数据获取和 Agent RAG
2025-01-11
3.7K Star!GraphRAG不香了~
2025-01-10
分块的艺术:提升 RAG 效果的关键
2025-01-09
从RAG到RAG+:让大模型更懂业务的权威指南
2024-07-18
2024-09-04
2024-05-05
2024-06-20
2024-05-19
2024-07-09
2024-07-09
2024-06-13
2024-07-07
2024-07-07
2025-01-09
2025-01-09
2025-01-09
2025-01-06
2025-01-04
2024-12-30
2024-12-27
2024-12-26