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

LLM大语言模型应用方案之RAG检索增强生成的实现步骤。

0.我理解的RAG

什么是RAG?
        RAG的全称是“检索增强生成模型”(Retrieval-Augmented Generation)。这是一种特别聪明的大语言模型。
 

RAG是怎么工作的呢?

        1.检索:当你问RAG一个问题时,它会先去“图书馆”里找相关的信息。这些“图书馆”里有很多知识和数据。

        2.生成:找到了相关的信息后,RAG会用这些信息来生成一个回答。
 

为什么RAG很厉害?

        有时候,大语言模型可能会不记得所有的细节,但RAG可以通过检索来找到需要的具体信息,然后再回答你的问题。这就像是你问一个问题,RAG先去查了一下百科全书,然后再告诉你答案,所以回答会更准确。

举个例子:

        问:"世界上最高的山是什么?"

        RAG做了什么:

                1.去“图书馆”查找关于最高山的资料。

                2.找到了珠穆朗玛峰是世界上最高的山。

                3.回答:“世界上最高的山是珠穆朗玛峰,高约8848米。”

这样,通过先检索再生成答案,RAG可以提供准确而有用的回答。

这其中去“图书馆”查找关于高山的资料,我们就可以通过一些方法,将自己拥有的数据进行处理,让大语言模型结合我们问的问题在我们处理后的数据中寻找答案。

1.我的RAG程序的执行流程

  • 模型初始化
            初始化一个大语言模型(LLM)和一个嵌入模型(embedding模型)。

  • 读取文档进行数据分割
            将文档交给代码进行读取,将长文档分割成较小的部分,以便处理。

  • 向量处理
            将分割后的文档数据通过嵌入模型进行向量化处理,生成每个文档段落的向量表示。
            将向量化处理后的数据保存到数据库中。

  • 检索流程 
            创建一个包含检索和生成步骤的处理链。

  • RAG链包括以下步骤:

  • 创建检索器  
            从向量存储的数据库中创建检索器,在检索时使用余弦距离来衡量向量之间的相似度。            检索器用于检索与输入问题相关的文档内容。

  • 加载提示词模板
            加载提示词模板,用于指导大语言模型生成回答。

  • 格式化检索到的文档
             将检索到的相关文档内容通过格式化函数转换为一个字符串,方便后续处理。

  • 调用处理链处理输入问题
            输入的问题首先通过检索器检索相关文档。
            然后结合提示词模板和格式化后的文档内容,传递给大语言模型。
            大语言模型生成一个准确的回答。

2.效果 

   在我的提示词模板中, 说明了,如果文档中不存在的内容,只需要回答不知道就可以了。

相关文章:

LLM大语言模型应用方案之RAG检索增强生成的实现步骤。

0.我理解的RAG 什么是RAG? RAG的全称是“检索增强生成模型”(Retrieval-Augmented Generation)。这是一种特别聪明的大语言模型。 RAG是怎么工作的呢? 1.检索:当你问RAG一个问题时,它会先去“图书…...

【python学习】学习python的小项目

学习Python时,通过完成一些小项目可以帮助你巩固知识并提升实践能力。以下是一些适合学习Python的小项目建议: 命令行计算器: 创建一个简单的命令行计算器,可以执行基本的算术运算(加、减、乘、除)。使用i…...

java-冒泡排序 1

## Java中的冒泡排序 ### 1. 冒泡排序的基本概念 冒泡排序(Bubble Sort)是一种简单且直观的排序算法。它通过重复地遍历待排序的列表,比较相邻的元素并交换它们的位置,使较大的元素逐步从列表的一端移动到另一端,就像…...

【STM32】USART串口通讯

1.USART简介 STM32芯片具有多个USART外设用于串口通讯,它是 Universal Synchronous Asynchronous Receiver and Transmitter的缩写, 即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。有别于USART, 它还有具有UART外设(Univers…...

Qt6中如何将QList转为QSet?

QSet是一个具有唯一值的哈希集合。比较少用。比较有用的是QSet里面的intersect查找两个集合中不同元素&#xff0c;并合并。 转换过程比较简单&#xff0c;第一种是直接用迭代器。 QSet<int> set(list.begin(), list.end()); 第二种就是逐一遍历赋值&#xff1a; QLi…...

aspectj:AOP编程备忘录-切面定义的注意事项

AOP编程时定义切面时需要注意的事 Around 以Around注解拦截构造方法(Constructor)时切面定义只能用call方式而不能是execution&#xff0c;否则 ProceedingJoinPoint.proceed()返回的是null&#xff0c;得不到构造的实例。 execution execution切入点要修改对象内部&#x…...

大数据面试题之Hive(1)

目录 说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么? 说下Hive是什么?跟数据仓库区别? Hive架构 Hive内部表和外部表的区别? 为什么内部表的删除&#xff0c;就会将数据全部删除&#xff0c;而外部表只删除表结构?为什么用外部表更好? Hive建表语句?创建表…...

【Git】分布式版本控制工具

一、简介 二、目标 Git分布式版本控制工具 一、简介 Git是一种分布式版本控制系统&#xff0c;用于跟踪和管理源代码的变化。它由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于2005年开发&#xff0c;并迅速成为最流行的版本控制工具之一。以下是关于Git的一些关键…...

排序之插入排序----直接插入排序和希尔排序(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序之插入排序----直接插入排序和希尔排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨…...

快速创建条形热力图

Excel中的条件格式可以有效的凸显数据特征&#xff0c;如下图中B列所示。 现在需要使用图表展现热力条形图&#xff0c;如下图所示。由于颜色有多个过渡色&#xff0c;因此手工逐个设置数据条的颜色&#xff0c;基本上是不可能完成的任务&#xff0c;使用VBA代码可以快速创建这…...

go switch 与 interface

go switch 与 interface 前言 前言 github.com/google/cel-go/common/types/ref type Val interface {// ConvertToNative converts the Value to a native Go struct according to the// reflected type description, or error if the conversion is not feasible.ConvertTo…...

BaseMapper 接口介绍

基于 mybatis-mapper/provider 核心部分实现的基础的增删改查操作&#xff0c;提供了一个核心的 io.mybatis.mapper.BaseMapper 接口和一个 预定义 的 io.mybatis.mapper.Mapper 接口&#xff0c;BaseMapper 接口定义如下&#xff1a; /*** 基础 Mapper 方法&#xff0c;可以在…...

HAL-Cubemax定时器使用记录

title: HAL-Cubemax定时器使用记录 tags: STM32HalCubemax 文章目录 HAL-Cubemax定时器使用记录分享一种思路1.创建一个ms(毫秒)级延时中断2.创建计数的变量3.在需要延时的函数中对变量阈值进行判断4.验证实例--完整使用记录代码 问题往期内容基础库HAL cubemax VSCODE GCC …...

同时使用磁吸充电器和Lightning时,iPhone充电速度会变快吗?

在智能手机的世界里&#xff0c;续航能力一直是用户关注的焦点。苹果公司以其创新的MagSafe技术和传统的Lightning接口&#xff0c;为iPhone用户提供了多样化的充电解决方案。 然而&#xff0c;当这两种技术同时使用时&#xff0c;它们能否带来更快的充电速度&#xff1f;本文…...

零成本搭建个人图床服务器

前言 图床服务器是一种用于存储和管理图片的服务器&#xff0c;可以给我们提供将图片上传后能外部访问浏览的服务。这样我们在写文章时插入的说明图片&#xff0c;就可以集中放到图床里&#xff0c;既方便多平台文章发布&#xff0c;又能统一管理和备份。 当然下面通过在 Git…...

SpringBoot 搭建sftp服务 实现远程上传和下载文件

maven依赖&#xff1a; <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>application.yml sftp:protocol: sftphost: port: 22username: rootpassword: sp…...

IDEA中使用leetcode 刷题

目录 1.IDEA下载leetcode插件 2.侧边点开插件 3.打开网页版登录找到cookie复制 4.回到IDEA登录 5.刷题 6.共勉 1.IDEA下载leetcode插件 2.侧边点开插件 3.打开网页版登录找到cookie复制 4.回到IDEA登录 5.刷题 6.共勉 算法题来了不畏惧&#xff0c; 挑战前行是成长的舞台…...

华为海思CPU解读

安全可靠CPU测评结果&#xff08;华为海思篇&#xff09; 中国信息安全测评中心于2024年5月20日发布安全可靠测评结果公告&#xff08;2024年第1号&#xff09;&#xff0c;公布依据《安全可靠测评工作指南&#xff08;试行&#xff09;》的测评结果&#xff0c;自发布起有效期…...

中介子方程三十三

XXFXXuXXWXXuXXdXXrXXαXXuXpXXdXXpXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXpXXdXXpXuXXαXXrXXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXXdXXrXXαXXuXpXXdXXpXuXXαXXrXXdXXuXXWXXuXXFXXEXXyXXEXXrXXαXXuXpXXdXXpXuXXαXXrXXEXXyXXαXiXXαXiXrXkXtXyXXpXVXXdXuXWX…...

今年哪两个行业可能有贝塔?

银行和综合板块存在比较明显的行业贝塔&#xff0c;背后原因是&#xff1a;银行板块中&#xff0c;最小的几家银行市值也不小&#xff1b;综合板块中&#xff0c;最大的几家市值也不大。 一、今年哪两个行业可能有贝塔&#xff1f; 我们一直强调今年市场呈现出【行业弱beta、风…...

保姆级教程:用STM32F103C8T6(CUBEMX HAL库)读取航模遥控器PPM信号,附完整代码

低成本STM32F103C8T6读取航模PPM信号实战指南 航模遥控器的PPM信号解析一直是DIY爱好者的热门话题。相比昂贵的专用解码器&#xff0c;一块十几元的STM32F103C8T6开发板就能实现相同功能。本文将手把手教你用最常见的"蓝板"完成从硬件连接到代码调试的全过程。 1. 硬…...

如何快速解锁网易云音乐NCM文件:ncmdumpGUI终极指南

如何快速解锁网易云音乐NCM文件&#xff1a;ncmdumpGUI终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其他…...

Qwen3.5-9B效果展示:中英混合输入+代码注释生成高质量输出

Qwen3.5-9B效果展示&#xff1a;中英混合输入代码注释生成高质量输出 1. 模型核心能力概览 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;在多个领域展现出卓越的能力。这个模型特别适合处理复杂的技术任务&#xff0c;尤其是那些需要同时理解自然语言和编程语言的…...

跨平台开源工具WorkshopDL:游戏玩家的资源获取终极解决方案

跨平台开源工具WorkshopDL&#xff1a;游戏玩家的资源获取终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏玩家的数字生活中&#xff0c;创意模组是拓展游戏…...

Windows右键菜单终极管理指南:用ContextMenuManager轻松掌控右键菜单

Windows右键菜单终极管理指南&#xff1a;用ContextMenuManager轻松掌控右键菜单 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为杂乱的Windows右键菜单烦…...

SAP增强开发实战:如何用STARTING NEW TASK避免BAPI_TRANSACTION_COMMIT的坑?

SAP增强开发实战&#xff1a;如何用STARTING NEW TASK避免BAPI_TRANSACTION_COMMIT的坑&#xff1f; 在SAP标准增强开发中&#xff0c;当我们需要在出口函数里调用BAPI修改或创建业务单据时&#xff0c;总会遇到一个经典难题&#xff1a;如何在增强点安全地提交事务&#xff1f…...

深入解析STM32 SysTick定时器:从原理到时间片轮询实战

1. SysTick定时器的前世今生 第一次接触STM32的开发板时&#xff0c;我就被这个叫做SysTick的神秘定时器吸引了。当时我正为如何实现精确延时发愁&#xff0c;GPIO翻转测试显示软件延时误差高达30%&#xff0c;直到一位资深工程师提醒我&#xff1a;"内核里就藏着个高精度…...

Android 应用间文件共享:FileProvider 配置与实战解析

1. 为什么需要FileProvider&#xff1f; 在Android开发中&#xff0c;每个应用都有自己的私有存储空间&#xff0c;这些目录默认是其他应用无法访问的。这种设计保证了应用数据的安全性&#xff0c;但同时也带来了一个问题&#xff1a;当我们需要与其他应用共享文件时该怎么办&…...

2026前端面试必杀技:大白话详解高频面试题

2026前端面试必杀技&#xff1a;大白话详解高频面试题 这篇全是大白话、超详细&#xff0c;覆盖HTML/CSS、JS基础/进阶、框架、网络、工程化、性能、手写题、项目8大模块&#xff0c;2026年高频题全覆盖&#xff0c;看完直接上战场。 一、HTML/CSS 基础&#xff08;必问&#x…...

思考时爱用手托腮?警惕单侧发力拖垮颈肩平衡

很多人在工作、学习或思考时&#xff0c;习惯用手托腮&#xff0c;这个看似不经意的动作&#xff0c;会给颈肩带来持续负担&#xff0c;引发肌肉失衡劳损。用手托腮时&#xff0c;头部会向一侧倾斜&#xff0c;颈椎处于侧屈状态&#xff0c;颈部一侧肌肉持续紧张、牵拉&#xf…...