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

news2024/11/22 13:53:54

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.效果 

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

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

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

相关文章

Dockerfile封装制作pytorch(tensorflow)深度学习框架 + jupyterlab服务 + ssh服务镜像

一:docker-hub官网寻找需求镜像 1.我们在https://hub.docker.com/官网找到要封装的pytorch基础镜像,这里我们以pytorch1.13.1版本为例 2.我们找到的这个devel版本的镜像(我们需要cuda的编译工具) pytorch版本是1.13.1,…

Windows桌面运维----第四天

1、U盘故障打不开: 操作方式:WinR打开运行,输入cmd确定,在(C:\Users\Administrator>)后输入chkdsk,空格,输入U盘盘符,例如F:/F,回车,等待修复完成。 2、…

Bad return type in lambda expression: void cannot be converted to Unit

1.背景 当kotlin中声明需要传入一个返回值为空(Unit)的方法引用. 代码示例: 下方第二个参数为一个方法引用,(参数为BiometricPrompt.AuthenticationResult, 返回类型为Unit). object BiometricPromptUtil {private const val TAG "BiometricPromptUtil"fun cre…

Day6—热点搜索词统计

一、要求 根据用户上网的搜索记录对每天的热点搜索词进行统计,以了解用户所关心的热点话题。 要求完成:统计每天搜索数量前3名的搜索词(同一天中同一用户多次搜索同一个搜索词视为1次)。 二、数据 三、配置scala环境 1.下载sca…

思科PAP命令笔记

命令格式 含义 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_44862120/article/details/115675197 ——————…

动态规划——活动安排问题II(C++)

Take it easy! 2024年6月19日 题目描述 假设有n个活动和一个资源,每个活动执行时都需要占用该资源,并且该资源在任何时间只能被一个活动所占用,一旦某个活动开始执行,中间将不能被打断,直到其执行完毕。每个活动i都有…

数据结构--顺序表(图文)

顺序表的概念和特点 顺序表是一种线性数据结构,它由一组数据元素构成,这些元素具有相同的特性,并按照一定的顺序排列。在顺序表中,数据元素通常存储在连续的内存空间中,这使得通过索引可以直接访问到表中的任意元素。…

考研计组chap2数据的表示和运算

3一、进位计数制 1.r进制 第i位表示r进制的权为i 2.进制转换 (1)r->10 对应位置数*权值 (2)2 -> 16 or 8 每三位2进制数可表示1位16进制 每四位2进制数可表示1位16进制 so 分开之后转为16进制即可 eg:1…

欧拉函数的求解

欧拉函数的定义 欧拉函数的性质 性质1是性质2的特殊情况 性质1的理解:一个数a是质数,前面的数b与a的gcd一定是1 性质2的理解:1,2,…p,p1,p2…2p,…3p…p^k 其中以np结尾的序列重复了p^(k-1)次,每一次的循环…

Day10—Spark SQL基础

Spark SQL介绍 ​ Spark SQL是一个用于结构化数据处理的Spark组件。所谓结构化数据,是指具有Schema信息的数据,例如JSON、Parquet、Avro、CSV格式的数据。与基础的Spark RDD API不同,Spark SQL提供了对结构化数据的查询和计算接口。 Spark …

星戈瑞FITC-Cytochrome C:荧光标记细胞色素C的研究与应用

细胞色素C(Cytochrome C)是一种位于线粒体内膜上的蛋白质。为了深入地研究细胞色素C在细胞生物学和病理学中的功能,科学家们常常采用荧光标记技术对其进行追踪和观察。其中,异硫氰酸荧光素(FITC)作为一种常…

iOS原生APP开发的技术难点

iOS原生APP开发的技术难点主要体现在以下几个方面,总而言之,iOS原生APP开发是一项技术难度较高的工作,需要开发者具备扎实的编程基础、丰富的开发经验和良好的学习能力。北京木奇移动技术有限公司,专业的软件外包开发公司&#xf…

再谈量化策略失效的问题

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

数据结构之B树的理解与示例(C#)

文章目录 B树的基本概念与特点B树在C#数据结构中的应用创建一个B树节点的具体代码示例插入、删除和查找操作的示例B树在文件存储与处理中的具体应用示例总结 B树是一种自平衡的树数据结构,它维持数据的有序性,并且允许搜索、顺序访问、插入和删除的操作都…

前后端完整案例-简单模仿点点开黑抽奖

数据库 后台 源码:https://gitee.com/qfp17393120407/game 前台 源码: https://gitee.com/qfp17393120407/game-weeb vue项目打包 注意:打包时将IP改为自己公网IP npm run build公网页面 地址:点点模拟抽奖 进入页面抽奖…

电路笔记 :LM3481MM/NOPB升压模块,升压电路原理

LM3481MM/NOPB LM3481MM/NOPB 是德州仪器(Texas Instruments)的一款广泛应用的DC-DC控制器,常用于电源管理应用,特别是在需要升压(boost)、反激(flyback)、SEPIC或反向配置的场合。…

企业UDP文件传输工具测速的方式(下)

在前一篇文章中,我们深入讨论了UDP传输的基本概念和镭速UDP文件传输工具如何使用命令行快速进行速度测试。现在,让我们进一步探索更为高级和灵活的方法,即通过整合镭速UDP的动态或静态库来实现网络速度的测量,以及如何利用这一过程…

Java零基础之多线程篇:线程的多种创建方式

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

支持向量机 (SVM) 算法详解

支持向量机 (SVM) 算法详解 支持向量机(Support Vector Machine, SVM)是一种监督学习模型,广泛应用于分类和回归分析。SVM 特别适合高维数据,并且在处理复杂非线性数据时表现出色。本文将详细讲解 SVM 的原理、数学公式、应用场景…

[Qt的学习日常]--窗口

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、窗口的分…