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 方法允许在资源受限的环境中部署人工智能系统,因为即使是小型检索器和紧凑的语言模型,它也可以有效地工作。

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

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

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

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

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

相关文章

Pycharm远程环境开发(保姆级详细步骤)

使用远程机器的python环境 同步一下linxu和window的文件 可以从远端下载到本地(如下图所示),也可以从本地上传到linux,在左侧的目录里右键选择你所需要的上传文件点击deployment然后upload就行

k8s 资源组版本支持列表

1 kubernetes的资源注册表 kube-apiserver组件启动后的第一件事情是将Kubernetes所支持的资源注册到Scheme资源注册表中,这样后面启动的逻辑才能够从Scheme资源注册表中拿到资源信息并启动和运行API服务。 kube-apiserver资源注册分为两步:第1步,初始化Scheme资源注册表;…

Linux进程——Linux下常见的进程状态

前言:在进程学习这一块,我们主要学习的就是PCB这个进程控制块,而PBC就是用来描述进程的结构体,而进程状态就是PCB结构体中的一个变量。 本篇主要内容: 操作系统中的进程状态Linux下的进程状态 在开始之前,我…

AI学习指南-人工智能概述

欢迎来到人工智能的奇妙世界!如果你是初学者,那么你来对地方了。今天,我们将一起探索人工智能(AI)的基本概念,看看它是如何分类的,它的应用有哪些,以及未来可能的发展方向。准备好了…

每日一题(力扣740):删除并获得点数--dp+思维

其实跟打家劫舍没啥区别 排序去重之后去考虑当前位置和前两个位置之间的关系即可&#xff0c;具体见代码&#xff1a; class Solution { public:int deleteAndEarn(vector<int>& nums) {int n nums.size();if (n 1) return nums[0];unordered_map<int, int>…

Java项目:基于SSM框架实现的在线医疗服务系统(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的在线医疗服务系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

MES(制造执行系统)与PDCA循环,斩不断理还乱的关系。

MES系统算是B端系统中比较复杂的一种&#xff0c;这与我国制造业标准化程度较低有一定的关联&#xff0c;MES的存在就是要更好执行PDCA循环&#xff0c;二者关联是千丝万缕的&#xff0c;B系统提升专家借此为大家分享一下。 一、什么是PDCA PDCA&#xff08;Plan-Do-Check-Ac…

【系统架构师】-选择题(十一)

1、紧耦合多机系统一般通过&#xff08;共享内存&#xff09;实现多机间的通信。对称多处理器结构&#xff08;SMP&#xff09;属于&#xff08; 紧耦合&#xff09;系统。 松耦合多机系统又称间接耦合系统,—般是通过通道或通信线路实现计算机间的互连。 2、采用微内核的OS结构…

SQLite如何处理CSV 虚拟表(三十七)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite的DBSTAT 虚拟表&#xff08;三十六&#xff09; 下一篇:SQLite的扩展函数Carray()表值函数(三十八) ​ RFC4180格式是一种文本文件格式&#xff0c;被用于表格数据间的交互&#xff0c;也可将表格数据转化…

项目管理-项目范围管理1/2

1.项目范围管理-知识框架 2.范围管理-6个过程 项目范围管理&#xff0c;过程 6个&#xff0c;包括“规收定 创确控”&#xff1a; 规划范围管理收集需求定义范围创建WBS确认范围控制范围 2.1规划范围管理 &#xff08;1&#xff09;主要内容 4-3-2 &#xff08;2&#xf…

Homebrew是什么?

Homebrew 是一个开源的包管理器&#xff0c;专为 macOS 设计&#xff0c;用于简化在 macOS 上安装、更新和管理软件的过程。Homebrew 填补了 macOS 系统自带的包管理工具的空白&#xff0c;它通过用户友好的命令行界面&#xff0c;提供了大量的软件包&#xff08;formulae&…

Android 拼音解析库 Pinyin4j 的介绍及其使用

拼音是汉语的一种辅助拼音文字&#xff0c;用于帮助人们学习汉语的读音和拼写。拼音解析库能够将汉字转换为拼音&#xff0c;并提供多种功能&#xff0c;例如声调标注、拼音格式转换、多音字处理等。 拼音解析库 Pinyin4j 是一个用于将汉字转换为汉语拼音的 Java 库。它提供了…

如何低成本创建个人网站?

目录 前言 网站源代码 虚拟主机或服务器 域名注册或免费二级域名 域名解析 上传源代码压缩包 添加刚刚的域名 成功搭建 失败的解决方案 结语 前言 很多小白都非常想拥有自己的网站&#xff0c;但很多人虽然有了自己的源代码但苦于不知道怎么将其变成所有人都能够访…

Lucene从入门到精通

**************************************************************************************************************************************************************************** 1、概述 【1】入门&#xff1a;作用、有点与缺点 【2】应用&#xff1a;索引、搜索、fie…

Redis Zset的底层原理

Redis Zset的底层原理 ZSet也就是SortedSet&#xff0c;其中每一个元素都需要指定一个score值和member值&#xff1a; 可以根据score值排序后member必须唯一可以根据member查询分数 因此&#xff0c;zset底层数据结构必须满足键值存储、键必须唯一、可排序这几个需求。之前学…

Java | Leetcode Java题解之第66题加一

题目&#xff1a; 题解&#xff1a; class Solution {public int[] plusOne(int[] digits) {int n digits.length;for (int i n - 1; i > 0; --i) {if (digits[i] ! 9) {digits[i];for (int j i 1; j < n; j) {digits[j] 0;}return digits;}}// digits 中所有的元素…

LeetCode 131 —— 分割回文串

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先&#xff0c;按照 LeetCode 5——最长回文子串 中的思路&#xff0c;我们先求出 d p dp dp&#xff0c;这样我们就知道了所有的子串是否是回文子串。 然后&#xff0c;我们进行一个 dfs 搜索&#xff0c;起…

计算机网络4——网络层6路由器构成

文章目录 一、路由器的构成1、路由器结构2、交换结构 二、IP多播1、IP多播的概念2、在局域网上进行硬件多播 三、网际组管理协议IGMP和多播路由选择协议1、IP 多播需要两种协议2、网际组管理协议 IGMP3、多播路由选择协议 一、路由器的构成 1、路由器结构 路由器是一种具有多…

【Cortex-M3 CMSIS内核驱动文件详解】4:内核功能接口

文章目录 四、内核功能接口4.1 NVIC功能接口4.1.1 配置优先级分组4.1.2 获取优先级分组4.1.3 关闭使能相应的中断&#xff08;IRQ&#xff0c;非系统错误&#xff09;4.1.4 获取中断挂起&#xff08;IRQ&#xff0c;非系统错误&#xff09;4.1.5 设置外部中断挂起&#xff08;I…

css实现瀑布流布局

瀑布流布局也可以通过纯CSS来实现&#xff0c;使用CSS的column属性可以实现多列布局。下面是一个使用纯CSS实现瀑布流布局的示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"…