FIT-RAG:RAG架构是否正在趋向于标准化方法?

原文地址:fit-rag-are-rag-architectures-settling-on-a-standardised-approach

2024 年 4 月 2 日

随着RAG的使用,漏洞开始显现,这些问题的解决方案也开始变得越来越相似。

介绍

随着技术的不断发展,我们注意到一个有趣的现象:人们普遍倾向于采用那些被认为是优秀设计的方案。

以提示工程为例,我们可以看到提示的发展历程:从最初的简单提示,演变成了包含占位符的模板,以便于插入各种变量。

这个过程进一步发展,催生了提示链的概念,并最终进化出了能够运用多种工具的自主代理。

RAG 也正沿着类似的路径发展。起初,RAG的设计似乎已经足够完善。但现在,我们正在RAG的架构中增加更多的智能元素,同时还整合了许多其他组成部分,以丰富RAG的整体结构。

四个初步考虑因素

首先,您将会注意到,在RAG架构中,提示结构的角色日益凸显,诸如Chain-of-Thought这类先进的提示技术正逐渐被采用。单纯的将提示与上下文参考数据结合已不再满足需求,我们正在通过精细调整提示用语来提升性能表现。

其次,RAG架构的静态特性也日益受到关注。一方面,RAG在处理对话时可能不会充分考虑到整个对话的上下文,特别是那些跨越多个回合的上下文。另一方面,检索决策往往基于固定的规则,缺乏必要的灵活性。

第三,我们开始关注到不必要的开销问题。不必要的检索和未优化的额外文本增加了我们不愿见到的成本和推理延迟。

最后,为了决定最佳响应,我们正在采用多步骤方法和分类器。这些方法可能涉及使用多个数据存储,或者仅对用户请求进行分类。这些分类器通常需要依赖标注数据进行训练,以便能够有效地完成特定的任务。

来源

CRAG,是一个轻量级的检索评估器,它评估检索到的文档的整体质量,提供触发不同知识检索操作的置信度。

如我先前所述,RAG正逐步演变为LlamaIndex所描述的“Agentic RAG”。在这种模式中,基于RAG的智能代理负责控制数据检索过程,同时整合多个子代理或工具以提升效率。

FIT-RAG

FIT-RAG研究针对大型语言模型(LLMs)和事实数据方面发现了两个主要问题。

缺乏事实数据:LLMs所检索到的文档可能缺少回答特定查询所需的事实信息,这可能会导致检索过程偏离正确轨道,从而削弱黑盒RAG的有效性。

令牌过载:将所有检索到的文档不加区分地合并在一起,会导致LLMs使用的令牌数量过多,进而降低黑盒RAG的效率。

为了解决这些问题,FIT-RAG设计了一个双标签文档评分器,它将事实信息和LLM的偏好作为不同的标签进行整合。

此外,FIT-RAG还实施了一系列令牌缩减策略,包括自我知识识别器和子文档级别的令牌减少器。这些创新措施旨在最小化不必要的增强,并显著减少增强令牌,从而提高FIT-RAG的效率。

过时的长尾知识导致LLMs陷入幻觉和事实错误,尤其是在知识密集型任务中。

~来源

FIT-RAG 的组件

如下图所示,FIT-RAG由五个关键部分组成:

  1. 基于相似性的检索器
  2. 双重标签文档评分系统,
  3. 双重功能的自我知识识别工具,
  4. 子文档级别的令牌精简机制
  5. 提示构建模块。

特别值得一提的是,双重标签文档评分系统的设计巧妙地同时考虑了LLM的偏好和事实信息的一致性,有效降低了忽视事实信息的风险。

同时,双重功能的自我知识识别工具和子文档级别的令牌精简机制在减少输入令牌数量方面起到了至关重要的作用,避免了不必要令牌的浪费。

双标签文档评分器通过双标签学习的方式进行训练,涉及以下两个标签:

  1. 事实信息(Has_Answer):表示文档是否包含问题的答案。
  2. LLM 偏好(LLM_Prefer):表示文档是否有助于 LLM 生成正确答案。

这两个标签之间存在明显的数据不平衡,这可能影响到双标签学习的表现。为了克服这一挑战,本研究提出了一种针对数据不平衡问题的双标签学习方法。

该方法通过超梯度下降算法自动学习为数据分配不同的权重,有效地解决了数据不平衡问题,使得双标签文档评分器能够对检索到的文档进行更全面的评估。

双面自我知识识别器通过两个维度来判断 LLM 是否需要外部知识:一是问题是否涉及长尾或过时信息,二是问题的最近相似实例是否具备自我知识。

此外,子文档级令牌缩减器通过从检索到的文档中较少的子文档中选择组合来剔除冗余子文档,同时在确保 LLM 能够提供准确答案的前提下减少令牌数量

FIT-RAG 提示

下图展示了提示措辞是如何优化的。

综上所述

将代理功能融入RAG(检索-阅读-生成)管道中,可以显著提升处理复杂查询和推理任务的能力。通过为管道增添代理功能,它能够应对更多种类的复杂问题和场景。

但是,代理在决策过程中缺乏引导性和透明度是一个重大挑战。面对用户查询时,代理可能需要采用思维链或计划方法,并多次与大型语言模型(LLMs)互动,以便有效地探索问题空间。

这种对LLMs的反复互动不仅增加了计算负担,还使得代理难以对其决策提供清晰的解释。

因此,开发能够提升代理系统引导性和透明度的机制变得迫在眉睫,这样用户就能更好地理解并影响代理的行为。

解决这些关键问题不仅能提升代理系统的效率和成效,还能在处理复杂任务和解决问题时,增强人类与AI代理之间的信任和合作。

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

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

相关文章

rasa trian 报错解决---Project validation completed with errors.

rasa train 过程中:出现一下问题; Project validation completed with errors. 解决措施:python 3.10版本,rasa 3.6.19, 降低版本 pip3 install rasa3.5.17 -i https://pypi.tuna.tsinghua.edu.cn/simple成功解决

CS架构---Socket基础

目录 一、Socket简介1.1 通信模型1.2 类型1.3 创建和使用:1.4 地址族 二、客户/服务器模式2.1 服务器端(Server Side)2.2 客户端(Client Side)2.3 通信方式2.4 角色分工2.5 优点 三、Socket实战四、常见应用场景 一、S…

7个影响AEC的AI工具

人工智能(AI)工具在各个行业中越来越受欢迎,ChatGDP的推出无疑让人们看到了人工智能所能提供的可能性。 然而,人工智能不仅仅是生成文本或图形——它可以用于各种设置。 建筑行业也不例外,我们才刚刚开始发现人工智能…

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1)内容分发网络CDN 2)专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化(五大负载) 1、cpu 使用率…

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍: 使用JavaScript组件进行MD5加密得到Http header,调用API接口增量获取接口数据,使用json input组件解析数据入库 案例适用范围: MD5加密可参考、增量过程可参考、调用API接口获取…

五、postman基础使用案例

postman基础使用 相关案例【传递查询参数】【提交表单数据】【提交JSON数据】 注:postman⼀款⽀持调试和测试的⼯具,开发、测试⼯程师都可以使⽤。方法一般统一为:方法→请求头→请求体→断言 相关案例 【传递查询参数】 访问TPshop搜索商品的…

【项目实战经验】DataKit迁移MySQL到openGauss(上)

前言 本文将分享DataKit迁移MySQL到openGauss的项目实战,供广大openGauss爱好者参考。 1. 下载操作系统 https://www.openeuler.org/zh/download https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956 https://support.huawei.com/enterprise…

力扣热门算法题 174. 地下城游戏,189. 轮转数组,198. 打家劫舍

174. 地下城游戏,189. 轮转数组,198. 打家劫舍,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.31 可通过leetcode所有测试用例。 目录 174. 地下城游戏 解题思路 完整代码 Python Java 189. 轮转数…

The Sandbox 与 Otherworld 合作推出元宇宙网络漫画中心

​ The Sandbox 将与韩国初创公司 Otherworld 合作,建立一个元宇宙网络动漫中心,为用户提供基于 KakaoPage 热门 IP 的各种体验。 Solo Leveling 是此次合作的第一个 IP。这部网络动画将深入主人公Sung Jinwoo的生活,并与 NFT 进行整合。随后…

JavaScript(五)---【DOM】

零.前言 JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客 JavaScript(二)---【js数组、js对象、this指针】-CSDN博客 JavaScript(三)---【this指针,函数定义、Call、Apply、函数绑定、闭包】-CSDN博客 JavaScript(四)---【执…

[蓝桥杯练习]通电

kruskal做法(加边) #include <bits/stdc.h> using namespace std; int x[10005],y[10005],z[10005];//存储i点的x与y坐标 int bcj[10005];//并查集 struct Edge{//边 int v1,v2; double w; }edge[2000005]; int cmp(Edge a, Edge b){return a.w < b.w;} int find(i…

.pth文件转化为onnx文件,并进行可视化

1、文件转化 import torch.onnx from torchvision import models from onnxsim import simplify import onnx torch_model torch.load("D:\checkpoint-epoch40.pth",map_locationcpu) # pytorch模型加载 model models.resnet50() # model.load_state_dict(torch_…

代码随想录算法训练营第二十八天(回溯4)|93. 复原 IP 地址、78. 子集、90. 子集 II(JAVA)

文章目录 93. 复原 IP 地址解题思路源码 78. 子集解题思路源码 90. 子集 II解题思路源码 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&…

什么是Redis数据一致性?如何解决?

在系统中缓存最常用的策略是&#xff1a;服务端需要同时维护DB和cache&#xff0c;并且是以DB的结果为准–Cache-Aside Pattern&#xff08;缓存分离模式、旁路缓存&#xff09; 读数据 单纯的读数据是不会产生数据不一致&#xff0c;只有并发下读和写才会存在数据不一致。 写…

python2.7+rf框架搭建

一 下载pycharm 可下载最新版&#xff1a;https://www.jetbrains.com/pycharm/download/#sectionwindows 新建项目时需要关联python2.7&#xff0c;这个必须要python2.7安装好之后关联才生效&#xff0c;若也关联了&#xff0c;但创建项目后有弹框显示类似“项目创建失败”的提…

算法练习第四十二天|01背包问题、416. 分割等和子集

一些背包问题 01背包问题 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;它们各自…

nvme协议学习总结

一、nvme命令 1 nvme在pcie基础上的协议&#xff0c;与PCIE配合&#xff0c;实现高效传输。 2 nvme命令主要分IO命令和admin命令。 3 一个NVME CMD执行流程&#xff1a; step1&#xff1a;host把cmd写入SQ queue中&#xff1b; step2&#xff1a;host远端更新Device&#x…

BIT-5-动态内存管理(C语言进阶)

本章重点 为什么存在动态内存分配动态内存函数的介绍 mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题柔性数组 1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟…

华为OD面试手撕算法-字符串压缩

题目描述 本题是leetcode原题&#xff1a;字符串压缩 字符串压缩。利用字符重复出现的次数&#xff0c;编写一种方法&#xff0c;实现基本的字符串压缩功能。比如&#xff0c;字符串"aabcccccaaa"会变为"a2b1c5a3"。若“压缩”后的字符串没有变短&#xf…

瑞吉外卖实战学习--12、分类管理的修改和删除接口实现

分类管理的修改和删除的接口实现 前言获取接口的方法修改接口的连接请求方式和参数删除接口的连接请求方式和参数 实现接口 前言 本篇实现分类的管理的修改和删除接口&#xff0c;在平时项目中最常用的就是增删改查接口&#xff0c;通过页面来的到请求的接口和方法然后通过创建…