【大白话讲懂】大模型 RAG 检索增强生成
话先说在前面,本文不讲不会讲太多原理,仅面向工程开发,从工作流程的宏观角度进行梳理,旨在快速上手。
RAG 是什么
基本定义
让我们先来解释名词,看看宏观框架。
RAG 的意思是 Retrieval-Augmented Generation(检索增强生成)。
哈哈,这里其实就很顾名思义了,RAG有三个部分:
- 检索 2. 增强 3. 生成
工作流程
RAG 最常见的应用场景是优化大模型对话问答。
我们接下来就来说说,RAG是如何在这这个场景下生效的。
下图是我从网上挑的,先欣赏一下就行了。
不要试图零基础看一眼就理解——学习应该放轻松,不要质疑自己的能力给自己太大压力🥰(反正我是这么想的)
上图的起点是【Query】,我把整个流程描述为一个表,只需要自上而下地阅读这个表,再对照着上图理解,轻轻松松就能搞懂这一切:
上图中的步骤 | 输入 | 输出 | 解释 |
---|---|---|---|
Query | 用户输入 | Query | 用户输入的内容就叫 Query(跟URL Query是一个含义) |
Embedding Model | Query | Query Vector | Embedding Model 会把 Query 处理为向量,即 Query Vector (为什么要处理成向量?先别想那么多,你也不想从 ML 感知机开始学起吧?) |
Vector Store Index 和 Database | Query Vector | Document Vector | 1. 这里的 Database 通常是 Vector Database,顾名思义存储的是向量,RAG 场景下通常是 Document Vector 2. Vector Store Index 的作用和 MySQL这类传统数据库的索引一样,用于加速在 Database 中的查询 3. 这里在 Vector Database 中查找到了内容最相关的文档,这些向量将和 Query |
Context | Query Vector 和 Document Vector | Context | 1. 输入的二者将被融合,形成一个新的上下文,这个上下文极大拓展了用户的输入内容 2. 这个过程通常是由一个专门的AI模型完成的(上图没有强调这一点) |
LLM | Query 和 Context | Answer | Context 可以理解为 Query 的背景、相关知识等,用于让大模型更全面理解 Query 所涉及的领域,以便于给出更好的 Answer |
总结概述
RAG,检索增强生成。简而言之就是,给大模型加了一个搜索工具,可以让大模型检索它本身不懂的内容,从而增强它的生成的内容。
用喝完一杯咖啡的时间,读完上述内容,也就能大概了解 RAG 是 怎么一回事了,是不是相当赚?
RAG 有什么作用
大模型的缺陷
LLM 刚流行起来的时候被鼓吹得相当梦幻,但是实际用起来投入商业产品应用后,很多问题也就暴露出来了:
- 时效性与可靠性:世界不断发展,但大模型本身的知识只来自于当年训练它的数据集,所以它可能会产生不准确或过时的回答。
其实这是诸多(并非全部)深度学习模型的通病,但是在大语言模型这里被无限放大了😢(谁让它这么火呢)。- 幻觉
当询问了一个超出大模型知识范围的问题时,大模型往往不会承认不知道(它甚至可能没有意识到自己不知道),这时它会和吃了云南菌子一样开始胡诌,也就是所谓的幻觉。- 输入信息不足
除了大模型自身的缺陷以外,还有来自它的用户的问题。不要指望每一个用户都学过提示词工程,大多都会给出一些模糊的问题。比如用户问“特斯拉是什么?”,大模型可能只会回答“特斯拉是一个汽车品牌”。
RAG 的价值
那 RAG 的作用是什么呢?
- 更新数据,避免过时
通过定时爬虫等方式,不断更新 Vector Database 中的内容,也就能更新丰富大模型的知识,减少大模型给出过时的回答的可能性。- 增强数据,避免幻觉
先回忆一下什么叫幻觉——如果大模型遇到不懂的问题时,它可能就会开始胡诌。这时候如果用上 RAG,就可以帮它找到更多参考资料,也就能更准确地回答问题了。- 丰富数据,避免片面
比如用户问“特斯拉是什么?”,没有 RAG 的大模型可能只会回答“特斯拉是一个汽车品牌”。而有了 RAG,它就能更回答更多的内容:一个科学家、一个公司。
这里补充解释一下第3点:
按理说,【特斯拉是科学家】这件事比【特斯拉是一个汽车品牌】发生得更早,是更普遍而客观的认知才对。
但是过去的大模型常常会优先回答【是汽车品牌】,推测是因为训练该大模型的时期,网络上关于【是汽车品牌】的数据远远多于【是科学家】的数据,以至于大模型会倾向于回答前者。
而现在的大模型普遍加上了 RAG,能有更全面的认识,所以就能更全面地回答:【特斯拉是一个科学家、一个公司、一个汽车品牌】。
另外,RAG 还有一些常见的用处:
- 特化数据领域:可以通过大量添加特定领域的知识数据,构建垂直领域的知识图谱,比如化学工艺领域的问答大模型。
后续
感谢支持
如果你认为上述内容有帮助,可以点一手收藏和关注✨,我还会继续努力产出更多相关内容。
graphRAG 与 知识图谱开发
后续会进一步分享【graphRAG】 和 【知识图谱开发】相关的内容。