本文介绍了大模型在应用领域中的挑战,特别是“幻觉”问题。文章详细解释了RAG(Retrieval-Augmented Agenerated)如何优化大模型在实际应用中的表现,包括其基本概念、应用场景以及与模型微调的区别。文章还从技术层面介绍了RAG架构的基础原理和应用流程。
大模型在实际应用中面临挑战,如知识偏差、过度泛化、理解局限和缺乏特定领域知识等,导致产生“幻觉”问题,即输出的结果可能不完全正确甚至错误。
RAG旨在解决大模型在实际应用中的“幻觉”问题。它通过结合传统的生成式大模型和实时信息检索技术,为大模型补充外部相关数据与上下文,从而提高生成内容的丰富性、准确性和可靠性。
微调是对基础模型在特定数据上进行再次训练与强化学习,以适应特定场景和下游任务。与RAG相比,微调需要专门的数据准备和训练时间,技术要求相对较高,但应用层面可能更简单。RAG则是一种更灵活的优化方案,无需额外的训练,可以随提供的补充知识来优化模型输出。
RAG适用于需要注入大量相对稳定、迭代周期较长的领域知识的场景,以及需要极高准确率的部分关键任务。在某些场景中,RAG可以与模型微调结合使用,以取得更好的效果。
从技术层面看,RAG应用的基础架构分为数据索引和查询两个阶段。数据索引阶段类似于编写考试时的参考书,而查询阶段则是使用这些参考书来解答问题。在实际应用中,RAG的架构和流程会更加复杂,涉及更多的模块和优化设计。
给大家普及了大模型的基础,但是缺乏应用的大模型是没有价值的。当然你可能使用过 Kimi Chat、豆包这样的大模型工具,它们可能已经在生活中充当了我们的创作助手、咨询专家、甚至情感陪护等,但这样的应用还远远不能发挥出大模型的真正价值,我们期望大模型在更专业的生产领域发挥作用,提升生产力,引领真正的科技变革。
当前大模型被普遍看好的两个专业应用方向是 RAG(Retrieval-Augmented Agenerated,检索增强生成)与 Agent(AI 智能体)。本篇首先尝试用通俗易懂的语言帮助大家认识 RAG 这一重要应用形式。
01 了解大模型的 “幻觉”
在了解为什么出现 RAG 之前,我们首先需要了解大模型著名的 “幻觉” 问题。
“幻觉” 指的是大模型在试图生成内容或回答问题时,输出的结果不完全正确甚至错误,即通常所说的 “一本正经地胡说八道”。
这种 “幻觉” 可以体现为对事实的错误陈述与编造、错误的复杂推理或者在复杂语境下处理能力不足等。其主要原因来自于:
(1)
训练知识存在偏差:老师教错了,学生自然对不了。
在训练大模型时输入的海量知识可能包含错误、过时,甚至带有偏见的信息。这些信息在被大模型学习后,就可能在未来的输出中被重现。
(2)
过度泛化地推理:自作聪明,以偏概全了。
大模型尝试通过大量的语料来学习人类语言的普遍规律与模式,这可能导致 “过度泛化” 的现象,即把普通的模式推理用到某些特定场景,就会产生不准确的输出。
(3)
理解存在局限性:死记硬背,加上问题太难了。
大模型并没有真正 “理解” 训练知识的深层含义,也不具备人类普遍的常识与经验,因此可能会在一些需要深入理解与复杂推理的任务中出错。
(4)
缺乏特定领域的知识:没学过,瞎编个答案蒙一下。
通用大模型就像一个掌握了大量人类通用知识且具备超强记忆与推理能力的优秀学生,但可能不是某个垂直领域的专家(比如医学或者法律专家)。当面临一些复杂度较高的领域性问题或私有知识相关的问题时(比如介绍企业的某个新产品),它就可能会编造信息并将其输出。
当然,除了 “幻觉” 问题,大模型还存在知识落后、输出难以解释、输出不确定等一些问题。这也决定了大模型在大规模商业生产应用中会面临着挑战:
很多时候我们不仅需要理解力和创造力,还需要极高的准确性(不仅要会写作文,还要会准确解答数学题)。
02 RAG 如何优化 “幻觉” 问题
RAG,正是为了尽可能地解决大模型在实际应用中面临的一些问题,特别是 “幻觉” 问题而诞生的,也是最重要的一种优化方案。其基本思想可以简单表述如下:
将传统的生成式大模型与实时信息检索技术相结合,为大模型补充来自外部的相关数据与上下文,以帮助大模型生成更丰富、更准确、更可靠的内容。这允许大模型在生成内容时可以依赖实时与个性化的数据和知识,而不只是依赖训练知识。
简单的说:RAG 给大模型增加了一个可以快速查找的知识外挂。
用一个例子帮助理解 RAG 的概念:
如果把大模型比喻成一个经过大量知识与技能训练的优秀学生,把大模型响应的过程比喻成考试,那么这个优秀学生在考试时仍然可能会遇到没有掌握的知识,从而编造答案(幻觉)。
RAG 就是在这个学生考试时临时给他的一本参考书。我们可以要求他在考试时尽量参考这本书作答,那么在遇到与这本书中的知识相关的问题时,他的得分是不是就高多了呢?
03 模拟简单的 RAG 场景
假如你需要开发一个在线的自助产品咨询工具,允许客户使用自然语言进行交互式的产品问答,比如 “请介绍一下您公司这款产品与 ×× 产品的不同之处”。为了让客户有更好的体验,你决定使用大模型来构造这样的咨询功能并将其嵌入公司的官方网站。如果你直接使用通用大模型,那么结果很可能如图 1-10 所示。
不出意外,大模型显然不具备贵公司的最新手机产品知识,因此无法回答客户的问题(有时候可能会尝试编造答案)。现在,如果你使用 RAG 的思想,那么可以先从企业私有的知识库中检索出下面一段相关的补充知识。
你把检索出的补充知识组装到提示词中,将其输入大模型,并要求大模型基于提供的知识来回答你的问题。大模型很聪明地 “吸收” 了补充的外部知识,并结合自己已经掌握的知识,成功推理并给出了答案:
是的,RAG 本质上就是一种借助 “外挂” 的提示工程,但绝不仅限于此。因为在这里简化了很多细节,只是为了展示 RAG 最核心的思想:
给大模型补充外部知识以提高输出答案的质量。
04 RAG 与模型微调
要想提高大模型在特定行业与场景中输出的适应性与准确性,除了使用 RAG,还可以使用自己的数据对大模型进行微调。简单地说,
微调就是对基础模型在少量(相对于预训练的数据量来说)的、已标注的数据上进行再次训练与强化学习,以使得模型更好地适应特定的场景与下游任务。
显然,微调是另外一种给大模型 “灌输” 新知识的方法。两者的主要差异在于:
以前面的例子来说明微调和 RAG 的区别:
如果大模型是一个优秀学生,正在参加一门考试,但是这门考试中有很多知识是这位学生没有学习过的,现在使用 RAG 和微调两种方法对这位学生提供帮助。
无法确切地说在什么场景中必须使用 RAG、在什么场景中必须使用微调。结合当前的一些研究及普遍的测试结果,可以认为在以下场景中更适合考虑微调的方案(在不考虑成本的前提下):
(1)需要注入较大数据量且相对稳定、迭代周期较长的领域知识;需要形成一个相对通用的领域大模型用于对外服务或者运营。
(2)执行需要极高准确率的部分关键任务,且其他手段无法满足要求,此时需要通过高效微调甚至全量微调来提高对这些任务的输出精度,比如医疗诊断。
(3)在采用提示工程、RAG 等技术后,无法达到需要的指令理解准确、输出稳定或其他业务目标。