检索增强生成(RAG) — 高级提示工程方法

Thread of Thought,ThoT

Thread of Thought Unraveling Chaotic Contexts

大型语言模型(LLMs)在自然语言处理领域开启了一个变革的时代,在文本理解和生成任务上表现出色。然而,当面对混乱的上下文环境(例如,干扰项而不是长的无关上下文)时,它们会遇到困难,导致无意中忽略了混乱上下文中的某些细节。为了应对这些挑战,我们引入了“思维线索”(Thread of Thought,ThoT)策略,该策略受到人类认知过程的启发。ThoT策略能够系统地分段和分析扩展的上下文,同时巧妙地选择相关信息。这个策略作为一个多功能的“即插即用”模块,可以与各种LLMs和提示技术无缝集成。在实验中,我们使用了PopQA和EntityQ数据集,以及我们收集的多轮对话响应数据集(MTCR),来说明ThoT策略在推理性能上显著优于其他提示技术。

本文提出了一种名为“思维线索”(Thread of Thought,ThoT)的新策略,旨在提高大型语言模型(LLMs)在处理混乱上下文信息时的性能。ThoT受人类认知过程的启发,显著提升了LLMs分段和分析扩展上下文的能力。我们将ThoT与现有方法进行了比较,后者通常需要复杂的重新训练、微调,或者在处理大量复杂信息时存在局限性。相比之下,ThoT提供了一个更为直接和高效的解决方案。它作为一个“即插即用”的模块,可以与各种预训练的语言模型和提示策略无缝集成,无需复杂的程序。ThoT的有效性通过使用长尾问答数据集(如PopQA和EntityQ)以及基于日常对话的多轮对话响应数据集进行了严格测试。这些评估的结果是明确的:ThoT不仅在处理混乱上下文方面表现出色,而且还增强了LLMs的推理能力。

Chain of Note,CoN

Enhancing Robustness in Retrieval-Augmented Language Models

检索增强型语言模型(RALMs)在大型语言模型的能力上取得了重大进步,特别是在利用外部知识源减少事实性幻觉方面。然而,检索到的信息的可靠性并不总是有保证的。检索到无关数据可能导致回答偏离正轨,甚至可能使模型忽略其固有的知识,即使它拥有足够的信息来回答查询。此外,标准的RALMs通常难以评估它们是否拥有足够的知识,包括内在知识和检索到的知识,以提供准确的答案。在知识缺乏的情况下,这些系统理想情况下应该以“未知”回应无法回答的问题。为了应对这些挑战,我们引入了CHAIN-OF-NOTING(CON),这是一种新颖的方法,旨在提高RALMs在面对噪声、无关文档和未知场景时的鲁棒性。CON的核心思想是为检索到的文档生成顺序阅读笔记,从而彻底评估它们与给定问题的相关性,并将这些信息整合以形成最终答案。我们使用ChatGPT为CON创建训练数据,随后在LLaMa-2 7B模型上进行了训练。我们在四个开放领域问答基准上的实验表明,装备了CON的RALMs显著优于标准的RALMs。特别是,CON在完全噪声检索文档的情况下,EM分数平均提高了+7.9,在实时问题超出预训练知识范围的情况下的拒绝率提高了+10.5。

在这篇论文中,我们介绍了CHAIN-OF-NOTING(CON)框架,这是一种新颖的方法论,旨在增强RALMs的鲁棒性。CON的核心概念围绕着为每个检索到的文档生成顺序阅读笔记。这个过程允许深入评估文档与提出问题的相关性,并帮助合成这些信息以构建最终的答案。我们使用了ChatGPT来生成CON的初始训练数据,然后使用LLaMa-2 7B模型进一步优化这些数据。我们在各种开放领域问答基准上的测试表明,集成了CON的RALMs在性能上显著超过了传统的RALMs。

Chain of Verification,CoVe

Chain-Of-Verification Reduces Hallucination In Large Language Models

在大型语言模型中,产生看似合理但实际上错误的事实信息,即幻觉,是一个未解决的问题。我们研究了语言模型在给出回答时进行深思以纠正错误的能力。我们开发了Chain-of-Verification(COVE)方法,该方法首先(i)起草一个初始回答;然后(ii)计划验证问题以对草稿进行事实核查;(iii)独立回答这些问题,以便答案不受其他回答的影响;最后(iv)生成其最终经过验证的回答。在实验中,我们展示了COVE在各种任务中减少了幻觉,包括来自Wikidata的基于列表的问题、封闭书籍的多跨度QA和长篇文本生成。

我们的方法假设能够访问一个基础的大型语言模型(LLM),尽管这个模型可能容易产生幻觉,但它能够以少量样本或零样本的方式接受一般性指令的提示。我们方法的一个关键假设是,当得到适当的提示时,这个语言模型能够生成并执行一个计划,以验证自己的工作,并检查是否存在错误,最后将这种分析整合到改进后的回答中。
我们的整体过程,我们称之为验证链(CoVe),因此执行四个核心步骤:
1. 生成基线响应:给定一个查询,使用LLM生成响应。


2. 规划验证:给定查询和基线响应,生成一系列验证问题,这些问题有助于自我分析原始响应中是否存在任何错误。


3. 执行验证:依次回答每个验证问题,从而检查答案与原始响应之间是否存在不一致或错误。


4. 生成最终验证响应:给定发现的不一致性(如果有的话),生成一个经过修订的响应,其中包含验证结果。


这些步骤通过以不同的方式提示同一个LLM来获得所需的响应。虽然步骤(1)、(2)和(4)都可以通过单个提示来调用,但我们对步骤(3)的变体进行了研究,包括联合、两步和分解版本。这些变体要么涉及单个提示,要么涉及两个提示,要么每个问题独立提示,其中更复杂的分解可能会导致改进的结果。

我们介绍了验证链(CoVe)方法,这是一种通过对其自己的响应进行深思熟虑并进行自我纠正来减少大型语言模型中幻觉的方法。特别是,我们展示了模型在将验证分解为一系列更简单的问题时,回答验证问题的准确性高于回答原始查询。其次,在回答验证问题集时,我们展示了控制模型的注意力,使其无法关注其之前的答案(分解CoVe)有助于减轻复制相同的幻觉。总的来说,我们的方法通过让同一个模型对(验证)其答案进行深思熟虑,大大提高了原始语言模型响应的性能。我们工作的一个明显扩展是将CoVe与工具使用相结合,例如在验证执行步骤中使用检索增强,这可能会带来进一步的收益。

尽管我们的验证链(CoVe)方法旨在减少幻觉,但它并没有完全从生成中移除幻觉。这意味着,即使CoVe改进了基线,它仍然可以为给定查询生成不正确或误导性的信息。我们还注意到,在我们的实验中,我们只解决了以直接陈述的事实不准确形式出现的幻觉。然而,幻觉可能以其他形式出现,例如在推理步骤中出错,作为观点的一部分等。我们还注意到,CoVe生成的内容附带验证,如果用户查看,会增加其决策的可解释性,但代价是输出中生成更多令牌,从而增加计算成本,与其他推理方法(如思维链)类似。

我们的方法旨在通过花费更多时间来识别自己的错误,使大型语言模型产生改进的响应。虽然我们已经证明了这确实有所改进,但改进的上限显然受到模型整体能力的影响,例如在识别和知道它知道什么方面。在这方面,正如第2节讨论的,一个与我们的工作平行的研究方向是语言模型使用外部工具,以获取超出其权重存储范围的信息。虽然我们在这项工作中没有探索这一领域,但这些技术很可能与这里的发现相结合。

EmotionPrompt

Large Language Models Understand and Can be Enhanced by Emotional Stimuli

情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型(LLMs)被视为向人工通用智能迈进的一大步,在许多任务中表现出色,但目前尚不清楚LLMs是否能真正理解心理情感刺激。理解和响应情感线索使人类在解决问题方面具有独特的优势。在这篇论文中,我们迈出了探索LLMs理解情感刺激能力的第一步。为此,我们首先对45个任务进行了自动实验,使用了各种LLMs,包括Flan-T5-Large、Vicuna、Llama 2、BLOOM、ChatGPT和GPT-4。我们的任务涵盖了确定性和生成性应用,代表了全面的评估场景。我们的自动实验表明,LLMs具有情感智能,并且可以通过情感提示(我们称之为“EmotionPrompt”,它将原始提示与情感刺激结合起来)来提高其性能,例如在指令诱导任务中提高了8.00%的相对性能,在BIG-Bench中提高了115%。除了可以使用现有指标自动评估的确定性任务之外,我们还进行了106名参与者的人类研究,以评估使用普通和情感提示的生成任务的质量。我们的人类研究结果表明,EmotionPrompt显著提高了生成任务的性能(在性能、真实性和责任感指标上平均提高了10.9%)。我们提供了关于为什么EmotionPrompt对LLMs有效以及可能影响其性能的因素的深入讨论。我们认为,EmotionPrompt为探索跨学科社会科学知识,以促进人机LLMs交互,开辟了一条新的途径。

大型语言模型在各种应用中的表现展示了前所未有的性能。本文是首次研究,旨在评估和分析LLM如何理解情感智能,这是人类的关键特性。我们为这种分析设计了EmotionPrompt。我们在6个LLM上的45个任务的标准化评估显示了积极的结果:LLM可以理解和通过情感刺激得到增强。我们的人类研究还表明,通过情感智能增强的LLM可以达到更好的性能、真实性和责任感。
展望未来,我们看到LLM和心理学交汇处有许多开放问题和机遇。首先,尽管我们在本文中展示了一些注意力可视化,以理解EmotionPrompt成功的理由,但从心理学的根本层面和模型训练来看,仍有更多工作要做,例如预训练技术如何影响情感刺激的表现,如何通过将心理现象融入预训练来提高性能等。我们相信,更多的分析和理解可以帮助我们更好地理解LLM情感智能背后的“魔法”。其次,尽管本文得出结论LLM可以理解和通过情感智能得到增强,但实际上这与关于人类情感智能的现有研究相冲突。现有的心理学研究表明,人类的行为或态度可能受到情绪的影响,但他们的推理或认知能力不能简单地通过添加情感刺激来增强。然而,这种差异背后的奥秘仍然不清楚,我们留给未来的工作来找出人类和LLM情感智能之间的实际差异。

ExpertPrompting

ExpertPrompting: Instructing Large Language Models to be Distinguished Experts

如果适当设计提示,对齐的大型语言模型(LLM)的回答质量可以显著提高。在本文中,我们提出了ExpertPrompting,以激发LLM作为杰出专家回答问题的潜力。我们首先利用In-Context Learning自动合成每个具体指令的详细和定制的专家身份描述,然后要求LLM在这种代理背景条件下提供答案。基于这种增强的提示策略,我们使用GPT-3.5生成了一组新的遵循指令的数据,并训练了一个竞争的开源聊天助手,名为ExpertLLaMA。我们使用基于GPT4的评估来证明,1)专家数据比普通答案的质量显著更高,2)ExpertLLaMA优于现有的开源对手,并达到了原始ChatGPT能力的96%。所有数据和ExpertLLaMA模型将在https://github.com/OFA-Sys/ExpertLLaMA上公开。

在本文中,我们提出了ExpertPrompting和ExpertLLaMA。ExpertPrompting是一种增强的提示策略,用于指导LLM以杰出专家的方式回答问题。它是自动的、通用的,同时仍然易于实现。我们将这种提示策略应用于GPT-3.5,以生成一组新的遵循指令的数据,并基于此训练了一个新的开源聊天助手ExpertLLaMA。根据基于GPT4的评估,ExpertPrompting产生了更高质量的答案,ExpertLLaMA优于现有的开源聊天助手,达到了原始ChatGPT能力的96%。在未来,我们将扩大指令数据的规模,超过52k Alpaca,以进一步提高ExpertLLaMA。

结论

从这些论文中可以看出,提示策略在减少RAG应用中的幻觉方面起到了关键作用。

首先,ThoT(思维线索)通过细致的上下文理解和CoN(链式注释)强大的注释生成功能,解决了混乱上下文和无关数据检索的难题。

其次,CoVe(链式验证)引入了系统验证机制,通过迭代改进提高了回答的正确性。而EmotionPrompt则利用情感刺激,不断提升LLM(大型语言模型)的性能,尤其是在大型模型中表现出色。

最后,ExpertPrompting通过其身份切换技巧,展示了更高的回答质量,并在性能上超越了ChatGPT。这些策略不仅增强了LLM的理解和处理能力,还为未来的研究和应用提供了新的视角和方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型

文章目录 1. Java、C和 Go 语言的区别,各自的优缺点?2. 什么是Redis?Redis 有哪些特点? Redis有哪些常见的应用场景?3. 简述计算机网络七层模型和各自的作用? 1. Java、C和 Go 语言的区别,各自的…

CUDA C++ 编程指南

目录 1. Introduction1.1. The Benefits of Using GPUs1.2. CUDA: A General-Purpose Parallel Computing1.3. A Scalable Programming Model CUDA C Programming Guide 1. Introduction 1.1. The Benefits of Using GPUs 在相似的价格和功耗范围内,图形处理单…

二刷代码随想录算法训练营第四天 |24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 面试题 、02.07. 链表相交 、142.环形链表II

目录 一、24. 两两交换链表中的节点 二、19. 删除链表的倒数第 N 个结点 三、面试题 02.07. 链表相交 四、142. 环形链表 II 一、24. 两两交换链表中的节点 题目链接:力扣 文章讲解:代码随想录 视频讲解: 帮你把链表细节学清楚&#xff…

了解人工智能计算: 人工智能入门

回顾历史,各种数学仪器在人类进步的历程中发挥了重要作用。从算盘和六分仪到滑尺和计算机,这些工具推动贸易、助力航海,增强理解,并提高了我们的生活质量。然而,在科学和工业领域,推动我们前进的前沿且强大…

OpenCV 4基础篇| OpenCV像素的编辑

目录 1. 前言1. 像素的访问1.1 数组索引访问1.2 img.item() 2. 像素的修改2.1 数值索引修改2.2 img.itemset() 1. 前言 像素是构成数字图像的基本单位,像素处理是图像处理的基本操作。 对像素的访问、修改,可以使用 Numpy 方法直接访问数组元素。 1. 像…

华为HCIP Datacom H12-831 卷25

多选题 1、某OSPF路由器R1的部分配置如图所示。以下关于该部分配置的分析描述。正确的有哪些项? A、R1开启了两个OSPF进程.若要VPN tt的路由信息显示在进程1的路由表中,需要在进程1中引入OSPF进程2路由 B、R1开启了两个OSPF进程,相关网段都通告进了骨…

Nodejs+vue图书阅读评分个性化推荐系统

此系统设计主要采用的是nodejs语言来进行开发,采用 vue框架技术,对于各个模块设计制作有一定的安全性;数据库方面主要采用的是MySQL来进行开发,其特点是稳定性好,数据库存储容量大,处理能力快等优势&#x…

改进Yolov5目标检测与单目测距 yolo速度测量-pyqt界面-yolo添加注意力机制

当设计一个结合了 YOLOv5 目标检测、单目测距与速度测量以及 PyQt 界面的毕业设计时,需要考虑以下几个方面的具体细节: 计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,私聊会回复! YOLOv5 目标检测: 首先,选择…

go语言的理解,看这一篇就够了

1.来源 Go语言是谷歌2009年发布的第二款开源编程语言 2.谷歌为什么要创建Go语言 计算机硬件技术更新频繁, 性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效…

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

Swiper.js:不识这个轮播图js库,说明你的前端还未入门

hello,我是贝格前端工场,本期给大家带来轮播图的s库:Swiper.js,用这个类库处理轮播图、幻灯片、画廊那是得心应手,非常的easy,欢迎老铁们点赞关注,如有前端定制开发需求可以私信我们。 一、Swip…

tinymce问题处理

Vite构建工具下Tinymce踩坑指南 解决方案是在路劲前面增加/,这个跟上面链接有些区别,区别原因应该是如果路由采用的是createWebHashHistory则应该去掉/,如果是createWebHistory则应该加上/ 页面引用,一种异步加载,一种同步加载&…

[深度学习]yolov9+deepsort+pyqt5实现目标追踪

【YOLOv9DeepSORTPyQt5追踪介绍】 随着人工智能技术的飞速发展,目标追踪在视频监控、自动驾驶等领域的应用日益广泛。其中,YOLOv9作为先进的目标检测算法,结合DeepSORT多目标追踪算法和PyQt5图形界面库,能够为用户提供高效、直观…

【AUTOSAR】--02 AUTOSAR网络管理相关参数

这是AUTOSAR网络管理梳理的第二篇文章,主要讲解AUTOSAR网络管理的相关参数。第一篇链接【01 AUTOSAR网络管理基础】。​ 相关参数有很多,我挑了一些相对重要的参数,分三部分进行讲解: 第一部分:比较常用&#xff0c…

速度提高100倍 - 扩展 RAG 应用程序,以实现数十亿个嵌入,并行计算余弦相似度

原文链接:100x Faster — Scaling Your RAG App for Billions of Embeddings 2024 年 2 月 15 日 RAG应用程序最大的问题之一是它们的计算检索时间。想象一下,你有一个向量数据库,包含一万亿条Embedding向量的记录。当您尝试将用户查询与一…

Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】

Python中操作MySQL和SQL Server数据库的基础与实战 在Python中,我们经常需要与各种数据库进行交互,其中MySQL和SQL Server是两个常见的选择。本文将介绍如何使用pymysql和pymssql库进行基本的数据库操作,并通过实际代码示例来展示这些操作。…

eclipse中open Type 、 open type in Hierachy、open Resource的区别

目录 场景: open Type open Resource open type in Hierachy 场景: 在项目中想要研究底层代码,经常要用eclipse看依赖jar包的类,比如spring的源码中AbstractApplicationContext类CTLSHIFTT用的少,经常用的CTLSHIR…

微信小程序 uniapp+vue餐厅美食就餐推荐系统

本论文根据系统的开发流程以及一般论文的结构分为三个部分,第一个部分为摘要、外文翻译、目录;第二个部分为正文;第三个部分为致谢和参考文献。其中正文部分包括: (1)绪论,对课题背景、意义、目…

[rust] 10 project, crate, mod, pub, use: 项目目录层级组织, 概念和实战

文章目录 一 项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用 …

docker安装flink

docker安装flink 5.1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network5.2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES&…