当前位置: 首页 > article >正文

大模型基本原理(四)——如何武装ChatGPT

传统的LLM存在几个短板:编造事实、计算不准确、数据过时等,为了应对这几个问题,可以借助一些外部工具或数据把AI武装起来。

实现这一思路的框架包括RAG、PAL、ReAct。

1、RAG(检索增强生成)

LLM生成的内容会受到训练数据的影响,所以如果训练数据里对某个领域的文本覆盖不多,就没有办法很好的回答我们提出的问题,这个时候RAG就可以很好的解决这个问题。

RAG:通过提供外部文档,让模型访问外部知识库,获得更可靠和准确的回答。

具体步骤:

(1)外部知识文档要先被切分成一个个段落,因为LLM一次性能够接受的文本长度有限。每个段落会被转换成一系列向量,向量可以被看作是一串固定长度的数字,然后将一系列向量储存进向量数据库中。

(2)当我们提出问题时,这个提示也会被转换成向量,然后查找向量数据库中和用户的查询向量最为接近的段落向量,找到段落向量以后,段落信息会和原本的用户查询问题组合到一起,一块传给AI。这样AI就能把外部文档的段落作为上下文,基于里面的信息给出更严谨的回答。

RAG有利于搭建企业知识库或个人知识库。

2、PAL(程序辅助语言模型)

AI的另一个缺陷是,我们没有办法把它用作计算器,因为AI只会预测下一个最大概率的token,并不会真正的进行计算。

PAL的核心在于,我们不让AI直接生成计算结果,而是借助其他善于做计算的工具,如python解释器,那我们给AI的要求就变成,在涉及计算步骤时,生成得到计算结果所需的代码。

具体操作我们可以借助思维链,在prompt中通过小样本提示,给模型示范如何分步骤思考,写出解决问题所需的变量赋值、数学运算等等代码。当用户提问后,将用户的问题和我们已有的提示模板进行拼接,将拼接后的内容一并给到AI,将AI生成的代码给到python解释器,并将代码执行的结果返回给AI,让AI带着计算得到的答案对用户的问题进行回复。

相当于LLM得到了问题和答案,最终生成问题的回答。

3、ReAct(推理行动结合)

由于LLM天然受到训练数据日期的影响,没有办法得到最新的知识和内容。

ReAct核心在于,让模型进行动态推理,并采取行动与外界环境互动。

ReAct同样可以和思维链结合,使用小样本提示,展示给模型一个推理与行动结合的框架,针对问题,把步骤进行拆分,每个步骤要进行推理、行动、观察。推理是针对问题或上一步观察的思考,行动是基于推理与外部环境的一些交互(比如用搜索引擎对关键字进行搜索),观察是对行动得到的结果进行查看。

如果问AI2022年欧冠的冠军是哪个球队,它得到答案的过程可能是这样。

通过分布推理的思维链,模型不仅可以获得更准确的答案,而且我们也可以通过这些轨迹进行验证。

ReAct框架的Action,不专指搜索和浏览网页,而是AI模型所支持的任何行动(执行代码,数据库查找,API调用等)

相关文章:

大模型基本原理(四)——如何武装ChatGPT

传统的LLM存在几个短板:编造事实、计算不准确、数据过时等,为了应对这几个问题,可以借助一些外部工具或数据把AI武装起来。 实现这一思路的框架包括RAG、PAL、ReAct。 1、RAG(检索增强生成) LLM生成的内容会受到训练…...

开发完的小程序如何分包

好几次了,终于想起来写个笔记记一下 我最开始并不会给小程序分包,然后我就各种搜,发现讲的基本上都是开发之前的小程序分包,可是我都开发完要发布了,提示我说主包太大需要分包,所以我就不会了。。。 好了…...

java配置api,vue网页调用api从oracle数据库读取数据

一、主入口文件 1:java后端端口号 2:数据库类型 和 数据库所在服务器ip地址 3:服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1:column后变量名是数据库中存储的变量名 property的值是column值的…...

iOS三方登录 - Facebook登录

引言 在出海APP的开发中,集成主流社交平台的三方登录已成为必不可少的一环。Facebook 作为全球最大的社交网络平台之一,其提供的 Facebook 登录功能能够大大简化用户注册和登录流程,提高用户体验,减少流失率。对于开发者而言&…...

使用 OpenGL ES 渲染一个四边形

使用 OpenGL ES 渲染一个四边形 在 iOS 开发中,OpenGL ES 是一个强大的工具,用于实现高性能的 2D 和 3D 图形渲染。本文将通过一个完整的代码示例,详细解析如何使用 OpenGL ES 渲染一个简单的四边形。我们将从基础概念入手,逐步讲解代码的每个部分,帮助你理解 OpenGL ES …...

机器学习 - 理解偏差-方差分解

为了避免过拟合,我们经常会在模型的拟合能力和复杂度之间进行权衡。拟合能力强的模型一般复杂度会比较高,容易导致过拟合。相反,如果限制模型的复杂度,降低其拟合能力,又可能会导致欠拟合。因此,如何在模型…...

深入解析 Android 系统属性 跨进程 API:SystemProperties、ContentObserver 的使用

基础篇.系统属性 & 跨进程 API 📢 1. 职业规划篇 来聊聊安卓职业规划?整机开发大专能做么? 📢 2.基础篇 基础篇.前言 基础篇.编译环境搭建 基础篇.源码目录简介 基础篇.系统 mk_bp 讲解 基础篇.开机动画定制 基础篇.定制桌面壁…...

从 .NET Framework 升级到 .NET 8 后 SignalR 问题处理与解决方案

随着 .NET Framework 向 .NET 8 的迁移,许多开发者在使用 SignalR 时遇到了一些前后端连接、配置、调用等方面的问题。尤其是在处理 SignalR 实时通信功能时,升级后的一些兼容性问题可能导致应用程序无法正常工作。本文将介绍在从 .NET Framework 升级到…...

深入解析 Linux 系统中 Cron 定时任务的配置与管理

在 Linux 和类 Unix 系统中,cron 是一个非常强大的工具,用于定时执行各种任务,例如自动备份、定时运行脚本和定期清理日志文件。通过合理配置 cron,你可以让很多系统维护任务自动化,从而减轻日常管理的压力。而 cronta…...

深度学习01 神经网络

目录 神经网络 ​感知器 感知器的定义 感知器的数学表达 感知器的局限性 多层感知器(MLP, Multi-Layer Perceptron) 多层感知器的定义 多层感知器的结构 多层感知器的优势 偏置 偏置的作用 偏置的数学表达 神经网络的构造 ​神经网络的基本…...

ffmpeg基本用法

一、用法 ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 说明: global options:全局选项,应用于整个 FFmpeg 进程,它们通常不受输入或输出部分的限制。 infile options:输入选…...

强化学习 DPO 算法:基于人类偏好,颠覆 PPO 传统策略

目录 一、引言二、强化学习基础回顾(一)策略(二)价值函数 三、近端策略优化(PPO)算法(一)算法原理(二)PPO 目标函数(三)代码示例&…...

【HDSF】ProtobufRpcEngine 和 ProtobufRpcEngine2

ProtobufRpcEngine2的call方法实现如下,它对历史版本的protobuf实现进行了兼容。 即同时支持protobuf 2.5.0 和protobuf 3.x版本的RPC通信。 看下具体是怎么实现的? @SuppressWarnings("deprecation")protected Writable call(RPC.Server server, String connecti…...

Redis中的某一热点数据缓存过期了,此时有大量请求访问怎么办?

1、提前设置热点数据永不过期 2、分布式中用redis分布式锁(锁可以在多个 JVM 实例之间协调)、单体中用synchronized(锁只在同一个 JVM 内有效) 编写服务类 import com.redisson.api.RLock; import com.redisson.api.RedissonCli…...

IntelliJ IDEA 安装与使用完全教程:从入门到精通

一、引言 在当今竞争激烈的软件开发领域,拥有一款强大且高效的集成开发环境(IDE)是开发者的致胜法宝。IntelliJ IDEA 作为 JetBrains 公司精心打造的一款明星 IDE,凭借其丰富多样的功能、智能精准的代码提示以及高效便捷的开发工…...

自动化xpath定位元素(附几款浏览器xpath插件)

在 Web 自动化测试、数据采集、前端调试中,XPath 仍然是不可或缺的技能。虽然 CSS 选择器越来越强大,但面对复杂 DOM 结构时,XPath 仍然更具灵活性。因此,掌握 XPath,不仅能提高自动化测试的稳定性,还能在爬…...

PromptSource官方文档翻译

目录 核心概念解析 提示模板(Prompt Template) P3数据集 安装指南 基础安装(仅使用提示) 开发环境安装(需创建提示) API使用详解 基本用法 子数据集处理 批量操作 提示创建流程 Web界面操作 手…...

2025年软件测试五大趋势:AI、API安全、云测试等前沿实践

随着软件开发的不断进步,测试方法也在演变。企业需要紧跟新兴趋势,以提升软件质量、提高测试效率,并确保安全性,在竞争激烈的技术环境中保持领先地位。本文将深入探讨2025年最值得关注的五大软件测试趋势。 Parasoft下载https://…...

js的DOM一遍过

一、获取元素 1.根据id获取 document.getElementById(id);2.根据标签名获取 使用 getElementsByTagName() 方法可以返回带有指定标签名的对象的集合。 document.getElementsByTagName(标签名);获取某个元素(父元素)内部所有指定标签名的子元素。 element.getElementsByTag…...

Machine Learning:Introduction

文章目录 Machine LearningTrainingStep 1.Contract Function with Unknown ParametersStep 2.Define Loss from Training DataStep 3.Optimization Linear ModelPiecewise Linear CurveBeyond Piecewise Liner?FunctionLossOptimization Model Deformation Machine Learning …...

Excel 笔记

实际问题记录 VBA脚本实现特殊的行转列 已知:位于同一Excel工作簿文件中的两个工作表:Sheet1、Sheet2。 问题:现要将Sheet2中的每一行,按Sheet1中的样子进行转置: Sheet2中每一行的黄色单元格,为列头。…...

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时,如果研究区较大,一个月的影像覆盖不了整个研究区,就会有缺失的地方,还有就是去云之后,有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…...

如何设置爬虫的IP代理?

在爬虫开发中,设置IP代理是避免被目标网站封禁、提升爬取效率和保护隐私的重要手段。以下是设置爬虫IP代理的详细方法和注意事项: 一、获取代理IP 免费代理IP: 可以通过一些免费的代理IP网站获取代理IP,但这些IP的稳定性和速度通…...

如何在浏览器中搭建开源Web操作系统Puter的本地与远程环境

文章目录 前言1.关于Puter2.本地部署Puter3.Puter简单使用4. 安装内网穿透5.配置puter公网地址6. 配置固定公网地址 前言 嘿,小伙伴们!是不是每次开机都要像打地鼠一样不停地点击各种网盘和应用程序的登录按钮,感觉超级麻烦?更让…...

使用EVE-NG-锐捷实现单臂路由

一、基础知识 1.三层vlan vlan在三层环境中通常用作网关vlan配上ip网关内部接口ip 2.vlan创建步骤 创建vlan将接口划分到不同的vlan给vlan配置ip地址 二、项目案例 1、项目拓扑 2、项目实现 PC1配置 配置PC1IP地址为192.168.1.10/24网关地址为192.168.1.1 ip 192.168.1…...

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。…...

水下 SLAM 定位模组的设计与实现

标题:水下 SLAM 定位模组的设计与实现 内容:1.摘要 摘要:本文介绍了水下 SLAM 定位模组的设计与实现。首先,对水下定位技术的背景和需求进行了分析。然后,详细阐述了模组的设计思路和关键技术,包括传感器选型、数据融合算法等。接…...

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…...

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发,当容器是ArkTS组件,子组件在Native侧创建时&#…...

RabbitMQ的死信队列的产生与处理

死信队列(Dead Letter Queue, DLQ) 1. 死信(Dead Letter)是怎么产生的? 在 RabbitMQ 中,消息会变成 死信(Dead Letter)的常见情况有以下几种: 消息被拒绝(R…...