Advanced RAG 01:讨论未经优化的 RAG 系统存在的问题与挑战

news2024/10/7 17:36:18

编者按: 自 2023 年以来,RAG 已成为基于 LLM 的人工智能系统中应用最为广泛的架构之一。由于诸多产品的关键功能严重依赖RAG,优化其性能、提高检索效率和准确性迫在眉睫,成为当前 RAG 相关研究的核心问题。

我们今天为大家带来的这篇文章指出,Naive RAG 在编制索引、检索和内容生成这三个核心步骤中都存在诸多问题:a) 编制索引时,信息提取不完整、分块策略简单、索引结构未优化、嵌入模型表示能力较弱;b) 检索时,检索到的信息与用户向系统提出的请求相关性不高、召回率低、对不准确的用户请求无法处理、算法单一、存在上下文信息冗余;c) 内容生成时,上下文整合不佳、过度依赖检索信息、存在生成错误/不当内容的风险。

这篇文章指出了当前 Naive RAG 系统的种种缺陷,为下一步的优化措施和解决方案指明了方向,对提升 RAG 在实际应用中的效率和准确性具有重要意义。

作者 | Florian June

编译 | 岳扬

🚢🚢🚢欢迎小伙伴们加入AI技术软件及技术交流群,追踪前沿热点,共探技术难题~

检索增强生成(Retrieval Augmented Generation,RAG)是通过整合来自外部知识源的额外信息来改进大语言模型(Large Language Models,LLMs)应用能力的一种技术。这种技术能够帮助 LLMs 产生更精确和更能感知上下文的回复,同时也能减轻幻觉现象。

自 2023 年以来,RAG 已成为基于 LLM 的软件系统中最受欢迎的架构。许多产品的功能都严重依赖 RAG 。因此,优化 RAG 的性能,使检索过程更快、结果更准确,已成为一个关键问题。

这一系列文章将重点介绍 RAG 优化技术,帮助读者提升 RAG 生成结果的整体质量。

01 简单介绍 Naive(未经过优化的)RAG

如图 1 所示,未经优化的 RAG 工作流程如下:

图 1:未经优化的 RAG 经典工作流程。Image by author。

如图 1 所示,RAG 的经典工作流程主要包括以下三个步骤:

  1. 编制索引(Indexing) :索引的编制过程是该流程中最先执行的、较为关键的步骤,这个步骤是在离线状态下执行的。首先,对原始数据进行清理和提取,将 PDF、HTML 和 Word 等各种文件格式转换为标准化的纯文本。为了适应语言模型的上下文限制,这些文本被分成更小、更易于管理的块,这一过程被称为分块(chunking)。随后,使用嵌入模型(embedding models)将这些块转换为向量表征(vector representations)。最后,创建一个索引,以键值对的形式存储这些文本块(text chunks)及其向量嵌入(vector embeddings),从而实现高效且可扩展的搜索能力。
  2. 检索(Retrieval) :user query(译者注:指用户输入到 RAG 系统的问题)被用于从外部知识源(external knowledge sources)中检索相关的上下文。为了实现这一点,user query 需要经过编码模型(encoding model)处理,生成语义相关的嵌入。然后,在向量数据库**上进行相似度搜索(similarity search),以检索出前 k 个最接近的数据对象(data objects)。
  3. 内容生成(Generation) :user query 和检索到的附加上下文填入一个 prompt 模板中。最后,将来自检索步骤的增强 prompt (译者注:包含用户请求内容和检索上下文的prompt)输入到 LLM 中。

02 使用 Naive RAG 存在的问题

图 2:Naive RAG 存在的问题(用红色虚线框标出)。Image by author。

如图 2 所示,Naive RAG 在上述三个步骤中都存在一些问题(用红色虚线框标出),有很大的优化空间。

2.1 编制索引(Indexing)

  • 信息提取过程不完整,因为它不能有效处理 PDF 等非结构化文件中的图像和表格中的有用信息。
  • 分块过程(chunking process)采取的是 “一刀切” 策略,而非根据不同文件类型的特点选择最佳策略。这导致每个文本片段都包含不完整的语义信息。此外,它也没有考虑到文本中已存在的重要细节,如文本中已有的标题。
  • 索引结构未经充分优化,导致检索功能低效。
  • 嵌入模型的语义表示能力较弱。

2.2 检索(Retrieval)

  • 从外部知识源检索到的信息与 user query 的相关性不高,并且所检索到的信息的准确率也较低。
  • 由于召回率(recall rate)低,无法检索到所有相关段落,从而影响了 LLMs 生成全面答案的能力。
  • 用户向系统提出的请求可能不准确,或者嵌入模型的语义表示能力可能较弱,导致无法检索到有价值的信息。
  • 检索算法是受限制的,因为它没有结合不同类型的检索方法或算法,如关键词、语义和向量检索(keyword, semantic, and vector retrieval)的组合。
  • 当检索到的多个上下文包含相似信息时,会出现信息冗余,导致生成的答案中出现重复内容。

2.3 内容生成(Generation)

  • 可能无法将检索到的上下文与当前的生成任务有效整合,从而导致输出结果不一致。
  • 在生成过程中过度依赖 enhanced information(译者注:指的是从外部知识源检索到的、与当前生成任务相关联的额外信息)的风险很高。可能导致生成的内容只是重复输出检索到的内容,而没有提供有价值的信息。
  • LLM 可能会生成不正确的、不相关的、不当的或有偏见的回复。

需要注意的是,导致这些问题出现的原因可能是多方面的。例如,如果给用户的最终回复包含不相关的内容,这可能不完全是 LLM 的问题。其根本原因可能是从 PDF 中不能精确地提取文档内容,或者嵌入模型无法准确捕捉语义,等等。

03 Conclusion

本文主要介绍 Naive RAG 中存在的问题。

后续文章将提供缓解这些问题的措施和解决方案,帮助改善 RAG 的性能,使其在实际应用中更加有效地帮助大家解决问题。

如果本文有任何错误或遗漏,敬请指出。

Thanks for reading!

——

Florian June

An artificial intelligence researcher, mainly write articles about Large Language Models, data structures and algorithms, and NLP.

END

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://ai.plainenglish.io/advanced-rag-part-01-problems-of-naive-rag-7e5f8ebb68d5

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

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

相关文章

【无标题】【Android】Android中Intent的用法总结

2.显示地图: Java代码 Uri uri Uri.parse(“geo:38.899533,-77.036476”); Intent it new Intent(Intent.Action_VIEW,uri); startActivity(it); 3.从google搜索内容 Java代码 Intent intent new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.pu…

SAP操作教程第16期:SAP B1关于审批模块的设置

工作效率是企业的生存之本,也是员工能够在企业中发展之本。自动化和规范化的审批流程可以减少手动操作以及沟通环节、节约时间和资源从而提高工作效率。 所以,今天我们就一起来了解一下SAP B1中关于审批模块的设置。 01关于审批模块的设置 第一步&#x…

数据结构基础:双链表结构、实现

继续和颦颦学C语言呀.......> 双链表的结构 这里的head 为头节点,是‘哨兵位’,实际不存储任何有效的数据 它的存在是为了遍历环链表避免死循环 双链表的实现 typedef int LTDataType; typedef struct ListNode { struct ListNode* next; //指针保存…

为什么使用MQ????

1、异步处理 场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式。 串行方式: 将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是…

2024/4/1—力扣—二叉树的最近公共祖先

代码实现: 思路: 递归判断左子树和右子树,查找p或者q是否在当前节点的子树上 1,在同一子树上,同一左子树,返回第一个找到的相同值,同一右子树上,返回第一个找到的相同值 2&#xff0…

【每日刷题】Day4

【每日刷题】Day4 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 目录 1. 83. 删除排序链表中的重复元素 - 力扣(LeetCode) 2. 88. 合并两个有序数组 - 力扣(LeetCode&…

Windows SDK(六)组合框与列表框控件

组合框和列表框同样也是控件,所以我们在应用组合框和列表框时同样也需要父窗口,现在我们以 创建项目时程序自行创建的窗口作为父窗口展开如下的控件创建与应用 在进行组合框与列表框的讲解前,我们首先在程序中定义几个宏作为我们在编写程序…

C语言:顺序表专题

目录 一、数据结构之顺序表/链表1.数据结构相关概念1.1什么是数据结构1.2为什么需要数据结构 二、顺序表1.顺序表的概念及结构2.顺序表分类3.动态顺序表的实现 一、数据结构之顺序表/链表 1.数据结构相关概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来…

【优选算法专栏】专题十六:BFS解决最短路问题(一)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

云his系统源码 java源码saas模式 二甲医院his系统全套源码 数据库MySQL + MyCat

基层医院云HIS系统源码 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,还能与公卫、PACS等各类外部系统融合&…

0基础学习python

0基础如何进入IT行业? 建议先掌握以下: 编程环境的安装和使用输出输入语句、变量、表达式的理解和使用选择结构、循环结构的理解和使用列表的使用文件的操作函数的调用库的安装和使用 编程,其实就是利用特定的语言控制计算机、或者就是与计算…

如何把音乐播放速度慢下来?享受慢音乐的两个方法

一,前言 在现代社会,我们生活在一个快节奏的环境中,时间仿佛被压缩成了碎片,每个人都在匆匆忙忙地追求着速度和效率。然而,有时放慢脚步,让心灵回归宁静,成为了一种难得的奢侈。 音乐&#xf…

民航电子数据库:在有分组统计的语句中,输出表达式含有非分组统计项

目录 一、场景二、报错信息三、排查四、原因五、解决 一、场景 1、对接民航电子数据库 2、执行SQL语句报错 二、报错信息 三、排查 查看数据库def_group_by_mode配置 show def_group_by_mode四、原因 def_group_by_mode设置为0导致,相当于mysql的sql_modeonly_…

NatCross实现NASCAB云可云内网穿透指南

一、简介 1、NAS_CAB介绍 跨平台NAS软件,远程管理照片,影音和文件,无需专用设备,个人版永久免费。官网地址:https://www.nascab.cn/。 2、NatCross介绍 NatCross是内网穿透工具,也是免费的端口映射和DDNS动态域名解析软件。软件从2021年上线以来&…

51单片机实验03-定时器T0来实现流水灯从左到右再从右到左

目录 一、实验目的 二、实验说明 1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。 2、模式寄存器TMOD 1) M1M0工作模式控制位; 2) C/T定时器或计数器选择位: 3)GATE定时器/计数器运行…

淘宝扭蛋机小程序源码搭建:打造专属电商娱乐新平台

在数字化浪潮的推动下,电商平台不断创新,以满足消费者日益多样化的需求。淘宝扭蛋机小程序作为一种创新的电商娱乐形式,受到了广大用户的热烈追捧。为了满足市场需求,许多企业和开发者开始关注淘宝扭蛋机小程序的源码搭建&#xf…

Centos7使用docker安装Jenkins(含pipeline脚本语句)

一、下载Jenkins docker pull jenkins/jenkins:lts 二、启动Jenkins docker run \-u root \--rm \-d \-p 8081:8080 \-p 50000:50000 \-v /root/docker/jenkins/var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr…

渲染一帧特效需要多少钱?云渲染特效每帧成本

特效渲染的成本受到诸多因素的影响,每帧的渲染费用是评估整个项目预算的重要依据。随着云渲染技术的发展,其高效率和可伸缩性赢得了业界的广泛关注。对于影视制作公司和独立创作者而言,掌握云渲染特效的单帧成本是管理和优化预算分配的关键。…

Datacom HCIP笔记-路由策略与路由控制 之二

路由策略和策略的区别? 路由策略: 操作的对象是路由表条目, 实现路由过滤,从而实现访问控制,引入时过滤,发送和接收路由时过滤。 通过配置cost,来实现路径的控制。 策略路由: 对…

Redis数据库③主从复制+哨兵模式+集群模式

一.Redis主从复制 1.概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台…