问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

越来越火的大模型应用——RAG,到底是个啥?

创作时间:
作者:
@小白创作中心

越来越火的大模型应用——RAG,到底是个啥?

引用
CSDN
1.
https://m.blog.csdn.net/Gaga246/article/details/145852304

随着AI大模型的快速发展,其在实际应用中面临的"幻觉"问题也日益凸显。为了解决这一问题,RAG(检索增强生成)技术应运而生。本文将从大模型的"幻觉"问题入手,深入探讨RAG的核心原理、应用场景及其与模型微调的关系,帮助读者全面理解这一重要技术。

01、了解大模型的“幻觉”

在探讨RAG之前,我们先来了解一下大模型著名的"幻觉"问题。"幻觉"指的是大模型在试图生成内容或回答问题时,输出的结果不完全正确甚至错误,即通常所说的"一本正经地胡说八道"。

这种"幻觉"可以体现为对事实的错误陈述与编造、错误的复杂推理或者在复杂语境下处理能力不足等。造成"幻觉"的主要原因包括:

  • 训练知识存在偏差:输入的海量知识可能包含错误、过时,甚至带有偏见的信息。
  • 过度泛化地推理:大模型尝试通过大量的语料学习人类语言的普遍规律与模式,可能导致"过度泛化"的现象。
  • 理解存在局限性:大模型并没有真正"理解"训练知识的深层含义,也不具备人类普遍的常识与经验。
  • 缺乏特定领域的知识:通用大模型不是某个垂直领域的专家,当面临一些复杂度较高的领域性问题时,可能会编造信息并将其输出。

除了"幻觉"问题,大模型还存在知识落后、输出难以解释、输出不确定等一些问题。这也决定了大模型在大规模商业生产应用中会面临着挑战:很多时候,我们不仅需要理解力和创造力,还需要极高的准确性。

02、RAG如何优化“幻觉”问题

RAG(Retrieval-Augmented Generation)正是为了尽力解决大模型在实际应用中面临的一些问题(特别是"幻觉"问题)而诞生的一种优化方案,也是最重要的方案。其基本思想可以简单表述如下:

将传统的生成式大模型与实时信息检索技术相结合,为大模型补充来自外部的相关数据与上下文,以此帮助大模型生成更丰富、更准确、更可靠的内容。这允许大模型在生成内容时,可以依赖实时与个性化的数据和知识,而不只是依赖训练知识。

简单来说,RAG给大模型增加了一个可以快速查找的"知识外挂"。用一个例子帮助理解RAG的概念:如果把大模型比喻成一个经过大量知识与技能训练的优秀学生,把大模型响应的过程比喻成考试。那么,这个优秀学生在考试时,仍然可能会遇到没有掌握的知识,从而编造答案(幻觉)。RAG,就是在这个学生考试时,临时给他的一本参考书。我们可以要求他在考试时,尽量参考这本书作答。那么,在遇到与这本书中的知识相关的问题时,他的得分是不是就高多了呢?

03、模拟简单的RAG场景

假如你需要开发一个在线的自助产品咨询工具,允许客户使用自然语言进行交互式的产品问答,比如"请介绍一下您公司这款产品与××产品的不同之处"。为了让客户有更好的体验,你决定使用大模型来构造这样的咨询功能,并将其嵌入公司的官方网站。

如果你直接使用通用大模型,那么结果很可能如图1-10所示。

不出意外,大模型显然不具备贵公司的最新手机产品知识,因此无法回答客户的问题(有时候可能会尝试编造答案)。

现在,如果你采用了RAG的思想,那么,可以先从企业私有的知识库中,检索出下面一段相关的补充知识。你把检索出的补充知识组装到提示词中,将其输入大模型,并要求大模型基于提供的知识来回答你的问题。大模型很聪明地"吸收"了补充的外部知识,并结合自己已经掌握的知识,成功推理并给出了答案:

是的,RAG本质上就是一种借助"外挂"的提示工程,但绝不仅限于此。因为在这里简化了很多细节,只是为了展示RAG最核心的思想:给大模型补充外部知识以提高输出答案的质量。

04、RAG与模型微调

要想提高大模型在特定行业与场景中输出的适应性与准确性,除了使用RAG,还可以使用自己的数据对大模型进行微调。简单地说,微调就是对基础模型在少量(相对于预训练的数据量来说)的、已标注的数据上进行再次训练与强化学习,以使得模型更好地适应特定的场景与下游任务。

显然,微调是另外一种给大模型"灌输"新知识的方法。两者的主要差异在于:

  • RAG无需额外的训练,随时可以提供补充的知识,调试简单。缺点是受到上下文空间的限制,且回答时性能略差(毕竟要现学现用)。
  • 微调需要专门的数据准备和训练时间,技术要求相对较高,效果较难预测,不太适合更新频繁的知识。好处是应用层面会更简单。

以前面的例子来说明微调和RAG的区别:如果大模型是一个优秀学生,正在参加一门考试,但是这门考试中有很多知识是这位学生没有学习过的,现在使用RAG和微调两种方法对这位学生提供帮助。

  • RAG:在考试时给他提供某个领域的参考书,要求他现学现用,自己翻书理解后给出答案。
  • 模型微调:在考试前一天对他进行突击辅导,使他掌握了新的领域知识,然后让他参加考试。

无法确切地说在什么场景中必须使用RAG、在什么场景中必须使用微调。结合当前的一些研究及普遍的测试结果,可以认为,以下场景中更适合考虑微调的方案(在不考虑成本的前提下):

(1)需要注入较大数据量且相对稳定、迭代周期较长的领域知识;需要形成一个相对通用的领域大模型用于对外服务或者运营。
(2)执行需要极高准确率的部分关键任务,且其他手段无法满足要求,此时需要通过高效微调甚至全量微调来提高对这些任务的输出精度,比如医疗诊断。
(3)在采用提示工程、RAG等技术后,无法达到需要的指令理解准确、输出稳定或其他业务目标。

在除此之外的很多场景中,可以优先考虑使用RAG来增强大模型生成。当然,在实际条件允许的前提下,两者的融合应用或许是未来更佳的选择。

05、初步认识RAG架构

最后,我们从技术层来看一个最基础、最常见的RAG应用的逻辑架构与流程。注意:在这张图中仅展示了一个最小粒度的RAG应用的基础原理。通常情况下,可以把一个简单的RAG应用从整体上分为数据索引(Indexing)与数据查询(Query)两个大的阶段,而在每个阶段都包含不同的处理环节。

以上面的举例来解释:

  • 索引阶段就是编写考试时需要的参考书,这本书要容易快速查找特定知识。
  • 查询阶段就是考试时使用这本书的过程,先查找参考资料,然后解答问题。

在实际RAG应用中,对于不同的应用场景、客观条件、工程要求,会有更多的模块、架构与流程的优化设计,以应对众多的技术细节与挑战。比如,自然语言表达的输入问题可能千变万化,你从哪里检索对应的外部知识?你需要用怎样的索引来查询外部知识?你怎样确保补充的外部知识是回答这个问题最需要的呢?就像上面例子中的学生,如果考试的知识点是英语语法,你却给他一本《微积分》,那显然是于事无补的。诸如这一类的问题,都属于更深入的高级RAG模块与优化的范畴。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号