1.1 大模型应用的方向:RAG
1.1.1 什么是RAG
1. 生成式AI
一种能够生成各类内容的技术,包括文本、图像、音频和合成数据。自2022年底ChatGPT在全球范围内推广以来,基于Transformer解码器结构的大模型已能在短时间内为用户生成高质量的文本、表格、代码,使整个AI领域迈入了新的时代。
大语言模型(Large Language Model,LLM)经过海量文本数据的训练后,能将这些文本数据以一种黑盒形式压缩在模型参数中。预训练完成后,模型便掌握了大量的人类知识世界。当模型的规模足够大且经过指令微调对齐后,便可通过提示模板,运用零样本(zero-shot)或少样本(few-shot)的提示词来完成许多自然语言理解和自然语言生成任务。
然而,大模型并不具备在环境中不断变化的场景中回答特定问题所需的全面知识。例如,早期的ChatGPT的预训练语料库时间截止至2021年,这意味着模型无法准确输出2021年以后的事实性问题,这正是现代大模型所面临的知识更新困境。实际上,对于一个大模型来说,更新基础模型知识库是非常困难的一件事情。首先,需要保证预训练数据的质量;其次,更新知识库后的模型通常都需要重新训练,至少要将新数据与旧数据按照一定的比例进行混合训练,而不能仅仅使用新数据,否则会出现灾难性遗忘的问题。
2. RAG
2020年,Facebook在"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"一文中首先提出了一种称为检索增强生成(RAG)的框架。该框架可以使模型访问超出其训练数据范围之外的信息,使得模型在每次生成时可以利用检索提供的外部更专业,更准确的知识,从而更好地回答用户问题。
RAG在推理过程中分为两个阶段:检索和内容生成。在检索阶段,通过算法检索与用户问题相关的知识片段。在开放领域中,这些知识片段可以来自互联网上搜索引擎检索到的文档,例如微软Bing AI的模式;在私有领域的企业场景中,通常使用大量的内部文档通过更小的信息源约束来提高模型生成的安全性和可靠性。
完成检索之后,可以获取到一些与用户输入相关的可靠外部知识。在内容生成阶段,通过一个结构化的prompt模板约束,将这些外部知识添加到用户的问题中,并传递给语言模型。模型基于知识增强的prompt,通过自己的大量参数计算,就可以生成一个针对该用户问题的更准确的单宁。在这个过程中,还可以约束模型对生成的答案进行溯源,以方便地知道模型是依据哪些知识片段完成最终答案生成的。
1.1.2 RAG与模型微调的对比
模型微调是指在一个特定任务上用一定量的数据来训练模型的过程,通过在特定数据集上微调可以提高模型在特定数据集上的性能。如果有足够大的监督数据集,且数据集不会发生改变,那么微调是一个很不错的方法。尽管大模型的微调成本较高,但现在已有大量低成本微调的方法,例如LoRA。然而,如果数据集是动态的,就需要不断的重新训练模型以跟上数据的变化;或者如果没有足够大的数据集,那么微调不是一个好办法。在这种情况下,可以使用RAG来提高大模型的性能。同样,可以利用RAG来提供大模型在摘要、翻译等任务上的性能,因为这些任务可能无法进行微调。
RAG
- 定义:将大规模知识库检索与大模型生成相结合。检索相关文档并使用它们生成答案
- 优点:可以用到外部知识
- 挑战:需要可靠的召回系统
- 用例:数据经常更新的智能回答场景
模型微调
- 定义:使用较小的数据集细化针对特定任务的预训练模型。调整模型的权重以使其更适用于特定任务
- 优点:可以在特定任务上获得不错的效果,尤其是在监督数据充足的情况下
- 挑战:数据不足时存在过拟合风险,模型只能处理训练数据截止日期之前的场景
- 用例:利用模型完成特定任务,例如情感分类、意图识别
1.2 为什么需要RAG
1.2.1 大模型的知识更新问题
大模型的知识源于预训练阶段,通过大量的无监督数据,利用下一个词预测任务来完成训练。待训练完成之后,模型便能将大量的知识压缩到自身的参数中。然而,在互联网时代,知识更新迅速,导致大模型难以实时更新所蕴含的知识。
1.2.2 大模型生成结构的不可解释性问题
深度模型由于其内部结构非常复杂,导致人们难以理解模型对输入做出的决策。然而,模型的解释性在很多方面都非常重要,因为它可以让开发人员理解模型时如何进行预测的,从而对模型产生的结果更有信心。此外,解释性还能帮助开发人员找到可以改进的方面,从而对模型进行更好的调整。在大模型领域中,模型基本都基于Transformer的解码器结构,因此大模型的生成结果仍然存在不可解释性问题。
然而,在使用RAG系统后,可以告之每个答案的来源。如果对答案不确定,还可以查看提供的溯源网页进行查看。相较于纯粹的大模型生成,RAG具有较强的可解释性。
1.2.3 大模型的数据泄漏问题
可以通过数据提取攻击大模型,获取电话、身份信息、电子邮件等敏感数据。
然而,在使用RAG系统之后,由于模型组织答案所用到的知识来源于预先提供的知识库信息,利用个人私有数据不仅可以使模型的答案更具有个性化,还能让整个系统变得更加安全,降低被诱导输出敏感信息的风险。
1.2.4 大模型的训练成本问题
近几年,模型的规模不断攀升。BERT-Base仅有1亿参数量,而如今已出现千亿、万亿级别的大模型。
庞大的参数量意味着需要更多的训练资源。同时,考虑到训练时长,一个大模型训练的成本极其昂贵。早在2021年,便有科学家在论文中通过大量实验证明,可以使用仅1/25参数量的模型结合RAG系统,在Pile数据集上达到GPT-3的效果
1.3 RAG的工作流程
RAG的工作流程涉及3个主要阶段:数据准备、数据召回和答案生成