AI知识库 AI知识库

53AI知识库

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


ChatQA:适用于对话任务的RAG套件
发布日期:2024-06-28 19:56:12 浏览次数: 1647
CUTTING-EDGE TECHNOLOGY
ChatQA:适用于对话任务的RAG套件




















单位 | NVIDIA

研究方向 | RAG,MT-QA

论文标题| ChatQA: Surpassing GPT-4 on Conversational QA and RAG

论文地址| https://arxiv.org/pdf/2401.10225

代码地址| https://chatqa-project.github.io/




















在当前的问答生成任务中,大模型(LLMs)面临多重挑战。首先,模型在上下文理解能力上存在不足。在多轮问答和检索增强生成(RAG)任务中,模型需要深入理解并有效利用对话历史(内部上下文)及外部上下文信息。然而,现有方法通常面临两个主要问题:(1)当仅依赖最后一轮的问题进行检索时,由于缺乏上下文信息,检索效果可能不尽人意;(2)将所有对话历史信息直接输入模型,可能会造成信息冗余,影响生成内容的质量。因此,提升检索器对上下文的召回能力,以及生成器对上下文的理解和利用能力,是亟待解决的关键问题。其次,生成模型可能因过于谄媚而选择弱化其拒绝回答的能力。在信息不足的情况下,盲目回答可能导致"幻觉"现象的发生。

针对上述问题,我们推荐阅读的论文ChatQA提出了一种创新的两阶段指令微调方法。该方法通过利用现有的以及自建的高质量微调数据集,逐步增强生成模型对上下文的理解和应用能力,并引导模型在适当时候生成"无法回答"的输出,从而提升问答生成任务的整体性能。此外,为了更有效地处理会话输入,作者采用了会话查询和上下文对(由自建的高质量微调数据集转换而成)对检索器进行进一步微调。

最终,作者验证了经过两阶段微调的ChatQA-1.0-70B模型,在不使用任何来自OpenAI GPT模型的合成数据的情况下,其性能超越了GPT-4-0613和GPT-4-Turbo。值得注意的是,基于Llama3的ChatQA-1.5-70B在十个类别的数据集中均超越了GPT-4-Turbo。同时,作者展示了通过使用会话数据对单轮查询检索器进行微调,可以达到与查询重写相媲美的效果,还避免了增加额外的计算时间和API成本。最后,作者证明了在模型训练中引入一定比例的"无法回答"样本,训练模型在信息不足时能够生成恰当的"无法回答"输出,可以减少错误回答的风险。


1

微调生成器



作者提出了一种两阶段指令微调方法,具体包括以下两个阶段:


阶段1:监督微调(SFT)
思维导图生成

1.1

目标:使模型能够理解和遵循基本指令,进行对话生成。

微调数据集:使用现有的高质量的指令和对话数据集对预训练LLMs进行微调,包括社交对话、长篇问答、FLAN和合成指令数据集等。所有数据都以对话形式统一,包含“系统”(System)、“用户”(User)和“助手”(Assistant)角色。

微调方法:在这个阶段,模型接收到的输入格式如下:

在每轮对话结束时,将助手的最新回答作为模型输出的监督信号。这个模板用于指导模型在第一阶段进行监督微调。



阶段2:上下文增强的指令微调
思维导图生成

1.2

作者设计基于上下文的单轮QA和对话QA数据集,对第一阶段获取的微调模型进行二次微调,旨在提升模型在上下文感知和检索增强生成中的问答能力。

人工数据集(HumanAnnotatedConvQA)

    • 目的:创建一个高质量的基于文档的多轮对话问答数据集。

    • 方法:从互联网上收集7000个涵盖多种主题的文档,通过会话问答数据收集指南指示标注者分别扮演提问的用户和回答的助手,为每个文档生成一个多轮对话,平均每个对话包含5轮用户-助手的互动。

    • 不可回答场景设计:会话问答数据收集指南要求标注者标记出与用户问题相关的所有上下文(在文档中),后续通过删除与问题相关的上下文,即可模拟无法回答的情况。对于无法回答的问题,标准回复是“抱歉,根据上下文找不到答案”

合成数据集(SyntheticConvQA)

    • 目的:为验证HumanAnnotatedConvQA的质量,作者利用GPT-3.5-Turbo生成一个合成的对话问答数据集。

    • 方法:作者从Common Crawl中收集7000个文档,每个文档约1000字,涵盖广泛领域。对应每个文档,作者使用GPT-3.5-Turbo和下面的模板用于生成一个多轮对话问答样本,总共生成7000个多轮对话问答,平均每个对话包含4.4轮用户-助手的互动。

    • 不可回答场景设计:为了在合成数据集中模拟不可回答的场景,作者构建了1500个包含不可回答注释的用户-助手互动。流程如下:

      1. 数据切块:将每个对话的文档切成多个不同的块。

      2. 重叠评分:使用4-gram召回分数来评估每个块与助手答案的重叠程度(4-gram召回分数是衡量答案中的4-gram短语在每个块中出现比例的指标),将4-gram召回分数高于0.5的块定义为“高度重叠”块,低于0.1的块定义为“低度重叠”块。

      3. 删除块:将高度重叠的块删除。删除相关块后,如果剩余的上下文不足以回答问题,则将该样本标记为不可回答。标准回复为“抱歉,根据上下文找不到答案”。


混合数据集

1. 多轮对话数据集(HumanAnnotatedConvQA或者SyntheticConvQA)

2. 单轮对话数据集(现有的):进一步增强模型的问答能力。 

3. 金融领域数据(现有的):考察表格文档、算术计算的问答能力。

4.  阶段1的SFT数据集:以维持模型的指令跟随能力。

微调

作者使用混合数据集和以下模板用于指导模型在第二阶段的上下文增强指令微调。可见,除了第一阶段的基础模板外,第二阶段添加了{Context for Latest Question}和{Instruction}来增强对上下文的理解和回答能力。注意,在每轮对话结束时,将助手的最新回答作为模型输出的监督信号,并且,对于不同的数据集,根据答案类型(短答案、长答案、算术计算等)使用不同的指令。

2

微调检索器



为了更好地处理多轮对话中的查询(尤其是在处理包含代词的后续问题时),避免信息不足和冗余输入的问题,作者使用自建的高质量对话数据集对检索器进行了微调。具体地, 作者使用对话(查询,上下文)对,进一步微调单轮检索器,使其更好地应对对话输入。 

HumanAnnotatedConvQA:直接使用对话(查询,上下文)对的标注数据,进一步微调单轮查询检索器。因为,人工标注过该信息。

SyntheticConvQA

1. 将对话问答数据集中的每个文档切分为不同的块。

2. 计算助手回答与每个块之间的4-gram召回分数。

3. 将具有最高召回分数的块视为当前用户问题的黄金块,即查询对应的上下文。

4. 使用构建的对话(查询,上下文)对来微调单轮查询检索器。

通过这种方法,检索器能够更好地理解多轮对话的上下文,并有效地检索出相关的上下文信息,提高模型在开放域问答场景下的表现。

3

实验要点总结




评估检索器
逆向DFS扩充上下文逆向DFS扩充上下文

3.1

作者在五个现有的长文本对话问答数据集上对比分析了微调检索器和使用查询重写(GPT-3.5-Turbo)方法的召回率,证明了在人工构建数据上微调的检索器的有效性。


评估生成器


3.2

作者比较了ChatQA和各种基线方法在10个对话式问答数据集上的表现,发现与最先进的OpenAI模型(即GPT-4-0613和GPT-4-Turbo)相比,Llama3-ChatQA-1.5-8B取得了相近的成绩,而Llama3-ChatQA-1.5-70B则超越了最强基线:


消融实验
通路矩阵生成

3.3

在对微调方法的消融实验中,作者发现:(1)分阶段调优的重要性,阶段1增强了ChatQA的指令遵循能力,这对阶段2调优有益。Stage-2调优(即上下文增强的指令微调)则使模型能够学习如何有效利用检索到的或相关的上下文信息。(2)单轮对话数据集的有效性,证明单轮对话问答数据集能影响模型的多轮对话问答能力,即,添加单轮对话问答数据集能提高模型有效利用相关上下文回答问题的能力。(3)对话问答数据的有效性。作者发现在微调数据中移除对话问答数据会影响模型的多回合问答能力。(4)人工标注数据的质量。作者发现使用SyntheticConvQA和HumanAnnotatedConvQA的ChatQA模型在平均得分方面取得了可比的结果,表明构建先进的对话问答模型无需依赖OpenAI模型的合成数据,肯定了人工标注数据的质量。

作者对比分析了在第二阶段指令微调中,选取连续上下文还是使用前k块作为上下文。因为,微调使用所有数据集的上下文都是作为包含答案的连续段落或文档提供的。相比之下,在推断过程中,模型需要处理检索的前k块长文档。为了解决这种训练/测试不匹配的问题,作者调查了用检索的前k块替换一些连续段落是否会增强模型的鲁棒性。作者观察到,在训练中使用“前5”块作为上下文会提高需要检索的数据集的性能。但它会降低非检索数据集的性能。总体而言,这两个模型表现相当。

最后,作者展示了关于检索的上下文/块数量、上下文排序以及不同的检索器对会话问答和RAG结果的影响的消融研究。



拒答实验
结构化上下文生成

3.4

作者比较了ChatQA模型与OpenAI模型在QuAC和DoQA数据集上的表现。作者发现:

1. 与使用SyntheticConvQA相比,使用HumanAnnotatedConvQA显著提高了QuAC和DoQA的平均准确率。这是因为人工注释数据的无法回答注释质量更高,显著提高了无法回答情况下的准确率。

2. 在拒答任务中,最佳模型(ChatQA-1.0-70B)在与GPT-3.5-Turbo相比的同时取得了显著更好的平均准确率,而与GPT-4-0613相比ChatQA仍然存在轻微差距(约为3.5%)。

3. 作者发现Llama3-ChatQA-1.5-8B/70B通常比ChatQA-1.0-70B的准确率低。这是因为当无法在上下文中找到答案时,模型倾向于基于自身知识给出回应,导致无法回答情况下的准确率较低。

4. 作者还进行了关于人工注释数据中无法回答样本数量的消融研究,发现,使用少量无法回答的样本(例如1.5k)能够在无法回答的评估以及整体CHATRAG BENCH得分上取得显著结果,但增加更多的无法回答的样本并不一定会导致更高的准确率得分。




其他实验


3.5
针对不同类型数据的模型性能分析
1. ChatQA-1.0-70B在纯文本文档(Avg-text)中取得了更好的结果。
2. GPT-4-0613在给定表格数据(Avg-table)时显示出更好的问答能力。
3. 关于需要或不需要检索的数据集(Avg-ret和Avg-nonret),ChatQA-1.0-70B和GPT-4-0613是可比较的。
4. Llama3-ChatQA-1.5-70B在所有类别中性能均超过了GPT-4-0613和GPT-4-Turbo。
人工评估:进一步验证F1/EM指标有效性,展示ChatQA和GPT-4比具有竞争力。
在知识密集数据集上的表现:

4

总结



作者提出了适用于多轮对话的RAG框架,通过微调检索器和生成器,赋予了RAG组件对话上下文的召回能力,并且在多样的数据集上进行了大量的实验,验证了ChatQA的有效性,且能与最先进的GPT-4相比。






















点击上方卡片关注 [LLM星球]
欢迎交流与分享 ~

作者团队 | Cool LLMs 兴趣小组

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

定位:开箱即用的大模型落地应用平台

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

年轻人!来一起搞AI吗?

如果你看见AI对商业世界的变革,欢迎来和我们一起探索~

岗位:销售经理

查看详情

岗位:项目经理

查看详情

岗位:产品经理

查看详情

岗位:测试工程师

查看详情

联系我们

售前咨询
186 6662 7370
产品演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询