检索增强生成RAG系列2--提高RAG准确度的关键点

上一章讲到了RAG的基本流程,但是如果只是完成一个基本流程,想要在商业上使用还是不行,因为正常商业上的使用其准确度至少有个90%甚至更高。那么如何提高RAG的准确度,那么需要看看RAG有哪些关键点。

目录

  • 1 RAG结构图
  • 2 文档处理
  • 3 问题优化
  • 4 总结

1 RAG结构图

在上一章中展现了一个最基本的RAG流程图,其实主要是想让你了解RAG的工作模式以及最基本包含的组件,下面的图让你更为细节的了解一个RAG架构的可能性:

在这里插入图片描述

从上图可以看出更为详细的RAG过程中的步骤,我们可以总结为2个大方面对RAG的准确性提高有着举足轻重的影响,后续也会根据这2个大的方面改进做一些详细代码实现,本章先通过简单介绍每个模块作用和如何对RAG产生影响的。

  • 文档处理:包括文档解析、文档分块、文档embedding、向量数据库等
  • 问题优化:通过改写问题、增强问题、分解问题、重排等手段,使得问题更匹配知识库

下面就通过这2个大方面来分别说明为什么这些内容是提高RAG准确度的关键点。

2 文档处理

我们能够从上图看到,文档处理包括很重要的3个部分:文档解析、文档分块、文档embedding。

  • 文档解析:我们需要查询的文档可能包括pdf、Excel、图片等等各种各样的内容,而这些内容中包括很多不同的格式,比如pdf中可能还包括表格和图片,因此选择哪些文档解析工具非常重要。目前市面上有很多工具,如PyPDF、LlamaParse、Firecrawl等等。关于使用哪些解析工具解析哪些文档,这方面在系列3中详细讲解。
  • 文档分块:之所以要分块是因为2个原因,第一个是因为大模型有token长度限制,第二是过长的token其实对于大模型的理解和推理会变慢或者不准确。因此需要适当的对文档进行分块,有可能分块会将原先有关联的一句话给分隔开了,这样对RAG的检索结果就会不准确甚至找不到答案。因此如何分块或者该分块多大才是最优解,这些也在系列3中详细讲解,这里只是说明文档的分块对于RAG的准确度也是影响较大的。
  • 文档embedding:文档最终是向量化后存入向量数据库,然后通过query方式查询问题与答案的相似度来获取top_n的数据,再交于大模型去返回最终答案。这里要注意的是embedding也是一个可训练的模型或者已经训练完成的模型。那么有可能embedding模型做得不好,导致查询的结果与答案不一致。那么如何选对一个embedding模型也是对于RAG的准确度至关重要,这些也在系列3中详细讲解。
  • 向量数据库:向量数据库需要存储向量化后的数据,然后通过问题查询相似度,得到最终相关的几个答案,扔给大模型进行回答。那么向量数据库的存储和相似度查询就可能会影响RAG最终的结果,因此,我们选择哪一种向量数据库,对于我们来说还是比较重要的。

3 问题优化

我们能够从上图看到,问题优化包括改写、增强、分解等措施。那么先说一下为什么要对问题优化。其实很好理解,你在使用大模型的时候,经常使用优化prompt的方式让大模型能够返回你想要的答案,那么对于问题优化也是同样的道理,可能造成的原因是用户表达不准确、问题和文档不在一个语义空间或者可能问题需要拆解多步等等。那么对于RAG来说,对于问题优化包括以下内容:

  • 问题改写:可能提问的不是很准确,让大模型或者其它技术给你的问题进行改写,这样能够提高问题的准确性,使得查询结果相关性更高
  • 问题增强:增强可能比较难以理解,其实就是通过某些技术让模型更能理解你这句话,比如使用假设性回答去找答案或者通过抽象问题去检索等等
  • 问题分解:很明显是对于需要针对多步解决的问题,这时候对问题进行分解有利于得到更准确的答案,比如将问题分解为更小更简单的问题或者利用生成和检索不断交替等方法去优化问题
  • 重排:前面提到过可能根据改写、增强等方式对问题进行优化,有可能是生成多个不同角度问题,再做多次查询,获得最终查询结果。但是最终的查询结果需要进行一个相关性的排序,因为有可能数据过多,需要过滤掉一些,也有可能获取的数据相关性不一。因此对于返回结果进行重排也是能够提高RAG的准确度

以上是对于问题优化为什么能够提高RAG的准确度进行简单的概述,优化手段将在本系列4中详细讲解。

4 总结

本章中我们通过更为详细的描述RAG整体架构流程图,并一一分析了里面对于RAG准确度的影响。其实主要包括2部分:文档处理问题优化。接下来几章可能真的这些部分做出详细的一些优化策略的解决方案,同时也会总结一些实战经验。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

群晖系统百度网盘套件卸载之后无法再次安装 ContainerManager项目无法删除

前言 最近重新组了个NAS,在套件迁移的时候遇到个头疼的问题。在用矿神的百度网盘在迁移的时候出错了,于是我自己删掉baiduapp得容器和镜像然后卸载套件。不知道中间出了啥问题,套件是已经卸载了,但是群晖ContainerManager套件中的…

企业有必要安装数据文件加密软件吗?哇!这么多好处

需要的 一、查看以下分析,便能得出结论 安全防护提升:禁止拷贝、打印、截屏等,还能够设置文件的浏览次数、有效期,提供多层次的文档保护措施。 核心机密保护:企业的核心机密文件、技术资料、客户资料等重要信息是公…

RabbitMQ安装部署

简介 RabbitMQ一款知名的开源消息队列系统,为企业提供消息的发布、订阅、点对点传输等消息服务。 RabbitMQ在企业开发中十分常见,课程为大家演示快速搭建RabbitMQ环境。 安装 rabbitmq在yum仓库中的版本比较老,所以我们需要手动构建yum仓库…

学习分享-Redis 中的压缩列表 (Ziplist)

Redis 中的压缩列表 (Ziplist) 压缩列表 (Ziplist) 是 Redis 内部用于优化小规模数据存储的一种紧凑数据结构。它设计用于高效地存储包含少量元素的列表、哈希表或有序集合,以减少内存占用和提高性能。以下是压缩列表的详细介绍: 1. 压缩列表的结构 压…

mac 安装mysql启动报错 ERROR!The server quit without update PID file

发现问题: mac安装mysql初次启动报错: 一般出现这种问题,大多是文件夹权限,或者以前安装mysql卸载不干净导致。首先需要先确定问题出在哪?根据提示我们可以打开mysql的启动目录,查看启动日志。 问题解决&a…

逆变器使用手册:类型详解、安装要点与维护须知

逆变器随着可再生能源的兴起和移动电源需求的激增已成为连接直流电与交流电世界的桥梁,其重要性不言而喻。无论是太阳能发电系统的高效利用,还是汽车、游艇等移动设备的电力供应,逆变器都扮演着关键角色。然而,正确的使用方法是确…

Linux运维:MySQL数据库(1)

1.信息与数据: 数据是信息的载体,信息是数据的内涵。数据库就是存储数据的仓库,并长期存储在计算机磁盘中,可由多个用户和应用程序共享的数据集合,就是数据库。 2.数据库中的数据的特点: 2.1.数据是按照某…

ai assistant 是所有编程助手中最出色的一款 ?

ai assistant激活成功后,如图 ai assistant渠道:https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上,Google 为 Android Studio 推出了 Studio Bot 功能,使用了谷歌编码基础模型 Codey,Codey 是…

element-plus 日期选择添加确定按钮

需求&#xff1a;选择日期后&#xff0c;点击确定按钮关闭面板 思路&#xff1a; 使用shortcuts自定义确定和取消按钮选择日期后使用handleOpen()强制开启面板点击确定后使用handleClose()关闭面板 <template><el-date-pickerref"pickerRef"v-model"…

【Linux】对共享库加载问题的深入理解——基本原理概述

原理概述 【linux】详解——库-CSDN博客 共享库被加载后&#xff0c;系统会为该共享库创建一个结构&#xff0c;这个结构体中的字段描述了库的各种属性。在内存中可能会加载很多库&#xff0c;每一个库都用一个结构体描述。把这些结构体用一些数据结构管理起来&#xff0c;系…

盲盒小程序:线上盲盒发展机遇

盲盒已经成为了当下年轻人的潮玩首选方式。随着二次元、影视行业的快速发展&#xff0c;给盲盒提供了各种新的发展方向&#xff0c;盲盒商品也在不断创新&#xff0c;种类丰富多样。玩家在拆盲盒时随机获得某一商品&#xff0c;具有惊喜感和刺激性。 目前&#xff0c;随着小程…

深入剖析Tomcat(十、十一) 详解StandardWrapper

《深入剖析Tomcat》第十章介绍了Tomcat的安全机制&#xff0c;主要就是对servlet的访问做安全验证&#xff0c;如果Tomcat中设置了某些servlet需要指定角色的用户才能访问&#xff0c;则需要客户端进行登录验证&#xff0c;如果用户名密码正确并且该用户拥有该角色的话&#xf…

Vite 动态导入警告问题解决方案

如上图我要实现从后台获取权限菜单并动态导入进行渲染 但由于 vite 暂时不支持这种导入方式 图中也给出了提示 本人也是这么去做了 但并没什么卵用 后来参考了 vite 的 import.meta.glob 这种方式 我在处理菜单权限控制的菜单里进行了如下操作&#xff1a; …

数据转换 | Matlab基于R对称点模式(symmetric dot pattern, SDP)一维序列信号转二维时频图象

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 数据转换 | Matlab基于R对称点模式(symmetric dot pattern, SDP)一维序列信号转二维时频图象 SDP常被用于信号分析和深度学习模式识别。 SDP是一种基于极坐标系的图像表示方法&#xff0c;可以直接将原始信…

版本控制工具-git的基本使用

目录 前言一、git简介二、git工作流程三、安装git并配置git3.1 配置用户名和邮箱3.2 配置.gitignore文件&#xff08;可选&#xff09;3.3 配置ssh key&#xff08;可选&#xff09; 四、git基本命令4.1 创建本地仓库4.2 将工作区内容提交到本地仓库4.3 将本地仓库内容推送到远…

【例子】webpack 开发一个可以加载 markdown 文件的加载器 loader 案例

Loader 作为 Webpack 的核心机制&#xff0c;内部的工作原理却非常简单。接下来我们一起来开发一个自己的 Loader&#xff0c;通过这个开发过程再来深入了解 Loader 的工作原理。 这里我的需求是开发一个可以加载 markdown 文件的加载器&#xff0c;以便可以在代码中直接导入 m…

nacos漏洞汇总

1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目&#xff0c;是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;可以快速实现动态服务发现、服…

【数据结构】(C语言):动态数组

动态数组&#xff1a; 内存区域连续&#xff0c;即每个元素的内存地址连续。可用索引查看元素&#xff0c;数组[索引号]。指定位置删除元素&#xff0c;该位置之后的元素全部往前移动一位。指定位置添加元素&#xff0c;从最后到该位置的元素全部往后移动一位。物理大小&#…

量化交易 - 策略回测

策略回测 1、什么是策略回测&#xff1f;2、策略回测的作用3、策略回测系统概述3.1策略回测中相关的指标介绍3.2量化交易策略的资金容量3.3 完整的策略回测系统包含哪些内容 1、什么是策略回测&#xff1f; 策略回测&#xff0c;也称之为策略回溯测试&#xff0c;是指利用交易…

NLP经典论文研读--xlnet论文代码复现记录

xlnet源码解读(简易pytorch实现版本) xlnet这个模型还是相当复杂的&#xff0c;我看了很长一段时间也还是有很多地方没有搞明白&#xff0c;最后又在网上搜了很多大佬写的相关博客&#xff0c;才算是大致弄明白了&#xff0c;想了解xlnet的原理&#xff0c;请参考原论文&#…