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

news2024/9/29 3:34:38

【大白话讲懂】大模型 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】 和 【知识图谱开发】相关的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Opencv调用yolov5的onnx文件时报错记录

Opencv调用yolov5的onnx文件时报错记录 报错内容: Error: Unspecified error (> Node [Powai.onnx]:(onnx_node!/model.24/Pow) parse error: OpenCV(4.6.0) F:\opencv-4.6.0\opencv-4.6.0\modules\dnn\src\onnx\onnx_importer.cpp:601: error: (-215:Assertio…

C++ vector的基本使用(待补全)

std::vector 是C标准模板库(STL)中的一个非常重要的容器类,它提供了一种动态数组的功能。能够存储相同类型的元素序列,并且可以自动管理存储空间的大小,以适应序列大小变化,处理元素集合的时候很灵活 1. vector的定义 构造函数声…

西安电子科技大学2025届毕业生生源信息

2025届本科毕业生专业分布一览表 2025届硕士毕业生专业分布一览表 2025届博士毕业生专业分布一览表 2025届本科毕业生生源地分布 左右滑动查看更多 2025届硕士毕业生生源地分布 2025届博士毕业生生源地分布

小红书笔试-选择题

HTTP/2.0默认长连接。选B ABC 一个类可以实现多个接口,一个接口可以继承一个或多个接口: 这是正确的。Java 支持多重继承的变体,即一个类可以实现多个接口,以获取多个接口中定义的方法。同时,一个接口可以通过 extends…

假如家里太大了,wifi连不上了怎么办

最近有个土豪朋友抱怨,他家里太大了,一个路由器的Wi-Fi信号根本无法覆盖他们家的每个房间,都没办法上网看奥运会比赛了。(还好我是穷人,就没有这种烦恼T_T)。 然后我问他为何不用一个路由器作主路由器&…

安卓常用控件ListView

文章目录 ListView的常用属性ListView的常用APIListView的简单使用 ListView是一个列表样式的 ViewGroup,将若干 item 按行排列。它是一个很基本的控件也是 Android 中最重要的控件之一。它可以实现多个 View 的垂直排列并支持滚动显示效果。 ListView的常用属性 常…

数论——绝对素数、素数筛法、埃氏筛法、欧拉筛法、最大公约数

绝对素数 绝对素数是指一个素数在其十进制表示下&#xff0c;无论是从左向右读还是从右向左读&#xff0c;所得到的数仍然是素数。 例如&#xff0c;13 是一个素数&#xff0c;从右向左读是 31&#xff0c;31 也是素数&#xff0c;所以 13 是一个绝对素数。 #include <io…

小红书无货源选品逻辑和爆品思路(图文解析)

了解用户的购物习惯、需求偏好以及日常搜索行为&#xff0c;是选品的重要前提。选品不是嘴巴一张这么简单的事情&#xff0c;是需要通过长期积累及网感来分析。记住&#xff1a;人-货-场&#xff0c;这个原则。比如明知道小红书上的年前女性用户多&#xff0c;你偏偏来卖一台挖…

悠易科技周文彪:创始人专注度很重要,一旦战略分散无法形成合力 | 中国广告营销行业资本报告深访④

周文彪&#xff08;悠易科技CEO&#xff09; 问&#xff1a;近年来广告营销行业主要的融资事件发生在营销技术领域。您对此有何评论&#xff1f; Roy&#xff1a;Adtech最早从2007年前后开始发展&#xff0c;差不多十年的时间&#xff0c;因为广告技术帮助企业成长&#xff0c…

【时时三省】unity test 测试框架 使用 code blocks 移植(核心文件:unity.c, unity_fixture.c)

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 目录 1&#xff0c;移植介绍 2&#xff0c;使用 Code::Blocks 17.12 创建工程 3&#xff0c;搬移文件入工程目录 4&#xff0c;更改代码 5&#xff0c;向工程添加文件 6&#xff0c;运…

解锁PDF新姿势:2024年PDF转图片工具精选

随着数字化办公的普及和文档处理需求的日益增长&#xff0c;PDF转图片工具已成为日常工作中不可或缺的一部分。这些工具不仅帮助用户轻松地将PDF文件转换为图片格式&#xff0c;还提供了丰富的编辑、转换和批量处理功能&#xff0c;极大地提高了工作效率。 1.福昕PDF转换大师&…

数据结构实验报告-栈

实 验 三 报 告 一、实验目的 1.掌握栈的定义、特点、逻辑结构&#xff0c;理解栈的抽象数据类型。 2.熟练掌握顺序栈的结构类型定义、特点和基于顺序栈的基本运算的实现。 3.熟练掌握链栈的结构类型定义、特点和基于链栈的基本运算的实现。 4.理解递归算法执行过程中栈的…

ssh网络协议(服务名sshd,端口22)

目录 前言 配置文件&#xff08;/etc/ssh/sshd_config&#xff09; 配置文件内容 自己可以添加的设置&#xff1a; 注意&#xff01;&#xff1a; ssh连接登录演示 scp文件传输 登录验证方式 密码验证登录 秘钥验证登录 配置ssh密钥对验证登录 生成密钥对&#xff…

JavaWeb基础3:会话/过滤器/监听器

JavaWeb基础3&#xff1a;会话/过滤器/监听器 (qq.com)

海尔、希亦、米博洗地机哪个好用?海尔、希亦、米博洗地机实测PK

洗地机相比普通清洁工具&#xff0c;拥有科学的设计&#xff0c;而且清洁技术专业&#xff0c;能够把地面上的污渍、灰尘、毛发等通通清理干净&#xff0c;保持地面光洁。比起手动清理&#xff0c;它还能减少地面和空气的细菌滋生&#xff0c;可以说是居家必备的清洁神器了。不…

C# 实现改造 GooFlow 流程图插件与数据库应用的结合

目录 关于 GooFlow 功能需求 范例运行环境 设计数据表 流程项目表 流程项目节点明细表 流程项目节点审批人表 人员信息表 示例代码 流程图主功能 设置审批人信息 运行结果演示 总结 关于 GooFlow GooFlow 一个基于 Jquery/FontAwesome 的流程图/架构图画图插件&…

探索Python异步编程的秘境:Eventlet的魔力与魅力

文章目录 **探索Python异步编程的秘境&#xff1a;Eventlet的魔力与魅力**第一部分&#xff1a;背景与引言第二部分&#xff1a;Eventlet是什么&#xff1f;第三部分&#xff1a;如何安装Eventlet&#xff1f;第四部分&#xff1a;Eventlet的基本使用第五部分&#xff1a;Event…

如何用ai来完成数据库分析(2)

一样的前言 因一些课程设计要写长篇分析报告&#xff0c;这里借用ai做一篇指导教程&#xff0c;分上下两篇。这篇也会教如何让ai给你你想要的答案&#xff0c;众所周知&#xff0c;现在的ai并不智能&#xff0c;不针对各类厂家&#xff0c;但是放出来的确实表象如此。 但其实…

CMIP6数据处理技术教程

原文链接&#xff1a;CMIP6数据处理技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247611539&idx4&sn3eb0490b72ef694dcd41f6de0b623388&chksmfa827574cdf5fc62372bfcf188ea1ae6e41350ff8469c2940ed097244b205e0dd73f4c8832fa&token616696…

绝对干货!分享把Fildder录制的脚本导出成Jmeter脚本的方法(实测在Fiddler5中有效)

相信做过接口测试的小伙伴都面临过这样的窘境——在没有接口测试文档的情况下&#xff0c;进行接口的压力测试&#xff01;怎么破&#xff1f; 通常的做法都是利用抓包工具&#xff08;以fiddler为例&#xff09;进行抓包&#xff0c;然后把抓包请求手写到压力测试工具中&…