大模型笔记:RAG(Retrieval Augmented Generation,检索增强生成)

news2024/11/19 4:23:20

1 大模型知识更新的困境

  • 大模型的知识更新是很困难的,主要原因在于:
    • 训练数据集固定,一旦训练完成就很难再通过继续训练来更新其知识
    • 参数量巨大,随时进行fine-tuning需要消耗大量的资源,并且需要相当长的时间
    • LLM的知识是编码在数百亿个参数中的,无法直接查询或编辑其中的知识图谱
  • ——>LLM的知识具有静态、封闭和有限的特点。
  • ——>为了赋予LLM持续学习和获取新知识的能力,RAG应运而生

2 RAG介绍

  • 将大规模语言模型(LLM)与来自外部知识源的检索相结合,以改进大模型的问答能力
  • 核心手段是利用外挂于LLM的知识数据库(通常使用向量数据库)存储未在训练数据集中出现的新数据、领域数据

2.1 RAG 三阶段

  • RAG将知识问答分成三个阶段:
    • 索引
      • 事先将文本数据进行处理,通过词嵌入等向量化技术,将文本映射到低维向量空间,并将向量存储到数据库中,构建起可检索的向量索引
    • 知识检索
      • 当输入一个问题时,RAG会对知识库进行检索,找到与问题最相关的一批文档
    • 生成答案
      • RAG会把输入问题及相应的检索结果文档一起提供给LLM,让LLM充分把这些外部知识融入上下文,并生成相应的答案。
      • RAG控制生成长度,避免生成无关内容

3 RAG特点

3.1 优点

  • 可以利用大规模外部知识改进LLM的推理能力和事实性
  • 第一阶段的知识索引可以随时新增数据,延迟非常低,可以忽略不计。
    • 因此RAG架构理论上能做到知识的实时更新
  • 可解释性强,RAG可以通过提示工程等技术,使得LLM生成的答案具有更强的可解释性,从而提高了用户对于答案的信任度和满意度

3.2 缺点

  • 知识检索阶段(第二阶段)依赖相似度检索技术,并不是精确检索,因此有可能出现检索到的文档与问题不太相关
  • 在第三阶段生产答案时,由于LLM基于检索出来的知识进行总结,从而导致无法应对用户询问知识库之外的问题
  • 外部知识库的更新和同步,需要投入大量的人力、物力和时间
  • 需要额外的检索组件,增加了架构的复杂度和维护成本

4 RAG可以解决的问题

  • 模型幻觉问题
    • LLM文本生成的底层原理是基于概率进行生成的,在没有已知事实作为支撑的情况下,不可避免的会出现一本正经的胡说八道的情况
  • 时效性问题
    • 具有一定时效性的数据就可能无法及时参与 训练,造成模型无法直接回答与时效性相关的问题
  • 数据安全问题
    • 开源的LLM是没有企业内部数据和用户数据的,如果企业想在保证数据安全的前提下使用LLM,一种比较好的解决办法就是把数据放在本地
    • 企业数据的业务计算全部放在本地完成,在线的LLM只是完成一个归纳总结的作用

参考内容:RAG从入门到精通-RAG简介 – Ace Consider

大模型LLM的主流应用RAG技术 - 知乎 (zhihu.com)

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

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

相关文章

95页初级前端模块笔记分享,开发web前端学习

简历 首先肯定是要准备一份自己的简历,简历经常是给面试官的第一印象。 简历一般包括个人基础信息,专业技能,项目经验,其他模块。 个人基础信息模块就不说了,太基础。 **专业 戳这里领取完整开源项目:【…

UE5 C++ TPS开发 学习记录(九

p20 首先我们现在有一个多人游戏的系统类MultiplayerSessionsSubsystem 在这个系统内提供了很多会话系统的接口SessionInterface 当现在我们有一些SessionInterfaceDelegates的委托,这个委托的来源是SessionInterface,所以我们使用的委托可以接收到来自SessionInterface的消息(…

自动化测试环境搭建--Linux内网环境【实操经验】

环境信息 Python版本3.6.8 Jenkins版本2.346.3 Allure版本 2.13.2 环境准备 一、Python需要安装库 allure-pytest (2.13.2) pytest (7.0.1) jsonpath (0.82.2) pytest-html (3.2.0) pytest-ordering (0.6) …

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器: 二、Queue队列 三、Map映射 四、题目(快递分拣 vector): 代码: 五、题目(CLZ银行问题 queue): 代码: 六、题目(费里的语言 map&…

基于springboot+vue的酒店管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

xss.haozi.me:0x0A

https://www.segmentfault.com.haozi.me/j.js

猜数字小游戏

目录 java: c语言: java编写: 首先我们要获取随机数 java帮我们写好了一个类叫Random,这个类就可以生成一个随机数 那我们该如何使用Random类呢? 1、导包———Random这个类在哪呢(导包必须出现在类定义…

算法学习02:高精度(c++)

算法学习02:高精度(c) 文章目录 算法学习02:高精度(c)前言一、高精度1.高 高2.高 - 高3.高 * 低4.高 / 低 总结 前言 提示:以下是本篇文章正文内容: 一、高精度 1.高 高 add函数…

Android使用陀螺仪

Android使用陀螺仪 陀螺仪基础运用与理解 在Android应用中使用陀螺仪可以帮助实现各种功能,比如游戏控制、虚拟现实体验、运动追踪等。以下是使用Android陀螺仪的基本步骤: 获取传感器服务: 首先,需要获取设备上的陀螺仪传感器服…

vue3基础教程(2)——创建vue3+vite项目

博主个人微信小程序已经上线:【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 前言2.node版本检测3.创建vue项目 专栏简介 本系列文章由浅入深,从基础知识到实战开发,非常适合入门同学。 零基础读者也能成功由本系列文章入门&#x…

【Redisson分布式锁】Redisson公平锁实现机制

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

Vue2高级篇

Vue高级 Vue生命周期 生命周期又称为生命周期回调函数、生命周期函数、生命周期钩子, 是Vue在运行过程中的关键时刻帮我们调用的一些指函数, 生命周期函数名字不可修改, 其中的this指向的是vm或组件实例对象. 常用的生命周期钩子: mounted: 发送ajax请求、启动定时器、绑定…

软考中级-软件设计师备考的一些信息

备考资源补充 去年分享了如何备考软考中级-软件设计师及分析题的解题技巧:软考中级–软件设计师毫无保留的备考分享 文章中包含备考思路、备考资源和**解题技巧,**需要的请从上面的链接自行获取。 但有很多小伙伴说,之前分享的备考刷的视频…

放弃了字节32k的工作,回老家拿了8K的offer,我不后悔!

字节一年,人间三年。 虽然之前反复纠结和犹豫,在飞书的流程也是点了又关,但真正到了离开的这一刻,我居然没有太多不舍了。 可能是确实太累了,在字节工作的五百多个日夜里,基本没有在8点之前下过班&#xff…

一个复杂的数据流转换:文件流转base64

一个复杂的数据流转换:文件流转base64 可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,又能如此精彩地讲述自己是如何衰老的。这样的老人在乡间实在是 难以遇上,也许是困苦的生活损坏了他们的记忆&#xff0…

JavaScript的`bind`方法:函数的“复制”与“定制”

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

H5双人五子棋小游戏

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html> <…

【一起学习Arcade】(6):属性规则实例_约束规则和验证规则

一、约束规则 约束规则用于指定要素上允许的属性配置和一般关系。 与计算规则不同&#xff0c;约束规则不用于填充属性&#xff0c;而是用于确保要素满足特定条件。 简单理解&#xff0c;约束规则就是约束你的编辑操作在什么情况下可执行。 如果出现不符合规则的操作&#…

Hack The Box-Bizness

目录 信息收集 nmap dirsearch WEB Get shell 提权 get user flag get root flag 信息收集 nmap 端口扫描┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.252 --min-rate 10000 -oA port Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 1…

链表哨兵例子

哨兵链表例子_根据值删除链表 package linklist;public class leetcode203 {public static void main(String[] args) {ListNode listNode new ListNode(1,new ListNode(2,new ListNode(3)));ListNode listNode1 removeElements(listNode,2);System.out.println(listNode1);…