【开发视角】大模型 RAG 检索增强生成究竟是什么

【大白话讲懂】大模型 RAG 检索增强生成

话先说在前面,本文不讲不会讲太多原理,仅面向工程开发,从工作流程的宏观角度进行梳理,旨在快速上手。

RAG 是什么

基本定义

让我们先来解释名词,看看宏观框架。

RAG 的意思是 Retrieval-Augmented Generation检索增强生成)。

哈哈,这里其实就很顾名思义了,RAG有三个部分:

  1. 检索 2. 增强 3. 生成

工作流程

RAG 最常见的应用场景是优化大模型对话问答。

我们接下来就来说说,RAG是如何在这这个场景下生效的。

下图是我从网上挑的,先欣赏一下就行了。
不要试图零基础看一眼就理解——学习应该放轻松,不要质疑自己的能力给自己太大压力🥰(反正我是这么想的)

RAG 工作流

上图的起点是【Query】,我把整个流程描述为一个表,只需要自上而下地阅读这个表,再对照着上图理解,轻轻松松就能搞懂这一切:

上图中的步骤输入输出解释
Query用户输入Query用户输入的内容就叫 Query(跟URL Query是一个含义)
Embedding ModelQueryQuery VectorEmbedding Model 会把 Query 处理为向量,即 Query Vector

为什么要处理成向量?先别想那么多,你也不想从 ML 感知机开始学起吧?)
Vector Store Index

Database
Query VectorDocument Vector1. 这里的 Database 通常是 Vector Database,顾名思义存储的是向量,RAG 场景下通常是 Document Vector

2. Vector Store Index 的作用和 MySQL这类传统数据库的索引一样,用于加速在 Database 中的查询

3. 这里在 Vector Database 中查找到了内容最相关的文档,这些向量将和 Query
ContextQuery Vector

Document Vector
Context1. 输入的二者将被融合,形成一个新的上下文,这个上下文极大拓展了用户的输入内容

2. 这个过程通常是由一个专门的AI模型完成的(上图没有强调这一点)
LLMQuery

Context
AnswerContext 可以理解为 Query 的背景、相关知识等,用于让大模型更全面理解 Query 所涉及的领域,以便于给出更好的 Answer

总结概述

RAG,检索增强生成。简而言之就是,给大模型加了一个搜索工具,可以让大模型检索它本身不懂的内容,从而增强它的生成的内容。

用喝完一杯咖啡的时间,读完上述内容,也就能大概了解 RAG 是 怎么一回事了,是不是相当赚?

RAG 有什么作用

大模型的缺陷

LLM 刚流行起来的时候被鼓吹得相当梦幻,但是实际用起来投入商业产品应用后,很多问题也就暴露出来了:

  1. 时效性与可靠性:世界不断发展,但大模型本身的知识只来自于当年训练它的数据集,所以它可能会产生不准确或过时的回答。
    其实这是诸多(并非全部)深度学习模型的通病,但是在大语言模型这里被无限放大了😢(谁让它这么火呢)。
  2. 幻觉
    当询问了一个超出大模型知识范围的问题时,大模型往往不会承认不知道(它甚至可能没有意识到自己不知道),这时它会和吃了云南菌子一样开始胡诌,也就是所谓的幻觉。
  3. 输入信息不足
    除了大模型自身的缺陷以外,还有来自它的用户的问题。不要指望每一个用户都学过提示词工程,大多都会给出一些模糊的问题。比如用户问“特斯拉是什么?”,大模型可能只会回答“特斯拉是一个汽车品牌”。

RAG 的价值

那 RAG 的作用是什么呢?

  1. 更新数据,避免过时
    通过定时爬虫等方式,不断更新 Vector Database 中的内容,也就能更新丰富大模型的知识,减少大模型给出过时的回答的可能性。
  2. 增强数据,避免幻觉
    先回忆一下什么叫幻觉——如果大模型遇到不懂的问题时,它可能就会开始胡诌。这时候如果用上 RAG,就可以帮它找到更多参考资料,也就能更准确地回答问题了。
  3. 丰富数据,避免片面
    比如用户问“特斯拉是什么?”,没有 RAG 的大模型可能只会回答“特斯拉是一个汽车品牌”。而有了 RAG,它就能更回答更多的内容:一个科学家、一个公司。

这里补充解释一下第3点:

按理说,【特斯拉是科学家】这件事比【特斯拉是一个汽车品牌】发生得更早,是更普遍而客观的认知才对。

但是过去的大模型常常会优先回答【是汽车品牌】,推测是因为训练该大模型的时期,网络上关于【是汽车品牌】的数据远远多于【是科学家】的数据,以至于大模型会倾向于回答前者。

而现在的大模型普遍加上了 RAG,能有更全面的认识,所以就能更全面地回答:【特斯拉是一个科学家、一个公司、一个汽车品牌】。

另外,RAG 还有一些常见的用处:

  1. 特化数据领域:可以通过大量添加特定领域的知识数据,构建垂直领域的知识图谱,比如化学工艺领域的问答大模型。

后续

感谢支持

如果你认为上述内容有帮助,可以点一手收藏和关注✨,我还会继续努力产出更多相关内容。

graphRAG 与 知识图谱开发

后续会进一步分享【graphRAG】 和 【知识图谱开发】相关的内容。

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碳苯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值