1、检索增强
基于嵌入的检索或密集检索相比传统的稀疏或基于词袋的方法展现出了最先进的成果。通过大型语言模型增强的模型无关的文档级别嵌入框架,显著提升了常用检索模型(如Bi-编码器模型Contriever、DRAGON和晚期交互模型ColBERTv2)的有效性,从而在LoTTE数据集和BEIR数据集上实现了最先进的成果。
信息源、合成查询、标题和文本块称为文档的字段。这些字段从不同角度表达了原始文档的语义,并将组成文档的文档级别嵌入,这种嵌入是静态的,可以预先计算并缓存用于信息检索。可以预先构建嵌入索引以加快检索推理速度,每个文档级别嵌入都指向原始文档。
美国的第一任总统是谁?”在相似性得分方面可能非常接近“谁成为了美国的第一任总统?”。但我们的目标答案可能是一篇关于“乔治·华盛顿”的维基页面或自传,其与查询的相似性得分并不高。然而如果我们使用华盛顿的自传来创建合成查询,“美国的第一任总统是谁?”可以通过相似性得分很容易匹配到相关的查询。因此,生成的合成查询从不同角度表达了原始文档的语义,有助于匹配相关查询。因此我们可以使用这些合成查询将用户查询引导到相关的文档。
文档的标题在确定其对用户查询的相关性和有用性方面起着至关重要的作用。如果原始文档有标题,我们可以直接使用它们。如果没有,我们可以利用大型语言模型为该文档生成一个合成标题。
文本块化指的是将大文档或长篇文本分割成更小、更易于管理单元的过程。这些单元被称为“文本块”或“段落”,通常是通过将相关信息组合在一起创建的
具体计算过程
第一项计算查询与文档片段嵌入对之间的最大相似度得分,其中 s 是相似度得分函数,q是输入查询的嵌入向量,ci是文档中第 i 个片段的嵌入向量。这一项在当前基于嵌入的检索中很常见,它基于查询和文档中最相关的片段来确定查询与文档之间的相似度。
第二项并考虑了更多的信息,其中 ef是每个文档字段的嵌入向量。计算查询嵌入与每个字段嵌入之间的相似度得分并将它们组合在一起,每个得分乘以一个字段权重参数 wf。如前所述,这些文档字段包括合成查询、标题和片段字段。
对于可能包含多个文档片段的片段字段,可以用文档编码器计算每个片段的嵌入向量,如何将这些嵌入向量结合起来代表整个文档呢?
简单的方法是计算所有片段嵌入向量的平均值作为片段字段的嵌入。同样地,对于合成查询字段,使用查询编码器计算每个查询的嵌入向量,然后计算这些嵌入向量的平均值作为查询字段的嵌入。虽然简单,在实验中,这种方法表现得非常好,将来在此基础上可以探索更高级的方法。
实验效果
数据集
BEIR 数据
BEIR(信息检索评估基准)数据集(Thakur 等,2021)提供了一个全面的基准来评估和比较不同的信息检索(IR)模型,特别是在域外测试的背景下。BEIR 被设计为通过提供更广泛和大量的查询和段落来解决其他先前数据集的局限性。它涵盖了广泛的主题,从而促进了对 IR 模型更稳健且全面的评估。
LoTTE 数据
LoTTE 数据(Santhanam 等,2021)是一个专门为长尾主题分层评估设计的数据集。LoTTE 的主要关注点在于与长尾主题相关的自然用户查询,这些查询可能无法被像wiki这样的实体中心知识库充分覆盖。LoTTE 包含了十个不同的测试集,每个测试集包含 500 至 2,000 个查询和 100,000 至 2,000,000 个段落。这些测试集按主题划分,并且每个都附带有一个包含相关但不重叠的查询和段落的验证集。在这个实验中,仅使用测试分割来进行评估。
模型
双编码器通常是“双塔”模型结构。给定一个查询和一个文档,会分别应用查询编码器和文档编码器来计算查询和文档的嵌入向量。然后,这两个嵌入向量通过点积(或余弦相似度)计算查询与文档之间的相似度分数。
延迟交互模型对于每个查询 Token 的向量都要与所有文档 Token 对应的向量进行相似度计算,并跟踪每个查询 Token 的最大得分。查询和文档的总分就是这些最大余弦分数的总和。
Contriever
对于 Contriever,我们使用的是 Roberta-base(Liu 等,2019)模型架构,该检查点是通过对比学习在 Wiki 段落(Karpukhin 等,2020)和 CC100(Conneau 等,2019)数据上训练得到的。它拥有 1.25 亿参数,上下文窗口为 512 个标记,包含 12 层、768 隐藏维度和 12 个注意力头。我们使用单个 Roberta-base 模型作为查询编码器和上下文编码器,即双编码器中的“两塔”在模型架构中是共享的。
DRAGON
对于 DRAGON,我们也使用 Roberta-base 模型架构,该检查点由作者训练并公开发布。不同于 Contriever 模型,DRAGON 为查询编码器和上下文编码器分别使用了独立的 Roberta-base 模型。
ColBERTv2
对于 ColBERTv2,我们使用的是 bert-base-uncased 模型架构,这与原始论文中的默认设置相同。它拥有 1.1 亿参数和一个 256 个标记的上下文窗口,包含 12 层。
在用 LLM 增强文档嵌入后,可以在不进一步微调的情况下大幅提升检索模型的召回性能。
优化数据生成的质量:
- 多样性:问题不应该集中在信息的单一方面或只是提取问题。
- 复杂性:生成的问题应该需要一些推理或多种证据来回答问题。
- 步骤1:生成所有可能引起人物角色兴趣的问题。
- 步骤2:筛选所有生成的问题。
- 步骤3:诱导人物的写作风格。
提取后,LLM 为每个角色提取兴趣点。这会在一段话中映射出不同的有趣信息,增加问题的多样性。
多样性的另一个方面是所问问题的类型。我们需要问一些提取性、抽象性、比较性等问题,而不仅仅是直接问“如何/什么”。为此,下一步是根据文章中的信息确定适用于每个兴趣点的问题类型。
最后,通过“文档-兴趣-问题类型”三元组,生成了所有可能的问题。使用角色和问题类型来引导问题的生成,使开发人员能够将生成的问题引导到用户会问的问题类型上。
举例:
琼是一位资深金融分析师,专注于使用计量经济学推荐投资策略。琼习惯于拥有一个分析师团队来询问信息,所以他们可能不了解具体细节,所以可能会问一些模糊的问题。然而,他们对一般话题非常了解。
帕德玛是一位经验丰富的公司诉讼律师,拥有超过 10 年为大公司处理复杂法律案件的经验。她做事严谨,以敏锐的分析头脑和对细节的关注而闻名。
亚伦是一个缺乏自信的新闻专业学生,因此不会深入探究底层材料。他对英语还不熟悉,所以熟练程度还不是很高。他还有一个坏习惯,就是把事情耸人听闻。
生成问题后,下一步是过滤并提取最有用的子集。第一步是删除所有已生成问题的重复数据。需要进行重复数据删除。 接下来,重写所有相关问题,使其具有对话的语气。最后,还有另一个过滤器来对可能过于笼统的问题进行分类和过滤。
最后一步是将所有问题融入人物角色的写作风格中
Padma 的写作风格以清晰、精确和正式的语气为特点。她以直接和自信的方式写作,使用简单而简洁的语言来传达复杂的想法。她的句子结构良好且逻辑连贯,反映了她分析的思维和对细节的关注。她避免使用情绪化的语言、个人观点或华丽的修辞手法,而是专注于以清晰客观的方式呈现事实和论点。她的写作没有歧义和含糊之处,每一点都有证据和推理的精心支持。整体语气专业而权威,赢得了读者的尊重和关注。虽然她的写作在创意上可能不具吸引力或说服力,但它在传达她的信息和实现她在公司诉讼环境中的目标方面非常有效。
Aaron的写作缺乏深度和分析,经常对复杂问题浮于表面。他的句子简短而简单,反映了他有限的英语水平。尽管他尽了最大努力,但语法、句法和词汇选择方面的错误仍然很常见。为了弥补缺乏自信的缺点,亚伦经常诉诸耸人听闻的手段,夸大或扭曲事实,使它们更引人注目。他的语气犹豫不决,不确定,好像他对自己不太有信心。总的来说,亚伦的写作风格更像是小报记者,而不是严肃的新闻记者。
2、模型微调
内容转换流程将原始种子转化为中间表示形式,这简化了定制以特定目标的指令创建过程。它包括多个代理,并且通常在生成高质量数据方面起关键作用,同时也是引入多样性的额外手段。
种子指令生成流程由多个代理组成,接收来自内容转换流程的转换后种子作为输入,并生成一组多样化的指令。种子指令流程的唯一目标是引入多样性,为此它常常依赖于一个预定义但可扩展的分类法。
指令改进流程则以种子指令流程产生的指令为输入,并迭代提升这些指令的复杂度和质量。使用了建议者-编辑者代理的概念。建议者代理最初提出各种增加初始指令复杂性(使它们更加复杂、无法解决或棘手)的方法,之后编辑者代理根据这些建议修改指令。
举例:
随机种子 尿酸是由嘌呤(一种饮食蛋白质)分解自然产生的物质。当体内这种物质过量时,会形成由这些物质构成的晶体。这些晶体沉积在身体的不同部位,主要是在关节和肾脏,导致疼痛和其他不适。体内尿酸的缺乏或过量是由某些疾病(如白血病、肥胖症、肾脏疾病和贫血)和生活方式相关的因素(例如酒精和加工食品的摄入)引起的。
内容
- 嘌呤来自哪里?
- 尿酸在哪里发现?
- 什么是高尿酸?
- 高尿酸能引起什么?
- 什么是低尿酸?
- 测试:如何知道尿酸水平?
嘌呤来自哪里? 当氨基酸通过消化被分解时,嘌呤被产生并释放到血液中。因此,它在体内自然产生。...(省略)
转换后的种子(论辩文章生成器) 最近的研究表明,血液中高水平的尿酸,即高尿酸血症,可能会增加心血管疾病的风险。尿酸是嘌呤代谢的副产品,虽然它在体内自然产生,但过量的尿酸会导致健康并发症。女性尿酸水平超过6毫克/分升(mg/dL),男性超过7毫克/分升通常定义为高尿酸血症。这种情况可能是由于尿酸生成过多或者通过尿液排出不足所致。导致尿酸高的因素包括富含嘌呤的食物,如红肉和海鲜,以及生活方式的选择,比如饮酒和缺乏运动。相反,低尿酸水平,或低尿酸血症,则较为少见,通常不会表现出症状。尽管如此,这可能表明潜在的肾脏或肝脏问题。诊断这两种情况都需要实验室的血液和尿液检测。值得注意的是,尽管高尿酸水平与心血管疾病风险增加有关联,但因果关系尚未得到最终证实。
种子指令生成流程 一套包含43种阅读理解问题类型的集合。这个列表涵盖了字面理解问题、批判性理解问题、评价性理解问题、推理、识别假设、识别强化/削弱论点的信息、排列事件顺序等类型。 。 我们已经定义了多个针对这些类别的代理(Agents)。每个代理接收一段文本作为输入,并基于预定义的问题类型生成一系列问题。编排过程将根据前一步骤中的内容转换代理所确定的子集来参与这些代理的工作。在这个阶段完成后,我们将获得一系列的(段落,问题)对,这些对将作为下一阶段的输入。
- 字面理解问题(简答或列表):询问文本中明确陈述的具体细节或事实的问题。
- 数值离散推理(推理):需要读者运用文本中的许多事实进行数值推理的问题。
- 批判性理解问题(判断题):构造两个关于文本目的或观点的陈述,要求读者判断其真伪,其中一个为真另一个为假。
- 评价性理解问题(论文题):一个开放性问题,促使对文本主题或论点有效性进行深入分析。
- 词汇和语言使用(填空题):测试对文本中特定单词或短语理解的填空题。
- 关系理解问题(配对题):根据特定标准将项目配对的匹配题。
- 事件排序(排序题):将文本中的事件按正确的时间顺序排列。
- 加强:识别使论证结论更有可能为真的信息。
- 削弱:找出使结论不太可能为真的证据或论证。
- 假设(必要假设):确定论证成立所必需的前提条件。
- 错误:指出论证推理中的错误。
- 推理(必然为真):选择一个逻辑上跟随所提供信息的选项。
- 原则(识别原则):识别支撑论证的一般规则或原则。
- 论证方式(描述论证):描述论证如何逻辑地构建。
- 解释悖论:提供一个解释来调和看似矛盾的信息。
例子:种子指令
下列哪一项,如果为真,最能加强“高尿酸水平增加了心血管疾病的风险”这一论点?
(A) 一些患有高尿酸血症的个体并未发展成心血管疾病。
(B) 研究发现体力活动对血液中的尿酸水平没有显著影响。
(C) 膳食补充剂已被证明可以降低血液中的尿酸水平。
(D) 大量的心血管疾病患者被发现其尿酸水平超过了高尿酸血症的定义阈值。
(E) 有心血管疾病家族史的个体更有可能具有高尿酸水平。
指令优化流程 优化流程包含多个建议者-编辑代理,它们将逐一审查每一对(段落,问题)并创建更多的此类对,目标包括:(1) 修改段落,使问题变得无法回答,(2) 在可能的情况下,修改段落以改变答案的方向,通常是相反方向,或者 (3) 修改问题或答案选项(如果适用),使其变得更复杂。 以下是一个例子,说明了建议者代理尝试添加一个困难的干扰项以迷惑测试者的情况。
例子: 假设原始问题是:
问题:下列哪一项,如果为真,最能加强“高尿酸水平增加了心血管疾病的风险”这一论点?
正确答案:(D) 大量的心血管疾病患者被发现其尿酸水平超过了高尿酸血症的定义阈值。
优化后的版本可能是:
问题保持不变,但在答案选项中增加一个困难的干扰项:
(D) 大量的心血管疾病患者被发现其尿酸水平超过了高尿酸血症的定义阈值。
(N) 新增的干扰项:多项独立研究一致表明,在无症状的高尿酸血症患者中,尿酸水平与心血管疾病的发生率呈正相关。
通过这种方式,新增的选项(N)虽然看似合理且基于事实,但实际上是用来混淆测试者的,因为问题询问的是什么最能加强给定的论点,而不是提供额外的相关信息。
回复生成
使用强大的模型: AgentInstruct 使用像 GPT-4 这样的强大模型来生成响应,这些模型具有更高的理解和生成能力。
工具的使用: AgentInstruct 允许代理使用各种工具,如搜索引擎、代码解释器和计算器,来生成更准确和复杂的响应。
反思和迭代: Agent可以回顾之前的解决方案,生成批评意见,并不断改进解决方案,从而提高数据的质量。
数据集的汇总结果产生了大约2580万条配对指令,所有这些都纳入了Orca-3的训练中。使用380万条指令(Orca-2.5数据集)单独训练Orca-2.5。比较和评估通过AgentInstruct的2200万条指令的影响。
使用 Orca-Bench 数据集评估了所有基线模型的表现。这些基线模型的表现相对于 GPT-4 在0到10的评分范围内进行打分。
让大模型生成一些难负样本扩充回答多样性
局限性:
- 数据偏差:经过大量数据训练的大型语言模型可能会无意中携带源数据中存在的偏差。因此,这些模型可能会生成可能带有偏见或不公平的输出。
- 缺乏透明度:由于复杂性和规模,大型语言模型可以像“黑箱”一样运作,使得很难理解特定输出或决策背后的原理。建议查看Azure提供的透明度说明以获取更多信息。
- 内容危害:大型语言模型可能会造成各种类型的内容危害。在使用这些模型时,了解这些危害并采取措施防止它们是很重要的。推荐利用不同公司和机构提供的各种内容审核服务。重要的是,希望政府和技术领导者将来能围绕AI技术的内容危害制定更好的法规和标准。
- 幻觉:需要注意并谨慎不要完全依赖某一语言模型做出关键决策或获取可能产生深远影响的信息,因为目前尚不清楚如何阻止这些模型编造假内容。此外,还不清楚小型模型是否在无基础生成用例中更容易出现幻觉,因为它们规模较小,记忆容量有限。
- 潜在滥用:如果没有适当的保护措施,存在这些模型可能被恶意用来生成虚假信息或有害内容的风险。
- 数据分布:模型的表现很可能与其调整数据的分布密切相关。这种相关性可能限制了它在训练数据集中代表性不足的领域中的准确性。