AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Adobe公司RAG实践——检索增强生成用于领域特定问答
发布日期:2024-04-26 11:11:05 浏览次数: 1669


摘要

问答(QA)已成为大型语言模型先进发展中的重要应用。通用预训练的大型语言模型用于问答并未经过专门训练以正确理解特定领域(如金融、医疗保健、教育和产品客户服务)的知识或术语。为了更好地满足领域特定理解的需求,我们为Adobe产品构建了一套内部问答系统。我们提出了一个新颖的框架,用于编制大型问答数据库,并开发了检索感知微调大型语言模型的方法。我们展示了微调检索器会显著改善最终生成结果。我们的整体方法在生成过程中减少了幻觉,同时保持最新检索信息以进行上下文基础。

引言

随着先进的自然语言处理技术,大型语言模型(LLMs)在许多领域和应用中展现出令人印象深刻的能力,包括聊天机器人、语言翻译、文本摘要和个性化机器人辅助。问答已成为大型语言模型(LLMs)的重要应用,增强了聊天机器人在医疗保健、金融、教育和客户服务等多个领域的能力。

然而,传统的问答系统和基于LLMs的通用问答系统并未经过专门训练以理解特定领域的知识和术语。它们在有效检索和呈现相关信息方面会面临挑战,尤其是在动态更新的数据库中。例如,用户对Adobe产品的问题更多涉及如何使用和产品特性。而针对Adobe产品之外的问答系统并未经过专门训练以正确理解Adobe术语。此外,应用和功能经常变化,现有系统通常无法获取有关Adobe产品的最新信息。因此,它们无法提供产品内交互(例如,将答案中提到的菜单项链接到产品中的实际菜单项)。如果产品数据基于云,隐私风险也是一个问题。此外,外部解决方案难以跟上Adobe产品的最新变化(例如,功能从测试版转为正式版)。

在这项工作中,我们开发了一个新框架,以找到用户对Adobe产品提出的关于Adobe产品的问题的答案(例如,“如何在Acrobat中删除PDF中的所有高亮显示”)。为了解决这些挑战,我们的方法建立在基于检索的问答系统之上。我们的智能检索系统检索最有用的最新相关内容。检索系统以基于Adobe数据和用户行为数据(点击)的自监督方式进行训练。我们发现,将检索器在领域特定文档和点击数据上微调会显著改善检索结果的nDCG和质量。然后,我们提出了一种新颖的检索感知微调大型语言模型的方法,以获得用于Adobe产品的问答系统。我们系统地增强此系统以提高其问答性能,确保用户获得及时准确的信息。

总的来说,这项工作的贡献可以总结如下:

  • 我们提出了一个新颖的框架,用于编制大型问答数据库。
  • 我们提出了一个全面、先进且可投入生产的基于检索的问答系统,其中检索器基于用户行为数据(点击)进行训练。我们展示了改进检索器如何提高最终生成结果。
  • 我们开发了一种新颖的检索感知微调大型语言模型的方法,并使用查询增强和产品消歧流程来改善模糊查询的检索和生成质量。
  • 我们的整体方法在生成过程中减少了幻觉,同时保持最新检索信息以进行上下文基础。

相关工作

基于LLM的问答系统 最近大型语言模型已得到很好的发展,在许多领域和应用中表现出色。具有数十亿参数并经过大量数据训练的模型可以帮助人类完成简单的语言理解或生成任务。为了适应特定任务或与人类偏好一致,这些模型通常需要进行微调。Bakker等人对大型语言模型进行微调以使摘要输出与人类一致。在我们现实生活中的应用中,Singhal等人评估了PaLM在医疗问答和理解任务中使用多种提示策略。使用多种提示策略,Flan-PaLM在基准MultiMedQA的每个数据集上均取得了最先进的准确性。Yu等人探索了基于理由的提示机制与大型语言模型在法律问答任务中的应用。Zhou等人提出,强大的大型语言模型已经获得了知识和能力。该模型只需要少量数据进行指导微调。

检索增强问答系统 尽管大型语言模型可以生成流畅或自然的文本,但可能对源内容不忠实,即产生幻觉。参数化知识偏见是大型语言模型产生幻觉的原因之一。为了减轻幻觉,一些工作致力于将检索增强架构纳入系统中。Lewis等人提出了RAG,一种用于检索增强生成的通用微调方法。RAG结合了预训练的参数化和非参数化存储器,以实现更好的语言生成。Li等人提出了医疗聊天模型ChatDoctor,使用医疗领域知识在LLaMA上进行微调。该模型使用真实患者-医师对话和介绍中的医疗数据进行微调。借助外部知识库,ChatDoctor模型可以检索在线和离线的医疗领域知识,回答关于最新医学术语和疾病的医疗问题,减轻了LLMs中的幻觉和错误。

图1:我们提出框架的概述。

方法

本节将更详细介绍我们的框架。我们首先介绍我们的检索系统,该系统检索最有用的最新相关内容。预训练模型会混淆Photoshop和Photoshop Express,Premiere Pro和Premiere Rush等。我们提出通过产品识别进行查询增强,以提高生成的整体准确性和质量。我们根据Adobe数据和我们训练的检索器微调大型语言模型,以理解用户的问题和上下文,并提供有用的回应。

框架概述

我们使用多个数据源,包括Adobe Helpx文档标题和描述、Adobe社区问题、LLM生成的Helpx文档问题以及YouTube视频转录,利用我们微调的语言模型生成向量存储。当用户提出问题时,会执行相似性搜索,以在我们的语料库中找到最接近的问题匹配项。将最相关的答案与用户查询一起传递给我们微调的LLM,然后LLM为用户提供上下文响应。图1显示了我们提出框架的概述。

检索器

检索器训练数据集

Adobe Helpx(helpx.adobe.com)每年吸引数百万独立访问者,寻找与Adobe产品相关的教程和学习内容(Adobe Helpx文章、Adobe帮助视频)。为了理解用户行为,我们利用用户查询helpx和Adobe社区内容文章的点击日志生成我们的数据集。我们使用2022年1月至2023年6月的日志作为训练和评估集。该数据集提供了一个庞大且多样化的数据池,对于学习用户查询和我们的检索文档的良好表示至关重要。表1展示了数据集中的一个示例行,表2总结了整体数据集统计。

对于每个文档,我们利用文档标题和描述来表示文档的要点。标题通常为5-20个词,而描述通常为20-50个词,整个文档可能有多页长。我们的数据集中的每个文档都专注于特定任务,因此我们发现标题和描述是文档的恰当表示,而不是传递完整文档文本。

表1:检索器训练数据集中的示例行。

表2:数据集的总结。

标题和描述的一个示例如下:

  • 标题:如何使用Adobe Acrobat编辑PDF中的图像或对象
  • 描述:学习如何使用Acrobat在PDF中添加、调整大小、移动或替换图像和对象。本教程展示了使用Flip、Drag、Rotate、Group、Arrange等工具在Acrobat中编辑图像的多种方式。 我们还利用一个相关性字段,通过使用查询-文档对的点击比率的对数来定义,如方程式1所示。??代表特定查询。? ?代表特定点击的文档。clicks代表该对的点击次数,??代表??点击的文档集合。

这一点很重要,因为对于一个查询,可能有多个点击的文档,我们希望更关注点击次数较高的对。我们取最大点击比率的对数,因为这样可以使点击次数较少的文档也参与学习过程。

检索模型训练

为了准确学习查询和文档的语义表示,我们利用对比学习。对比学习是一种技术,允许在表示空间中对相似样本进行紧密建模,而无需明确标签。该模型以自监督方式训练,我们利用单个模型来表示查询和文档。这使我们能够将它们都带入相同的表示空间。

我们利用在句子相似性任务上预训练的transformers(MPnet),因为它们擅长使用注意力理解长文本。我们在训练时使用Adam优化器和均值池化。我们还尝试了最大池化,以及第一个令牌池化(类似于cls池化),发现均值池化效果最好。

此外,我们利用我们的相关性度量(方程1中的最大点击比率的对数),并将其用于加权的交叉熵损失函数。这使我们能够根据文档对查询的相关性对查询-文档损失进行加权。这一点很重要,因为它在相关文档集合内添加了固有的排名信号。

图2:检索器的训练过程。

图2展示了我们的训练过程。查询和文档文本一起传递到网络的训练批次中,并从生成的表示中计算余弦相似度。基于句子相似性分数最小化均方损失。两个transformer实例之间共享相同的权重,从而使我们能够一起学习查询和文档的表示。

检索索引创建和数据库

为了创建我们的检索索引,我们利用主要来源(Adobe Helpx文档、Adobe社区问题)以及派生来源(生成的问答对)提供丰富多样的检索集。我们使用我们微调的模型生成所有来源的表示。我们利用以下来源:

  1. 主要来源

  • Helpx文档(标题、描述)- 我们获取Helpx文档的标题和描述,并进行嵌入。

  • 社区问题- Adobe拥有一个丰富的社区论坛,Adobe用户可以在该论坛上提出与产品相关的问题,并由Adobe社区专家提供帮助。我们利用这宝贵的数据源作为我们检索索引的一部分。

  • 派生数据集

    • Helpx生成的问答对- 为了为Helpx文档生成更广泛的覆盖范围,并提取所有信息的子要点,我们使用由大型语言模型驱动的问答生成模块从每个文档生成多个问答对。

    • Adobe Care视频问答对- Adobe Care是Adobe运营的YouTube频道,为一些备受关注的问题提供视频教程,同时为新功能提供操作指南。我们提取这些视频的文本,并利用我们的问答生成模块创建有用的问答对。

    整体索引架构如图3的流程图所示。

    图3:索引的整体架构。

    用于构建数据库的预处理

    为了筛选我们的派生数据集,我们利用预处理方法利用问答生成模块生成问答对。此外,我们还使用一个命名实体去除模块为数据集提供隐私保护。

    问答生成模块

    问答生成模块旨在筛选我们的派生数据集,如第3.3节所述。对于Helpx文档和AdobeCare视频文本,我们利用问答生成模块创建问答对。问答生成模块由一个大型语言模型驱动,其提示专为我们的任务设计。我们使用的一个示例提示如下:

    提示:您是一个AI助手,帮助创建问答对。您可以用QUESTION开头每个问题,用ANSWER开头每个答案。详细回答。

    我们发现进行少样本学习相比零样本生成有显著的准确性提升[12]。我们在每次调用我们的LLM时在几个示例文档以及生成的问答对之前添加一些样本,以指导问题的生成风格和质量。在我们的情况下,我们更喜欢逐步回答问题,因为Adobe用户倾向于喜欢离散步骤而不是文本块。表3显示了由问答生成模块创建的一个示例问答对。

    作为我们索引流水线的一部分,我们自动化任何新文章和视频的问答对创建,从而使我们能够为索引中的所有文档提供更丰富的检索上下文。

    命名实体去除模块

    在我们数据驱动生态系统的流水线中,命名实体去除模块占据关键位置,确保社区来源的Adobe文本语料库的清洁。该模块旨在通过删除所有类型的个人可识别信息来执行去标识化,从而加强数据集的隐私保护。

    表3:由问答生成模块创建的一个示例问答对。

    QUESTION:

    如何调整Adobe Premiere Elements中视频剪辑的亮度、对比度和颜色?

    ANSWER:

    1. 点击“添加媒体”导入要增强的视频剪辑。

    2. 选择“引导”>“调整亮度+对比度和颜色”。

    3. 要调整视频剪辑,请选择它。

    4. 单击“调整”面板以调整所选设置。

    5. 单击“照明”以调整亮度和对比度。

    6. 在调整面板的缩略图中单击以预览亮度的更改。

    7. 单击“更多”,拖动滑块进行更精确的调整。

    8. 单击调整面板中的“颜色”以打开颜色部分。

    9. 您可以在“颜色”选项卡中调整色调、亮度、饱和度和活力。

    10. 单击网格中的缩略图以预览更改。

    该模块采用双层命名实体识别(NER)策略:

    • 基于机器学习的NER:在核心部分,该模块集成了最先进的NER模型en_core_web_lg。该模型在大型语料库上进行了预训练,并采用深度学习架构,能够高度准确地对“PERSON”类型实体进行分类。

    • 基于正则表达式的自定义清理:除了机器学习的NER,还部署了一个名为custom_removal的自定义函数,用于处理非标准或基于模式的文本片段。这特别针对识别和消除文本模式、电子邮件格式和签名行。它还包括符合各种国际格式的电话号码清理模式。

    该模块在以JSON为基础的序列化格式中迭代处理数据集。每个条目都通过双层NER处理,经过清理的文本替换原始内容,从而确保数据完整性同时增强隐私。序列化输出设计用于无缝集成到后续机器学习工作流中,包括我们专有的检索和排名算法。

    这种模块化设计确保了命名实体去除模块可以无缝地插入到数据处理流水线的各个阶段,从初始数据摄入到模型训练前的清理。

    通过产品识别进行查询扩展

    我们看到的一个关键挑战与模糊查询相关的产品消歧义。由于几个Adobe产品可能包含相似的功能,添加产品消歧义有助于提高整体准确性和生成质量。模糊查询通常会收到模糊的答案。

    我们利用一个产品意图提取模型[14],将所有输入文本映射到一个或多个Adobe产品。然后将这些信息传递给检索器,以便在检索到的文档中提供更好的相关性。

    LLM提示

    一旦检索器从基于用户查询的数据库中收集了一个或多个段落,这些段落作为上下文提供给LLM,并提示LLM根据段落回答用户查询。

    LLM的提示如下:

    您是一个助手,帮助人类使用[产品名称,例如Adobe Premiere Pro]。您将获得一组问答对(有些对可能不相关)和一个用户查询。您的目标是仅使用给定问答对中的信息回答用户查询。

    问答对列表:[...]

    用户查询:[...] 答案: 在某些情况下,问题-答案对列表中的一些对可能是多余的。因此,在将问题-答案对列表提供给LLM之前,我们的系统会从问题-答案对列表中删除重复项。具体来说,我们使用Levenshtein距离以及每个问题/标题与问题-答案对列表之间的语义相似度来计算。如果Levenshtein距离低于某个阈值,或者语义相似度过高,我们会计算它们两个答案之间的语义相似度。如果两个答案在语义上过于相似,我们会根据来源可信度(Helpx > 社区 > YouTube > LLM生成的QAs)和答案长度删除其中一个。

    LLM微调

    为了训练LLM,我们使用基于文档的正文(?+),负面文档?−,以及问题-答案对(?, ?)。? = LLM? (?+, ? −*, ?*)。?是生成的结果,将其与?进行比较以更新LLM。以下是我们生成训练样本的模板。

    基于文档的正文(?+)是生成(?, ?)对的原始来源。为了增加微调后的LLM模型的鲁棒性和泛化能力,我们提出以下方法:

    • 当答案(?)的长度短于阈值(例如90个标记)时,我们会从训练集中过滤掉这些示例,以指导微调后的LLM模型生成具有实质信息的答案。

    • 文档是从我们微调后的检索器模型中检索的。我们使用多个(?+)和(? −)来增加检索器组件的召回率和微调后的LLM的鲁棒性。通过检索与预先索引的嵌入空间中的真实文档相似的文档来选择前k个(?+)。

    • 负面文档(? −)是通过“从数据库中随机抽样”和选择与原始文档不太相似(即余弦相似度< ?sim)且与原始文档不是极端不相似(即余弦相似度> ?dissim)的文档准备的。

    • 我们还添加了没有基于文档(?+)的样本,只有负面文档(? −)的样本。在这种情况下,答案设置为“此问题目前无法回答”。这使LLM在训练时更专注于文档中的知识。

    实验

    检索器评估

    对于我们的评估,我们使用归一化折现累积增益(nDCG)作为我们的指标,有两个关键原因:

    • 相关性分级:nDCG不仅考虑文档是否相关,还考虑相关程度。我们利用数据集中的相关性数字为每个“正确”文档分配相关性(每个查询可能有多个相关文档)。

    • 排名敏感性:nDCG考虑排名列表中相关文档的位置。对于出现在列表顶部的相关文档给予更高分,这对我们很重要,因为我们只能向生成器传递有限的上下文。

    对于我们的检索器评估,我们创建了每个产品的评估数据集,由人类注释员验证以确保质量。对于每个评估,我们选择Adobe用户以前提出的查询(根据查询长度和查询频率进行抽样)。我们确保模型在训练中以前没有看到这些查询。

    1. Acrobat查询-标题匹配 - 创建一个包含300个查询到Helpx文档标题数据集。在构建此数据集时,我们对短查询和长查询进行了抽样。

    2. Photoshop查询-标题匹配 - 250个查询到Helpx文档标题数据集。

    3. Lightroom查询-标题匹配 - 100个查询到Helpx文档标题数据集。

    4. Adobe Express查询-标题匹配 - 250个查询到Helpx文档标题数据集。

    在计算我们微调模型的nDCG指标时,我们考虑文档集中的所有文档,而不仅仅是评估批次中的文档,以使任务更具挑战性。我们将我们的检索器与行业中提供的几种开源和闭源选项进行比较。

    我们看到我们的微调模型在检索准确性方面有显著提高,且模型大小更小,如表4所示。

    我们看到在评估中,头部和尾部查询的检索质量显著提高。两个主要改进包括:

    1. 领域理解 - 获得的关键属性之一是能够理解产品名称并赋予其重要性。预训练模型会混淆Photoshop和Photoshop Express,Premiere Pro和Premiere Rush等。

    2. 能够理解较短的句子。我们的用户行为显示,用户通常输入少于15个单词的句子来获取所需的数据。我们的模型在较短句子上优于基线。

    检索索引数据库中索引的总项目数为121,547。数据统计如表5所示。

    表4:基于nDCG评估的检索器性能

    表5:检索索引数据库摘要

    表6:带有产品识别和不带产品识别的检索器生成的响应

    通过产品识别进行查询扩充

    为了解决Adobe各种产品之间的模糊查询,并提高生成响应的整体准确性和质量,我们利用产品意图提取模型,将所有输入文本有效地映射到一个或多个相关的Adobe产品。这提取的产品信息传递给检索器,从而增强检索到的文档的相关性。

    表6显示了带有产品识别和不带产品识别的检索器生成的答案。在使用产品意图模型之前,也就是没有将产品识别传递给检索器时,我们得到一般性的响应,因为多个产品中都有PDF模板,如Illustrator、Indesign和Acrobat。通过提供产品消歧义,我们专注于Adobe Acrobat,这是最常用于PDF的产品。

    定量评估

    除了进行组件特定的评估外,我们还定量和定性地评估整个系统。对于我们的定量评估,我们专注于Adobe Acrobat帮助问题。我们利用137个用户提出的问题,并利用Acrobat产品专家为每个问题生成黄金响应。这些问题包括短常见问题,如“如何从PDF中删除密码”,以及较长的问题,如“我有一个大尺寸的PDF,无法共享。如何压缩它并与他人共享这个压缩的PDF”。

    对于评估问题,我们从所有候选人那里生成响应,然后利用GPT4[11]评估候选生成的答案与金标人工注释答案的相似度,评分范围为0-1。对于GPT-4,我们设置'n = 20, temperature = 1, top p = 1'进行20次采样以估计标记概率[9]。最后,我们对一行的所有分数取平均值。相关性分数如表7所示。

    我们看到改进检索器确实影响了生成的整体质量。对于领域内任务,我们建议微调检索器以增强整体生成性能。我们还看到微调后的生成器在测试集上表现不佳。我们将其归因于LLM生成的qa对(训练集)与人工生成的真实写作风格之间存在差距。

    表7:Acrobat测试集上的生成相关性

    定性评估 - 生成答案的比较

    在本节中,我们将通过几个示例比较我们系统的输出与OpenAI的ChatGPT1的输出。

    示例1

    • 问题: 什么是萤火虫?

    • ChatGPT的答案: 萤火虫是一种能够发光的生物发光昆虫,以其产生光的能力而闻名。它们属于Lampyridae家族,是鞘翅目中的一部分,即甲虫。在一些地区,尤其是在北美洲,萤火虫通常被称为萤火虫。[...]

    OpenAI的ChatGPT没有回答关于Adobe萤火虫的问题。即使问题表达得更具体,ChatGPT也不知道答案。相比之下,我们系统的答案更准确。

    • 问题: 什么是Adobe萤火虫?

    • ChatGPT的答案:

      我在2021年9月的最新知识更新中,没有广泛认可的称为“Adobe萤火虫”的Adobe公司软件或产品。Adobe以其广泛的软件产品而闻名,包括Adobe Photoshop、Adobe Illustrator、Adobe Premiere Pro、Adobe Acrobat等,这些产品通常用于设计、视频编辑、文档管理以及各种创意和生产力任务。[...]

    • 我们系统的答案:

      萤火虫是一系列创意生成AI模型,将进入Adobe产品,具有使用日常语言生成非凡新内容的能力。它为数字成像和摄影、插图、艺术品、平面设计、视频、营销和社交媒体以及3D建模提供了无限的创意选择。它可以从几个词或甚至一个草图中生成自定义矢量、画笔和纹理,并可以改变视频中的情绪、氛围,甚至天气。它还提供生成图像合成和将简单的3D构图转换为逼真图像的能力。示例2 检索至关重要的另一个关键领域是在需要定价信息时。由于定价和优惠随时间变化,检索最新信息至关重要。ChatGPT提供了问题的一般回答,而我们的解决方案能够提供最新的数据。

    • 问题:学生购买 Premiere Pro 需要多少费用?

    • ChatGPT的回答:

    根据我在2021年9月最后一次知识更新的信息,Adobe为学生和教师提供了名为Adobe Creative Cloud for Education的特殊定价计划。作为该计划的一部分,Adobe Premiere Pro的费用因您选择的订阅和所在地而异。以下是学生的一些一般定价指南:

    Adobe Creative Cloud 全应用程序计划:该计划包括访问所有Adobe Creative Cloud应用程序,包括Premiere Pro。学生/教师定价通常在每月约19.99美元至29.99美元之间变动,具体取决于当时提供的具体促销优惠。Adobe偶尔为学生提供折扣或促销活动,因此查看他们的网站以获取最新定价是个好主意。

    Premiere Pro 单应用程序计划:如果您只需要访问Premiere Pro,Adobe还提供单应用程序计划。根据我最后一次更新的信息,该计划针对学生和教师的定价约为每月20.99美元。

    • 我们系统的回答:

    Premiere Pro作为Adobe Creative Cloud全应用程序计划的一部分提供给学生,该计划包括20多个应用程序,如Adobe Photoshop、Acrobat和Illustrator。该计划的常规价格为每月54.99美元,但符合条件的学生可以以每月19.99美元的折扣价格获得,首年优惠超过60%,之后每月29.99美元。该计划还包括100GB的云存储空间,并通过Adobe Stock提供数十万个免版税资产,供商业或个人使用。学生还可以通过Adobe Creative Cloud全应用程序计划的7天免费试用来尝试Premiere Pro。有关更多信息,请参阅Adobe的条款和条件或比较计划和定价。

    请注意,除了回答质量之外,我们的系统在许多方面优于使用ChatGPT:隐私、成本、更新以包含有关Adobe产品的最新信息,我们的系统可以在答案中添加超链接,甚至链接到产品内的面板/窗口/工具等。我们可以收集用户反馈以随时间改进我们的答案。这使得内部问答解决方案比仅使用ChatGPT更可取。

    结论

    在本文中,我们介绍了一个针对Adobe产品的新型问答系统,包括检索器和生成器。我们使用Adobe文档,如Helpx文档作为检索器的训练数据集。此外,我们为相关性推导了一个度量标准,并在训练检索器时将其用于加权交叉熵损失函数。我们利用多个数据源构建我们的检索数据库。在预处理中,我们删除个人信息并为数据库生成问答对。为了解决模糊查询的歧义挑战,我们向检索器添加了产品意图信息。我们使用基于文档的、负面文档和问答对训练我们的问答系统。我们将我们的问答系统与OpenAI的ChatGPT在一些涉及Adobe产品的问题上进行了比较。实验表明,虽然ChatGPT无法正确回答问题或为用户生成一些无用信息,但我们的系统可以生成最新、简洁和正确的答案。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询