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

ServiceNow 研究:通过RAG减少结构化输出中的幻觉

论文地址:https://arxiv.org/pdf/2404.08189

原文地址:rag-hallucination-structure-research-by-servicenow

灾难性遗忘和模型漂移中,幻觉仍然是一个挑战。

2024 年 4 月 18 日

灾难性遗忘: 这是在序列学习或连续学习环境中出现的问题,其中一个模型被训练来执行多个任务,但是学习新任务时会导致模型在先前学习的任务上的性能显著下降。这种情况通常发生在神经网络等参数化模型中,因为模型在训练新任务时调整了其参数,从而破坏了之前学习的知识。灾难性遗忘是终身学习和持续学习的一个重要挑战。

模型漂移: 这是指模型在部署后,由于输入数据的分布发生变化,模型的性能随时间下降的现象。这种分布变化可能是由于真实世界的变化(例如,季节性变化、经济波动、社会行为变化等)或数据收集过程的变化(例如,传感器校准问题、数据来源变化等)。模型漂移要求模型能够适应新的数据分布,否则模型的预测可能变得不准确或不相关。

介绍

这项研究之所以如此有趣,是因为 ServiceNow 有一个他们想要解决的实际问题,他们通过这篇论文分享了他们的发现。

其次,本文考虑了LLMs创建结构化输出的挑战,这些输出实际上是为了创建非结构化会话输出。

在某种程度上,这种方法强烈地让人想起OpenAI的JSON模式输出,或者OpenAI的函数调用。

ServiceNow 希望部署企业应用程序,将自然语言的用户需求转换为工作流程。他们制定了一项计划,通过利用 RAG 来提高生成的结构化流程的质量。

这种方法减少了幻觉并允许out-of-domain设置。

ServiceNow 希望根据自然语言输入创建准确的工作流程,以尝试简化用于创建工作流程并为新手提供支持的用户界面。

虽然可以为每个企业微调大型语言模型(LLM),但由于微调大型语言模型所需的基础设施成本高昂,这可能是过于昂贵的。在部署大型语言模型时,还需要考虑它们的占用空间,使得部署能够完成任务的最小型大型语言模型更为可取。

《剑桥词典》选择“hallucinate”作为 2023 年年度词汇。

如下图所示,输出工作流表示为 JSON 文档,其中每个步骤都是一个 JSON 对象。

该研究展示了 RAG 如何允许在使用非常小的检索器模型的同时部署较小的LLM,而不会损失性能。

RAG 用于结构

这项研究的不同之处在于,利用 RAG 以 JSON 的形式创建结构化输出。在某种程度上,这种方法强烈地让人想起OpenAI的JSON模式输出,或者OpenAI的函数调用。

然而,这种实现的挑战在于,即使输入是开放的,并且通过图形用户界面提示进行了高度指定,输出也只能形成有限的、有限的步骤池的一部分。

  1. 在创建此工作流程时,ServiceNow 首先必须训练检索器编码器以使自然语言与 JSON 对象保持一致。
  2. 其次,他们通过将检索器的输出包含在其提示中,以 RAG 方式训练LLMs

因此,需要检索器将自然语言映射到现有步骤和数据库表名称。

该研究的重点是微调检索器模型,原因有两个:改进文本和 JSON 对象之间的映射,以及创建应用程序域的更好表示。

方法论

  1. 检索器训练:训练一个检索器模型,使其能够将自然语言查询映射到现有的工作流步骤和数据库表名。使用对比损失和不同的负采样策略来优化检索器的性能。
  2. LLM训练:独立训练LLM,将检索器的输出作为LLM的输入提示的一部分,以便LLM在生成过程中可以复制相关的JSON对象。
  3. 系统架构:描述了RAG系统的高层架构,包括初始化步骤和用户请求的处理流程。
  4. 评估指标:触发器精确匹配(EM)、步骤袋(BofS)和幻觉步骤/表格(HS/HT)。

注意事项

为未来的工作提出了一些考虑因素:

  1. 将结构化输出格式从 JSON 更改为 YAML 以减少令牌数量。
  2. 利用推测解码
  3. 逐步向用户回传流,而不是整个生成的工作流程。这与 LlamaIndex 最近的代理发展是一致的,其中对代理采取了逐步的方法。采用“human-in-the-loop”方法有很多优点,在代理上下文中的 HITL 部分中,人可以与其他工具一起被视为代理工具。

最后

该研究提出了一种使用检索增强语言模型(RAG)来解决人工智能中的两个关键挑战的策略:

  1. 减少幻觉(产生不正确或不相关的信息
  2. 在结构化输出任务中实现泛化(将知识应用到新情况的能力)。

该研究强调了减少现实世界人工智能系统的幻觉以获得用户接受的重要性。

他们强调,RAG 方法允许在资源受限的环境中部署人工智能系统,因为即使是小型检索器和紧凑的语言模型,它也可以有效地工作。

这意味着系统的硬件和计算要求可以最小化,这对于资源有限的环境中的实际应用至关重要。

此外,该研究还指出了未来研究的领域,表明可以通过加强检索器语言模型之间的协作来进一步改进。

这可以通过联合训练方法来实现,即两个组件一起训练以改善它们的交互,或者通过设计一个模型架构来促进两个组件之间更好的集成和合作。

相关文章:

ServiceNow 研究:通过RAG减少结构化输出中的幻觉

论文地址:https://arxiv.org/pdf/2404.08189 原文地址:rag-hallucination-structure-research-by-servicenow 在灾难性遗忘和模型漂移中,幻觉仍然是一个挑战。 2024 年 4 月 18 日 灾难性遗忘: 这是在序列学习或连续学习环境中出现…...

ADS基础教程10-多态性(动态模型选择)

目录 一、多态性定义二、操作步骤1.模型建立2.模型选择3.执行仿真 一、多态性定义 ADS中支持一个Symbol中,可以同时存在多个子图。在仿真时可以动态选择不同的子图继续宁仿真。 二、操作步骤 1.模型建立 在上一章A…...

代码随想录第四十六天|单词拆分

题目链接:. - 力扣(LeetCode)...

RabbitMQ的介绍和使用

1.同步通讯和异步通讯 举个例子,同步通讯就像是在打电话,因此它时效性较强,可以立即得到结果,但如果你正在和一个MM打电话,其他MM找你的话,你们之间是不能进行消息的传递和响应的 异步通讯就像是微信&#…...

前端get请求日期类型参数向后端传参失败

1、背景 get请求,通过url上传参,因此日期类型是string类型数据 2、异常信息 nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDate] for…...

【docker 】 push 镜像提示:denied: requested access to the resource is denied

往 Docker Registry &#xff08;私服&#xff09;push 镜像提示&#xff1a;denied: requested access to the resource is denied 镜像push 语法&#xff1a;docker push <registry-host>:<registry-port>/<repository>:<tag> docker push 192.16…...

浏览器各类好用插件使用及常见问题(技巧)总结

目录 Vimium C快捷键问题为什么Vimium C - 全键盘操作浏览器插件在百度页面中, x ,o,f等快捷键不起作用如何使用viminum c插件进行自定义快捷键?vimucm 为什么在浏览器首页时快捷键不起作用? 网页截图问题firefox 网页截图使用 idm问题浏览器点击idm 不下载? 待续、更新中 V…...

Python批量计算多张遥感影像的NDVI

本文介绍基于Python中的gdal模块&#xff0c;批量基于大量多波段遥感影像文件&#xff0c;计算其每1景图像各自的NDVI数值&#xff0c;并将多景结果依次保存为栅格文件的方法。 如下图所示&#xff0c;现在有大量.tif格式的遥感影像文件&#xff0c;其中均含有红光波段与近红外…...

6.k8s中的secrets资源

一、Secret secrets资源&#xff0c;类似于configmap资源&#xff0c;只是secrets资源是用来传递重要的信息的&#xff1b; secret资源就是将value的值使用base64编译后传输&#xff0c;当pod引用secret后&#xff0c;k8s会自动将其base64的编码&#xff0c;反编译回正常的字符…...

git 更换远程仓库地址三种方法总结

git 更换远程仓库地址三种方法总结 一、前言 由于私服的 gitlab 的地址变更&#xff0c;导致部分项目代码提交不上去&#xff0c;需要修改远端仓地址。 其它需要修改远程仓地址的情况如&#xff1a;切换git clone 协议由ssh变为https。 二、环境 windows 10git version 2.3…...

快速找出存(不存在)在某个(或多个)文件的文件夹

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 想要找出有下面这个文件存在的文件夹 切换到批量文件复制版块&#xff0c;快捷键Ctrl5 右侧&#xff0c;搜索添加 选定范围&#xff0c;勾选搜索文件夹、包…...

Linux USB转串口设备路径的查找方法

1、USB转串口设备 USB转串口设备是在嵌入式软件开发过程中经常要使用的&#xff0c;常常用于对接各种各样的串口设备。如果一台linux主机上使用多个usb转串口设备时&#xff0c;应用程序中就需要知道自己操作的是哪个串口设备。串口设备在系统上电时&#xff0c;由于驱动加载的…...

【初阶数据结构】单链表之环形链表

目录标题 前言环形链表的约瑟夫问题环形链表环形链表|| 前言 前面我们已经学习了关于单链表的一些基本东西&#xff0c;今天我们来学习单链表的一个拓展——环形链表&#xff0c;我们将用力扣和牛客网上的三道题目来分析讲解环形链表问题。 环形链表的约瑟夫问题 我们首先来看…...

【积分,微分,导数,偏导数公式推导】

1. 积分 积分是微积分的一个分支&#xff0c;用于计算曲边梯形的面积或者变速直线运动的总距离等。积分分为不定积分和定积分。 不定积分&#xff1a;给出一个函数&#xff0c;求出其所有可能的原函数。定积分&#xff1a;计算一个函数在特定区间上的积分。 2. 微分 微分是…...

java:递归实现的案例

//求第20个月兔子的对数 //每个月兔子对数&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8 public class Test {//求第20个月兔子的对数//每个月兔子对数&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8pu…...

Arxml文件解析03- 自动驾驶Radar服务radar_svc.arxml

<AR-PACKAGES><AR-PACKAGE><SHORT-NAME>bosch</SHORT-NAME><AR-PACKAGES>...</AR-PACKAGES>...

Elasticsearch安装步骤

引言 Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它设计用于云计算中&#xff0c;能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论…...

Windows系统和unbtun系统连接usb 3.0海康可见MVS和红外艾睿相机

一.海康可见USB3.0工业面阵相机 海康usb相机需要去海康官网上下载对应系统的MVS客户端及SDK开发包 海康机器人-机器视觉-下载中心 选择Windows系统和unbtun&#xff08;我是linux aarch64,所以选择了对应压缩包解压&#xff09; Windows系统 1.双击安装包进入安装界面&…...

深入Django:用户认证与权限控制实战指南

title: 深入Django&#xff1a;用户认证与权限控制实战指南 date: 2024/5/7 18:50:33 updated: 2024/5/7 18:50:33 categories: 后端开发 tags: AuthDecoratorsPermissionsGuardianRESTAuthSessionMgmtMFA 第1章&#xff1a;入门Django与设置 1.1 Django安装与环境配置 在…...

Kubernetes - Dashboard 配置用户名密码方式登录

Kubernetes - Dashboard 配置用户名密码方式登录 前言&#xff1a; 为了 K8s 集群安全&#xff0c;默认情况下 Dashboard 以 Token的形式登录的&#xff0c;那如果我们想以用户名/密码的方式登录该怎么操作呢&#xff1f;其实只需要我们创建用户并进行 ClusterRoleBinding绑定即…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...