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

编者按: 自 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

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

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

相关文章

书生·浦语 demo1

部署 InternLM2-Chat-1.8B 模型进行智能对话 环境配置 进入开发机后,在 terminal 中输入环境配置命令 studio-conda -o internlm-base -t demo上面命令执行完后,conda会多一个虚拟环境 使用conda activate demo切换环境后,继续后面操作 …

SAP FI学习笔记04 - 基础知识 - 新规会计科目,用 应收账款科目 做个例子

上一章讲了 应付账款 的来源及操作。 SAP FI学习笔记03 - 应付账款-CSDN博客 本章先尝试做一个会计科目,然后再用 应收账款 科目做个例子。 应收账款 和 应付账款 一样,也有两个视图。 1,新建几个会计科目 这一章来尝试着创建会计科目。 …

中国智慧城管哪家做的好?

智慧城市管理综合执法系统建立全市统一的法律法规、裁量基准、执法事项、执法文书和基础信息库,实现从获取线索、立案、调查、处理到结案全过程的信息化和文书制作的智能化。全面支持移动执法办案,提高执法效率。 技术架构: 微服务javasprin…

每日一题:用c语言中指针实现除2操作

目录 一、要求 二、实现代码 三、实现结果 四、关于指针的相关知识 一、要求 二、实现代码 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void change(int *i) {*i*i/2; }int main() {int i;printf("请您输入一个整数&#xff1a;");scanf(&quo…

ABAP开发中常用弹窗的应用详解

在ABAP程序设计中为提示和交互的需要会经常用到弹窗&#xff0c; 所谓弹窗就是弹出一个框&#xff0c;告诉用户什么事情、需要确认什么、或者让用户输入什么内容等等&#xff0c;它价值在于通过提示、提醒、警告&#xff0c;帮助用户顺利完成业务流程中的必要操作或给用户提供实…

实时渲染 -- 材质(Materials)

一、自然界中的材质 首先了解下自然界中的材质 如上这幅图&#xff0c;不同的物体、场景、组合&#xff0c;会让我们看到不同的效果。 我们通常认为物体由其表面定义&#xff0c;表面是物体和其他物体或周围介质之间的边界面。但是物体内部的材质也会影响光照效果。我们目前只…

Day30 回溯 LeedCode 332.重新安排行程 51. N皇后 37. 解数独

332. 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK…

腾讯云4核8G服务器多少钱?4C8G可以干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

Day18-【Java SE进阶】多线程

一、线程 1. 什么是线程? 线程(Thread)是一个程序内部的一条执行流程。程序中如果只有一条执行流程&#xff0c;那这个程序就是单线程的程序。 2. 多线程 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行) 3. 如何在程序中创建出多条线程? Ja…

全局统一返数据类型封装记录

全局统一返回值封装 ​ 在Spring Boot中&#xff0c;实现全局统一返回值封装是一种常见的做法&#xff0c;它有助于保持API的一致性&#xff0c;并简化前端对响应数据的处理。创建一个响应体类&#xff0c;包含状态码、消息、数据等字段。这个类可以作为所有控制器返回值的通用…

51入门之数码管

目录 1.数码管硬件简介 1.1数码管位选 1.2数码管数选 2.静态数码管显示 3.动态数码管显示 1.数码管硬件简介 数码管&#xff0c;在我们生活中无处不在&#xff0c;红绿灯的倒计时&#xff0c;电梯的显示屏&#xff0c;还有电子表的时间显示&#xff0c;都使用了数码管的相应原…

大厂面试之【Redis持久化机制】 - RDB和AOF概述及应用配置

文章目录 Redis持久化1. RDB(Redis DataBase)1.1 概述1.2 配置应用 2. AOF(Append Only File)2.1 概述2.2 配置应用 Redis持久化 先上结论&#xff1a;Redis持久化操作分为rdb以及aof&#xff0c;但是前者已经够用 1. RDB(Redis DataBase) 1.1 概述 rdb保存的是dump.rdb文件在指…

31. UE5 RPG使用增强输入激活GameplayAbility(一)

在前面文章中&#xff0c;我们实现了对技能添加并直接激活功能&#xff0c;介绍了GA的相关参数配置。现在&#xff0c;我们还不能通过键位触发技能&#xff0c;正常在游戏时&#xff0c;我们需要通过键位触发技能&#xff0c;实现技能的激活。 在UE5里面添加了增强输入&#xf…

modprobe加载驱动模块时报错:modprobe: module xxx.ko not found in modules.dep

问题 使用modprobe时&#xff0c;报错modprobe: module xxx.ko not found in modules.dep&#xff1a; 原因 加载模块时&#xff0c;依赖没法正确添加 解决 在使用modprobe前&#xff0c;调用一下depmod指令&#xff0c;之后再用modprobe加载驱动模块 depmod modprobe interr…

使用Autodl与Xftp远程训练模型及管理远程文件

1 AutoDL网站登录创建实例 AutoDL网站:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 1&#xff09;进入算力市场&#xff0c;选取可用显卡&#xff08;工作日一般白天抢不到&#xff0c;晚上才能抢到&#xff09; 2&#xff09;选择配置环境 3&#xff09;创建成功实例…

基于ArrayList实现简单洗牌

前言 在之前的那篇文章中&#xff0c;我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此&#xff0c;便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间&#xff0c;并且可以动态扩容&#xff0c;是一个动态类型的顺序表&…

关于hive启动的相关问题记录

问题&#xff1a;初始化hive元数据报错 [atguiguhadoop102 software]$ schematool -initSchema -dbType mysql -verboseError: Table CTLGS already exists (state42S01,code1050) Closing: 0: jdbc:mysql://hadoop102:3306/metastore?useSSLfalse org.apache.hadoop.hive.me…

数据结构和算法:十大排序

排序算法 排序算法用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更高效地查找、分析和处理。 排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求设定&#xff0c;如数字大小、字符 ASCII…

Linux文件管理,压缩/解压缩和vi编辑器

目录 一.linux文件管理 1.cat 2. head和tail 3.WC 4.grep 5.paste&#xff08;合并&#xff09; 二.压缩,解压缩 1.gzip bzip2 2.归档tar 3.zip 和unzip 三.vi编辑器 一.linux文件管理 1.cat 格式 &#xff1a;cat 选项 文件名 &#xff08;文件名可以是单…

哈佛大学商业评论 --- 第三篇:真实世界中的增强现实

AR将全面融入公司发展战略&#xff01; AR将成为人类和机器之间的新接口&#xff01; AR将成为人类的关键技术之一&#xff01; 请将此文转发给您的老板&#xff01; --- 本文作者&#xff1a;Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的&#xff0c;但大…