RAG常见七大坑

news2024/11/16 17:27:10

论文题目:《Seven Failure Points When Engineering a Retrieval Augmented Generation System》
论文地址:https://arxiv.org/pdf/2401.05856.pdf

这篇论文主要探讨了构建检索增强生成系统(Retrieval Augmented Generation, RAG)时可能遇到的七个失败点。论文通过三个案例研究来展示这些失败点,并分享了作者团队的经验和教训。

RAG 简介

Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起。RAG 可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。 RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。

RAG 系统的主要目的是:

  • a) 减少LLM的幻觉回答问题
  • b) 将来源/参考关联到大模型生成的回答
  • c) 消除使用元数据注释文档的需要。

RAG坑点

然而,RAG 系统受到信息检索系统固有的限制以及对LLM能力的依赖,RAG 系统中存在一些可能的“坑点”。

  • 内容缺失——这是生产案例中最大的问题之一。 用户假设特定问题的答案存在于知识库中。 事实并非如此,系统也没有回应“我不知道”。 相反,它提供了一个看似合理的错误答案,但实际是“毫无意义”。

  • 漏掉排名靠前的文档 - 检索器是小型搜索系统,要获得正确的结果并不简单。 简单的嵌入查找很少能达到目的。 有时,检索器返回的前 K 个文档中不存在正确答案,从而导致失败。

  • 不符合上下文 - 有时,RAG系统可能会检索到太多文档,并且还是强制根据上下文分割并输入文档。 这意味着对问题的回答不在上下文中。 有时,这会导致模型产生幻觉,除非系统提示明确指示模型不要返回不在上下文中的结果。

  • 未提取到有用信息 - 当LLM无法从上下文中提取答案时。 当你塞满上下文并且LLM会感到困惑时,这往往会成为一个问题。 不同大模型对背景信息的理解能力层次不齐。

  • 格式错误——虽然论文将这视为一种失败模式,但这种类型的功能并不是大型语言模型(LLM)的开箱即用功能。这种需要特定格式的输出,需要进行大量的系统提示和指令微调,以生成特定格式的信息。例如,使用Abacus AI,可以创建一个代理程序来以特定格式输出代码,并生成带有表格、段落、粗体文本等的Word文档。这种一般可以通过MarkDown输出来渲染!

  • 不合适的回答 -响应中返回答案,但不够具体或过于具体,无法满足用户的需求。 当 RAG 系统设计者对给定问题(例如教师对学生)有期望的结果时,就会发生这种情况。 在这种情况下,应该提供具体的教育内容和答案,而不仅仅是答案。 当用户不确定如何提出问题并且过于笼统时,也会出现不正确的特异性。

总的来说,这意味着 RAG 系统在投入生产之前必须经过彻底的稳健性测试,并且很容易因为发布未经测试的代理或聊天机器人而搬起石头砸自己的脚。

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

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

相关文章

Javaweb之SpringBootWeb案例员工管理分页查询的详细解析

3. 员工管理 完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。 基于以上原型,我们可以把员工管理功能分为: 分页查询(今天完成) 带条件的分页查询(今天完成) 删除员工&…

【Leetcode 2707】字符串中的额外字符 —— 动态规划

2707. 字符串中的额外字符 给你一个下标从0开始的字符串s和一个单词字典dictionary。你需要将s分割成若干个互不重叠的子字符串,每个子字符串都在dictionary中出现过。s中可能会有一些额外的字符不在任何子字符串中。 请你采取最优策略分割s,使剩下的字…

HiDataPlus 3.3.2-005 搭建(个人的一点心得体会 x86 平台)

HDP 集群搭建 前置安装 yum -y install createrepo yum install -y lrzsz yum install -y wget yum install -y vim修改当前集群机器的主机名 hostnamectl set-hostname XXX​ 这里的 XXX 就是要设置的当前机器的主机名称。主机名称是集群唯一的,一定不要重复&am…

【栈】Leetcode 496 下一个更大元素I

【栈】Leetcode 496 下一个更大元素I 解法1 两个单调栈解法2 ---------------🎈🎈题目链接🎈🎈------------------- 解法1 两个单调栈 两个栈进行操作,一个栈用来遍历寻找,一个栈用来保留 将nums2中的元素…

c语言-数据类型(上)

目录 一、数据类型 二、常量与变量 常量: 变量: 三、进制(八,十,十六) 十进制: 八进制: 十六进制: 四、基本类型 1.整型常量: 2.整型变量&#xff…

Unet系列网络解析

Unet UNet最早发表在2015的MICCAI上,到2020年中旬的引用量已经超过了9700多次,估计现在都过万了,从这方面看足以见得其影响力。当然,UNet这个基本的网络结构有太多的改进型,应用范围已经远远超出了医学图像的范畴。我…

vector容器解决杨辉三角

一、题目描述 118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRo…

Arduino开发实例-手指心率传感器模块

手指心率传感器模块 文章目录 手指心率传感器模块1、手指心率传感器介绍2、硬件准备及接线3、代码实现1、手指心率传感器介绍 本次使用的心率传感器模块是为教育和娱乐目的而设计的,通过手指检测心血管脉搏波。 它使用 PPG (HRM-2511E) 探头进行数据传输。 该传感器使用红外线…

深度学习代码学习(一文真正看懂卷积层的代码定义)

一维卷积: 将n行3列升维到n行6列。(原因:卷积核为6个) *表示点乘 Linear线性层: (通过矩阵计算改变输入输出特征向量的维度) Pytorch nn.Linear的基本用法与原理详解-CSDN博客 pytorch初学笔记&#…

玩转硬件之Micro:bit的玩法(六)——扫地机器人

众所周知,扫地机器人,又称自动打扫机、智能吸尘、机器人吸尘器等,是智能家电的一种,能凭借人工智能,自动在房间内完成地板清理工作。一般采用刷扫和真空方式,将地面杂物先吸纳进入自身的垃圾收纳盒&#xf…

【DDR】基于Verilog的DDR控制器的简单实现(三)——读操作

上一节 【DDR】基于Verilog的DDR控制器的简单实现(二)——写操作 本文继续以美光(Micron)公司生产的DDR3芯片MT41J512M8RH-093(芯片手册)为例,说明DDR芯片的读操作过程。下图为读操作指令格式(…

Linux驱动(五)设备树

1、前言 设备树是一种描述硬件平台和设备的数据结构,它以一种结构化的方式描述了系统中的各种设备和资源,包括处理器、内存、外设和总线等。设备树通常用于嵌入式系统和嵌入式 Linux 系统中,它可以帮助操作系统内核在启动时自动识别硬件&…

记录一次git merge后发现有些文件不对的问题,排查过程

分支进行merge(A merge到B)之后,发现string.xml中有些字段的值没有merge过来,一开始还以为自己是自己merge错误,检查了一遍自己的merge操作没有问题。 那为啥没有merge过来呢?有一种可能是,merg…

软件测试|Python数据可视化神器——pyecharts教程(十三)

使用pyecharts绘制水球图 水球图是一种有趣而视觉吸引力的数据可视化方式,它可以用来展示进度或百分比等信息。这方面水球图和仪表图是类似的,但是水球图比仪表图更为炫酷一些。像一些资源占用率等指标都是使用水球图来展示的,作为绘图神器&…

LaTeX 章节的使用

目录 1、介绍 2、章节的等级 3、取消编号章节 4、章节引用 1、介绍 命令\section{}标志着一个新章的开始,大括号内的文字为章的标题。章的编号是自动生成的,你也可以使用没有编号的章。 \documentclass[]{article}\begin{document}\section{Introd…

在服务器上使用Docker运行SRS Stack,推拉直播流、多平台转播、本地录制、虚拟直播、直播转码、AI字幕、其他

SRS Stack | SRS (ossrs.net) Docker​ 推荐使用Docker运行SRS Stack: docker run --restart always -d -it --name srs-stack -v $HOME/data:/data \-p 2022:2022 -p 2443:2443 -p 1935:1935 -p 8000:8000/udp -p 10080:10080/udp \registry.cn-hangzhou.aliyun…

设备之AP555【之一】

1、Audio Precision官网 Audio Precision 是声学及音频测试中公认的标准。AP提供了高性能声学和音频分析仪,配件和应用程序,帮助全球工程师设计,验证和制造消费电子、专业和工业的声学和音频产品。 APX555B 是具有三十年经验的测试设备&…

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式:使用内核线程实现(1: 1 实现),使用用户线程实现(1&#xff…

内网穿透[让你在家里也能榨干学校的服务器]Yep!

内网穿透 问题:什么是内网穿透,内网穿透的作用是什么? 前提!!!!你得拥有超级管理员的权限,比如root,不然后面的一切免提! 应用场景如下:比如你…

MOS管驱动电流计算以及分立器件驱动电路

自记: 1.先根据mos数据手册查找参数,计算电流; 2.分立器件驱动电路图; 3.分立器件选择 仔细学,能看懂! 1.计算电流: 2.分立器件驱动电流:两种,第一种反向&#xff0c…