优雅谈论大模型5: RAG

RAG

众所周知,大模型以及一些预训练的模型在训练完毕之后会在其参数存储了大量的压缩资讯。但是这样的参数是通过固定的语料库训练而成,训练完毕之后这个模型已经固定了。然而外部资讯瞬息万变,加上大模型本质上为一种概率模型,所以会存在很多问题。打个比方,它没有办法知晓最近发生的事情,同时也会针对一些问题一本正经的胡说八道。几个很明显的大模型问题:

  1. 偏见:因为大模型会收到训练语料的影响,要是输入的语料有明显的偏见也会带入到大模型之中。

  2. 幻觉:大模型其实是一种概率模型,里面各个层级的神经网络算是某种意义的概率转移模型,它的最终输出是概率输出,因此难免一本正经的胡说八道。

  3. 时效:因为训练大模型的语料是固定的,而现实世界又是一直变化,资讯其实源源不断地进来,因此训练好的大模型在提供准确的信息层面还是存在滞后。

白话的总结制约大模型的两大关键因子:资讯的来源和时效。如何合理的平衡这两个因子,也决定了在将大模型推向应用领域的关键技术选择和数据管理模式。研究人员其实在2021年的时候最早提出了RAG想用最简洁的办法解决这个问题。那么RAG是什么?RAG,英文全称Retrieval Augmented Generation,检索增强生成。RAG首次在《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出。

2021年当时 大模型还未流行,Seq2Seq的模型却十分流行,它帮助解决知识密集型任务,以及机器缺乏外部知识源的情况下而无法解决的任务。

大模型与数据管理

大模型的知识一般来至三个渠道,绿色渠道为用户输入(U),蓝色渠道为大模型已经掌握的知识(训练语料,L),粉色渠道为外部知识库(E),把这三部分交叉会形成4个重叠的区域,每个区域可以将知识组合使用,但是存在着或多或少的问题。

区域1:用户将输入的上下文和关注点给达大模型,大模型给出的响应会存在幻觉和失效的问题。

区域2:用户将输入的上下文和外部知识库结合,那么缺乏语义分析和对话管理和,其实这个领域和传统的机器人技术相似。

区域3:利用外部的知识库对已经训练好的大模型进行微调,微调技术会在后续的章节进行讨论,可是相当的复杂。

区域4:那么将用户上下文和关注点、外部知识库和大模型组合运用的方法就是RAG。效果虽然不如3,但是简单和便捷。

RAG基本框架

RAG的基本流程为:外部知识库预处理至向量数据库(后文会详细介绍)=》用户输入问题=》问题编码后在向量数据库检索相似知识=》将用户输入和检索知识组合成查询的提示词=》大模型基于问题结合自身和外部知识库给出最终回答。

简单的说就是A提问,然后B收到之后检索和这个问题相关的知识库,最后将相关的知识库和问题组合起来送给大模型回答。这个过程非常的干净利落,不需要涉及很复杂的编程。

因为大模型的输入都有一定的约束,过长的文本则需要先切片(上图),然后采用一定的策略拼接成提示词(下图)送给大模型去理解和给出正确的答案。在这里向量数据库成为很重要的一环,它连接着所有的环节。

关于RAG和微调之间正确性的问题,有篇论文做出了对比认为是RAG不差于全数据微调,但是论文发表在早年,和现在的大模型技术已经不可同日而语。后面会针对两者进行深入的比较分析。

Gorilla

说到RAG,就不得不提鼎鼎大名的Gorilla(基于Llama-7B)。Gorilla由加利福尼亚大学伯克利分校和微软研究院设计,该模型能根据用户输入的自然语言为用户选择最合适的API来执行对应任务。某种意义上它是希望成为一个统帅其它AI的AI模型。

它利用在三大机器学习中心的数据集进行训练,这些中心包括Torch Hub、TensorFlow Hub和HuggingFace。它不断新增新的领域,包括 Kubernetes、GCP、AWS、OpenAPI等。在zero-shot的情况下,Gorilla的性能优于GPT-4、Chat-GPT和Claude。它非常可靠,大幅减少了幻觉错误。

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

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

相关文章

Nginx读书笔记

Nginx 是高性能的 HTTP 和反向代理的web服务器

ffmpeg使用xfade的转场特效

ffmpeg使用xfade的转场特效 1. 介绍2. ffmpeg里面的xfade3. 使用 1. 介绍 参考文档 ffmpeg是一个音视频编辑工具,具体的。。。。我才搞接触,所以不懂。 xfade是一种视频转场滤镜,用于在两个视频片段之间创建平滑的过渡效果。xfade的转场效果…

软件测试有哪些常用的测试方法?

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试是软件开发过程中重要组成部分,是用来确认一个程序的质量或者性能是否符合开…

visual studio snippet常用注释片段

Visual Studio 2022 添加自定义代码片段_vs2022 代码片段-CSDN博客 dclass.snippet: <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> …

前端JS必用工具【js-tool-big-box】学习,检测当前是否为手机端浏览器,检测某元素是否处于当前可视范围内

这一小节&#xff0c;js-tool-big-box工具库又迎来了两个非常实用功能成员&#xff0c;分别是检测当前浏览器是否为手机端浏览器&#xff0c;还有检测某元素当前是否处于可视范围内。 1 安装引入 通过npm安装&#xff0c;执行以下命令 npm i js-tool-big-box 这两个功能&…

跨域数据流动:数据提取过程中的治理与安全双轮驱动

跨域数据流动&#xff1a;数据提取过程中的治理与安全双轮驱动 随着信息技术的飞速发展&#xff0c;跨域数据流动已成为现代社会的常态。从医疗记录到金融交易&#xff0c;从社交媒体到企业运营&#xff0c;数据在各个领域之间频繁交换&#xff0c;为社会发展带来了极大的便利…

汽车电子笔记之-012:旋变工作原理及软解码硬解码

目录 1、旋变 1.1、激励的产生 1.2、旋变的标定 2、旋变解码 2.1、旋变硬解码 2.2、软解码 1、旋变 旋转变压器&#xff08;旋变&#xff09;&#xff0c;是电机控制中常用的一种位置传感器&#xff0c;用来反应电机的转子位置&#xff0c;提供给软件做电机控制等相关算法…

java基础之对线程的理解

目录 程序、进程、线程 什么是进程&#xff1f; 什么是线程 线程与进程的区别&#xff1f; 二、多线程 实现多线程方式一&#xff1a;继承Thread类 实现多线程方式二&#xff1a;实现Runnable接口 实现多线程方式三: 实现Callable接口 ​ 三种实现方式的对比 设置和获…

【WEEK12】 【DAY3】整合MyBatis框架【中文版】

2024.5.15 Wednesday 目录 13.整合MyBatis框架13.1.整合测试13.1.1.新建springboot-05-mybatis项目13.1.2.导入MyBatis需要的依赖13.1.3.配置数据库连接信息13.1.3.1.修改application.properties13.1.3.2.修改Springboot05MybatisApplicationTests.java并测试 13.1.4.新建pojo文…

InnoDB 事务处理机制

文章目录 前言1. 事务处理挑战1.1 事务机制处理的问题1.2 并发事务带来的问题 2. InnodDB 和 ACID 模型2.1 Innodb Buffer Pool2.2 Redo log2.3 Undo log2.4 应用案例 3. 隔离级别和锁机制3.1 事务隔离级别3.1.1 READ UNCOMMITTED3.1.2 READ COMMITTED3.1.3 REPEATABLE READ3.1…

SpringBoot应用

文章目录 第一章、SpringBoot基础内容一、Spring和SpringBoot1、Spring介绍2、SpringBoot介绍 二、SpringBoot2入门操作1、在线构建2、idea构建 三、浅谈自动装配的原理 第二章、SpringBoot核心功能一、配置文件1、配置文件介绍2、语法规则3、数据类型4、案例使用 二、WEB开发1…

如何管理测试用例?测试用例有什么管理工具?YesDev

3.1 测试用例 测试用例(Test Case) 是指对一项特定的软件产品进行测试任务的描述&#xff0c;体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果等。简单地认为&#xff0c;测试用例是为某个特殊目标而编制的一组测试输入、执行条…

CPT7数据保存详细步骤

一、连接设备、打开NovAtelConnect 软件 (1)点击1,并在2中输入如下命令: LOG RANGEB ONTIME 1 // 输出原始数据记录在板卡LOG RAWEPHEMB ONTIME 1 // 输出 GPS 原始星历记录在板卡LOG bdsephemerisb ONTIME 1 // 输出

在澳门写代码;技术入股2次融资被踢;现在只想做独立开发

本期我们邀请的程序员是Albert&#xff0c;先后在广州、澳门、珠海、香港工作过&#xff0c;打工上班、合伙创业、远程工作、独立开发&#xff0c;工作经历丰富&#xff0c;如果你想知道哪些程序员踩过的坑&#xff0c;请别错过他的故事。 广州&#xff1a;第一份工作2000块一…

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中&#xff0c;看见前人的代码是&#xff0c;new 一块内…

MySQL第三次作业--DML语句(INSERT)

目录 一、在数据库中创建一个表student&#xff0c;用于存储学生信息 二、向student表中添加一条新记录&#xff0c;记录中id字段的值为1&#xff0c;name字段的值为"monkey"&#xff0c;grade字段的值为98.5 三、向student表中添加多条新记录&#xff1a; 2,&qu…

详解动态规划之01背包问题及其空间压缩(图文并茂+例题讲解)

1. 动态规划问题的本质 记忆化地暴力搜索所有可能性来得到问题的解 我们常常会遇到一些问题&#xff0c;需要我们在n次操作&#xff0c;且每次操作有k种选择时&#xff0c;求出最终需要的最小或最大代价。处理类似的问题&#xff0c;我们一般需要遍历所有的可能性(相当于走一遍…

SpringMVC核心组件之HandlerMapping详解

文章目录 前言一、AbstractHandlerMapping抽象类initApplicationContextgetHandler 二、MatchableHandlerMapping类二、AbstractUrlHandlerMapping类 前言 当一个web请求到来时&#xff0c;DispatcherServlet负责接收请求并响应结果。DispatcherServlet首先需要找到当前请求对…

普通人也能创业!轻资产短视频带货项目,引领普通人实现创业梦想

在这个信息爆炸的时代&#xff0c;创业似乎成为了越来越多人的梦想。然而&#xff0c;传统的创业模式 keJ0277 往往伴随着高昂的资金投入和复杂的管理流程&#xff0c;让许多普通人望而却步。然而&#xff0c;现在有一种轻资产短视频带货项目正在悄然兴起&#xff0c;它以其低…

2024做安全测试必须要知道的几种方法!

前言 安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程&#xff0c;其主要目的是查找软件自身程序设计中存在的安全隐患&#xff0c;并检查应用程序对非法侵入的防范能力&#xff0c;安全指标不同&#xff0c;测试策略也不同。 但安全…