应用篇| 深入浅出LLM应用之RAG

news2024/12/28 18:18:58

在这里插入图片描述

相信很多人都使用过LLM大模型,但是现有大模型或多或少都有以下问题:

LLM幻觉问题:从《【小白入门篇1】GPT到底是怎样练成?》我们知道虽然大模型现在能力很强,但是本质就是在做文字接龙,而且每次接龙都具有随机性, 导致模型有时候回答, 很容易出现“幻觉”。Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起 , 作为解决大模型幻觉的一种利器。

数据保鲜度:除此之外, 现在大模型使用离线数据训练出来,对于新的知识0感知, 导致模型直接回答数据过时、不准等问题。

数据安全性:最后也是最重要的是,数据作为很多企业的重要资产,是不能直接上传到互联网上的大模型, 这样会导致不可预测的后果,既要保证安全,又要借助AI能力,那么最好的方式就是把数据全部放在本地,企业数据的业务计算全部在本地完成。而在线的大模型仅仅完成一个归纳的功能,甚至,LLM都可以完全本地化部署。

出于以上三种主要原因, 使得LLM+RAG有用武之地。

01初识RAG架构

RAG基本思路是将背景知识文档预先向量化,存储至向量数据库中,当用户进行提问时,将用户的提问同样向量化后, 通过向量检索算法(比如向量乘积)之后, 得到top-K的文档, 将获取的top-k文档和用户提问都作为大模型输入, 大模型根据输入最终生成回答.这样 RAG 更加适应事实会随时间变化的情况,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。

image.png

可以将RAG的架构拆分成以下部分:

  • (1)数据提取: 我们现实生活的场景中大部分是word、pdf、pptx等各种各样的文档数据, 需要各种数据Loader,将数据抽取出来, 分别进行数据清洗

  • (2) 数据分块: 现在所有大模型都有token长度的限制, 包括数据库也有长度限制, 而我们文档数据长度大部分都超过这些限制, 所以我们必须对文档数据进行分块

  • (3) 向量化: 将文本、图像、音频和视频等转化为向量矩阵的过程,也就是变成计算机可以理解的格式,embedding模型的好坏会直接影响到后面检索的质量, 相比传统的关键词匹配更具有理解性,对近义词检索更友好.

  • (4)检索环节: 现在一般检索技术采用的是向量相似度计算, 这个跟第三步我们将文档数据向量化之后存储到向量数据库中。检索效果有时候不佳,此时采用一些重排技术。

  • (5)生成:检索结果排序后丢给LLM进行归纳,根据 LLM 的推理能力,返回给用户。

02 现有RAG成熟产品

RAG有各种开源的RAG工具,成品的RAG像Langchain-chatchat、ragflow、qanything等。不同开源的RAG架构有细微的差别,大体框架如第一章节所介绍的。

名称

地址

说明

Langchain-chatchat

https://github.com/chatchat-space/Langchain-Chatchat/tree/master

当前Star 29K

ragflow

https://github.com/infiniflow/ragflow/tree/main

当前Star 9.3k

Qanything

https://github.com/netease-youdao/QAnything/tree/master

当前Star  10.2k

.......

........

......

当然RAG远不止上面三个框架, 之前在《【大模型应用篇4】普通人构建智能体的工具》介绍中的大部分智能体也内置了RAG的功能,从当前star来看chatchat具有拔得头筹优势, 但是Qanything有网易大厂做背书。那有没有其他方式进行评判, 答案是有的,请继续往下看。

除此之外, 如果以上成熟rag产品还不能满足你的需求, 可以使用基于一些Langchain等工具进行自定义开发。这种方式会更加灵活。比如langchain官网有基于langchain开发rag的简单例子https://python.langchain.com/v0.1/docs/use_cases/question_answering/quickstart/。

03 RAG评估

如此之多RAG工具,到底该怎么选?有什么更加量化指标能够评判rag的优劣。大部分RAG评估框架基于答案的相关性、上下文精确度、上下文相关性等上。主要RAG评估框架有以下几种:

名称

地址

说明

Ragas

https://github.com/explodinggradients/ragas 

Ragas是一个用于评估RAG应用的框架,包括忠诚度(Faithfulness)、答案相关度(Answer Relevance)、上下文精确度(Context Precision)、上下文相关度(Context Relevancy)、上下文召回(Context Recall), 其中从上下文相关性和上下文召回来衡量检索的质量,忠诚度和答案相关度来衡量LLM生成的质量。

TruLens

https://github.com/truera/trulens

TruLens 提供了一套用于开发和监控神经网络的工具,包括大型语言模型。这包括使用 TruLens-Eval 评估基于 LLMs 和 LLM 的应用程序的工具以及使用 TruLens-Explain 进行深度学习可解释性的工具。TruLens-Eval 和 TruLens-Explain 位于单独的软件包中,可以独立使用, 同时可以和Langchain无缝集成。一个RAG 三元组评估模式 — 分别是对问题的检索内容相关性、答案的基于性(即大语言模型的答案在多大程度上得到了提供的上下文的支持)和答案对问题的相关性。

uptrain

https://github.com/uptrain-ai/uptrain

用于评估和改进生成式人工智能应用的开源统一平台。提供了20多项预配置检查(涵盖语言、代码、嵌入用例)评分,对失败案例进行根本原因分析,并就如何解决这些问题提出见解。比如prompt注入、越狱检测、整通对话的用户满意度等

LangSmith

https://smith.langchain.com/

LangSmith是一个用于调试、测试和监控LLM应用程序的统一平台。会记录大模型发起的所有请求,除了输入输出,还能看到具体的所有细节,包括:

  1. 请求的大模型、模型名、模型参数

  2. 请求的时间、消耗的 token 数量

  3. 请求中的所有上下文消息,包括系统消息

Langfuse

https://github.com/langfuse/langfuse

Langfuse作为LangSmith的平替,可以帮助开发者和运维团队更好地理解和优化他们的LLM应用。通过提供实时的和可视化的跟踪功能,LangFuse使得识别和解决应用性能问题变得更加简单和高效。实现LLM可观测的功能。

.......

.......

.......

有了量化评估工具,我们结合具体指标优化RAG的效果。不再停留拍脑袋的优化环节,帮助大家选择合适的RAG产品、RAG中的LLM模型、向量化模型等选型。

04 总结

虽然RAG能够快速解决LLM幻觉、新鲜度、以及数据安全性问题,但是RAG也有它的局限性,比如

(1) 向量数据库是一个尚未成熟的技术,缺乏处理大量数据规模的通用方案,因此数据量较大时,速度和性能存在挑战。

(2)在推理时需要对用户输入进行预处理和向量化等操作,增加了推理的时间和计算成本。

(3)外部知识库的更新和同步,需要投入大量的人力、物力和时间。

(4) 需要额外的检索组件,增加了架构的复杂度和维护成本。

(5)并不是精确问题,有些领域需要检索出来精确的数据,知识检索阶段依赖相似度检索技术,并不是精确检索,因此有可能出现检索到的文档与问题不太相关。同时每次检索出来给LLM,每次返回给用户并不是一样,会导致用户查询体验问题。

(6)关于查全问题,有些领域需要知识查询要求尽量全 ,RAG本质还是一种信息检索系统,无法做到全部查全。

总体来说RAG作为LLM前景广阔工业化应用,还是值得大家在私域上面进行部署和使用。随着相关RAG研究发展, 会使得RAG大有可为。

a1q7lEaSQh5nVoqyDeiaUUdoZ0ib71twL6CLICmOMJ25UuTFwl6ydwOXFbl8uiaYMAQ/640?wx_fmt=gif)

推荐阅读:

实用篇| 破解huggingface大法

研究篇| 一款深入浅出的微调框架

【小白入门篇6】常识|怎么计算模型需要的资源

【大模型应用篇3】LLM时代下的智能体

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

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

相关文章

工商业光伏项目怎么做?

随着全球对可再生能源的关注度不断提高,工商业光伏项目已成为企业实现绿色转型、降低能耗成本的重要途径。本文将详细介绍工商业光伏项目的开发流程,以及项目实施过程中需要注意的关键点。 一、项目前期准备 在启动工商业光伏项目之前,首先要…

windows下的 GammaRay安装和使用教程

GammaRay功能: 可用于查看运行时的程序对象状态信息以及事件队列 安装步骤: 1.官网下载地址: GammaRay下载地址 下载对应的qt版本适配版本 2.解压包gammaray-2.11.2.zip 解压后新建一个build目录为接下来的编译做准备 3.打开Install.txt 看…

【自组网数据链电台】测试软件

版本1 版本2 版本3 版本4 版本5 版本6 版本7

苹果cms10影视网整站源码下载/苹果cms模板MXone Pro自适应影视电影网站模板

下载地址:苹果cms10影视网整站源码下载/苹果cms模板MXone Pro自适应影视电影网站模板 模板带有夜间模式、白天晚上自动切换,有观影记录、后台设置页。全新UI全新框架,加载响应速度更快,seo更好,去除多余页面优化代码。…

双向滑动选择器

插件地址:https://ext.dcloud.net.cn/plugin?id3940 注意: 当改变值是,让滑块自动滑动需要调用: this.$refs.powerSlider.updateValue(that.tempPowerValue[0], that.tempPowerValue[1], false); <view style"width: 90%;margin: 15px"><cj-slider ref…

基坑监测的内容及其重要性概述

随着城市建设的不断深入&#xff0c;基坑工程作为基础建设的重要组成部分&#xff0c;其安全性和稳定性成为了关注的重点。为了确保基坑施工过程中的安全&#xff0c;基坑监测显得尤为重要。本文将围绕基坑监测的内容展开&#xff0c;旨在帮助读者更好地理解其重要性及实施方法…

RK3568技术笔记十五 固件烧写

安装驱动 解压DriverAssitant_v5.11.zip压缩包后&#xff0c;在DriverAssitant_v5.11文件夹中找到DriverInstall.exe文件&#xff0c;双击打开DriverInstall.exe。如下图所示&#xff1a; 点击驱动安装&#xff0c;等待驱动安装完成&#xff0c;弹出如下所示对话框&#xff0c;…

巧用newSingleThreadExecutor让异步任务顺序跑

背景 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统 。一个用来控制 Flume 采集任务的 Web 应用&#xff0c;需要对任务进行管理&#xff0c;主要操作「启动、停止、新建、编辑、删除」&#xff0c;本质就是对…

【2024.6.21】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

RuoYi Swagger请求401

问题描述&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 使用ruoyi-vue分离版&#xff0c;访问swagger&#xff0c;发现接口都调用失败&#xff1a;401 解决方案&#xff1a; 最终解决问题如下步骤&#xff1a; 1、 调用swagger中的接口&#xff0c;报错&a…

氢氧化铝佐剂,完美替代进口品牌明矾佐剂

氢氧化铝佐剂 氢氧化铝佐剂是使用历史最为悠久的疫苗佐剂&#xff0c;已有近百年历史&#xff0c;广泛用于各种人用疫苗和兽用疫苗。氢氧化铝佐剂能够极大地促进体液免疫&#xff08;抗体&#xff09;反应和TH2类细胞免疫反应。 用途 1、免疫各种实验动物制备多克隆或单克隆抗…

CSS阴影优化气泡框样式

<body> <div class"pop">气泡框</div> </body>body{display: flex;justify-content: center;align-items: center;height: 100% } .pop{display: flex;justify-content: center;align-items: center;background: #409eff;width: 150px;heigh…

什么是OAuth2分布式授权协议?

今天我将和大家一起探讨在系统安全领域非常常见的一种授权协议&#xff0c;这就是OAuth2协议&#xff0c;这个协议通常用于对请求访问进行安全控制。在引入这个协议之前&#xff0c;让我们先来回顾两个基本概念&#xff0c;一个是认证&#xff0c;一个是授权。这两个概念比较容…

python18 正则表达式

python18 正则表达式 正则表达式 re.match(),re.search(),re.findall(),re.sub(),re.split() 元字符 具有特殊意义的专用字符 导入模块 improt re代码 正则表达式 re.match(),re.search(),re.findall(),re.sub(),re.split() 元字符 具有特殊意义的专用字符 导入模块 improt rei…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限&#xff0c;出海开拓更广阔的国际市场需求&#xff0c;增加销售额&#xff0c;分散市场风险&#xff0c;还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海&#xff0c;要么出局”的声音。扬帆出海&#xff0c;参与全球…

oracle开放某些视图给特定用户,查询报视图不存在问题

以sysdba身份登录到Oracle数据库。 创建新用户。例如&#xff0c;创建一个名为new_user的用户&#xff0c;密码为password&#xff1a; CREATE USER new_user IDENTIFIED BY password;为新用户分配表空间和临时表空间。例如&#xff0c;将表空间users和临时表空间temp分配给新…

演示:WPF开发的Diagram自动化流程图应用

一、目的&#xff1a;演示Diaram应用功能 二、预览 三、功能列表 功能模块 通用测试 流程图 仪器仪表 机器人 网络通信测试 PLC测试 轮毂生产线流程测试 图像处理 目标检测 绘图 思维导图 图表 流程图功能 模板管理 工程管理 模块许可管理 工具栏 开始 停止 删除 清除 …

Wilcom PE 威尔克姆绣花软件下载安装;Wilcom PE 广大绣花制版师必备软件!

Wilcom PE这款软件不仅具备强大的设计功能&#xff0c;更在用户体验上下足了功夫&#xff0c;使得刺绣图案的创作变得更为简单、高效。 在Wilcom PE的丰富工具箱中&#xff0c;用户可以发现各种精心设计的工具&#xff0c;它们如同刺绣师手中的魔法棒&#xff0c;将创意变为现…

图象去噪1-使用中值滤波与均值滤波

1、中值滤波 使用中值滤波去除图像的异常像素点&#xff0c;使用cv2.cv2.medianBlur(img, 3)表示再图像在中值滤波窗口3*3的范围内&#xff0c;从下到大排序&#xff0c;将当前值替换为排序中值&#xff08;如下图所示&#xff09;将56替换为&#xff08;56&#xff0c;66,90,…

NUC980-OLED实现全中文字库的方法

1.背景 有一个产品&#xff0c;客户需要屏幕展示一些内容&#xff0c;要带一些中文&#xff0c;实现了OLED12864的驱动&#xff0c;但是它不带字库&#xff0c;现在要实现OLED全字库的显示 2.制作原始字库 下载软件pctolcd2002 设置 制作字库 打开原始文件 用软件自带的&…