论文阅读_RAG融合现有知识树_T-RAG

news2024/12/27 13:31:32
英文名称: T-RAG: LESSONS FROM THE LLM TRENCHES
中文名称: T-RAG:来自LLM战壕的经验教训
链接: https://arxiv.org/abs/2402.07483
作者: Masoomali Fatehkia, Ji Kim Lucas, Sanjay Chawla
机构: 卡塔尔计算研究所, 哈马德·本·哈利法大学
日期: 2024-02-12
引用次数: 0

1 摘要

  • 目标:开发一个可以安全、高效地回答私有企业文档问题的大型语言模型(LLM)应用程序,主要考虑数据安全性、有限的计算资源以及需要健壮的应用程序来正确响应查询。
  • 方法:应用程序结合了检索增强生成(RAG)和微调的开源 LLM,将其称之为 Tree-RAG(T-RAG)。T-RAG 使用树结构来表示组织内的实体层次结构,用于生成文本描述,以增强对组织层次结构内的实体进行查询时的上下文。
  • 结果:我们的评估显示,这种结合表现优于简单的 RAG 或微调实现。最后,根据构建实际应用的 LLM 的经验,分享了一些获得的教训。

2 读后感

这篇文章的创新点逻辑比较简单:除了基本的 RAG 外,定位了问题中的实体,在事先定义好的实体树中寻找其父实体,并将其加入到问题的上下文中。可以视为对问题中实体抽象的方法。

我个人比较喜欢有两点:

第一点是:这是一个对问题抽象化,并与现有知识融合的范例。对问题进行规范化和抽象化后再提问或存储,构建更复杂的存储结构,与原有知识融合,这可能是大模型领域一个重要的问题。与此相比,之前 RAG 直接将文档打散成碎片的方式确实过于简单粗暴。

第二点是:论文描述了本地 RAG 的具体实现方法,一些在实践中的常见问题的总结,例如在 LLAMA-7B 模型上精调所需的硬件,以及精调对原模型能力的影响。干货很多,看完可以少走一些弯路。

3 方法

图 1:Tree-RAG(T-RAG)的工作流程。对于给定的用户查询,在向量数据库中搜索要用作上下文的相关文档块。此外,如果查询提及组织中的实体,则会从实体树中提取有关这些实体的信息并将其添加到上下文中。我们在从组织文档生成的指令数据集上对 Llama-2 7B 模型进行了微调。我们使用微调模型来生成响应。

3.1 指令数据集准备

先使用 LangChain 库将原始 PDF 文件解析为文本格式,表格和结构图则由人工专家手动转化为文本。

然后,根据文档中的各个节标题,将每一节分解成一个独立的块。通过在几轮迭代中为每个块生成一组(问题、答案)对。

  • 在第一次迭代中,对于每个块,提示 Llama-2 模型为提供的区块生成问题和答案。提示模型生成各种问题类型,例如对或错、摘要、简答等。记录提供问题、答案和相关块的模型响应。
  • 在第二次迭代中,对于每个块,提示模型一个对话示例,并要求在用户和 AI 助手之间生成一个对话。
  • 在第三次迭代中,模型被要求执行相同的任务(为给定的块生成问题和答案); 在此迭代中,为模型提供了由人类专家根据文档创建的问题示例。

汇总各种迭代过程中产生的问题和答案,以此创建一个数据集。对生成的问题和答案进行了人工检查,并剔除了重复的问题。最后,得到了一个包含 1,614 个问答对的数据集。我们将这个数据集随机分成了 90% 的训练集和 10% 的验证集。

3.2 LLM 微调

使用 QLoRA(Hugging Face 'peft' 库)对基本的 LLM 模型,在 Q&A 指令数据集上进行训练。微调过程在 4 个内存为 24G 的 Quadro RTX 6000 GPU 的设备上进行。

3.3 实体树

实体树包含了组织内实体及其在层次结构中位置的信息。好像树中,每个节点都代表一个实体,父节点表示它所在的组。例如,在图 2 所示的难民署组织结构中,难民署创新处是隶属于副高级专员的一个实体。

在检索过程中,实体树被用来增强向量数据库检索到的上下文。解析器模块会在用户查询中寻找与组织内实体名称匹配的关键字。如果找到匹配项,就会从树中提取有关每个匹配实体的信息,并将其转换为文本语句,这些语句提供了关于实体及其在组织层次结构中的位置的信息。然后,这些信息会与从向量数据库中检索到的文档块结合起来,形成上下文。这样,当用户询问有关实体的问题时,模型就能访问到有关实体及其在组织层次结构中位置的信息。

3.4 配置

在本地部署应用程序时,使用 Llama-2 模型,并采用 Chroma DBvector 数据库来存储文档块以进行上下文检索。

表 -2 展示了几种实验配置,其中,第二行的 Finetuned 在提问时并未使用上下文。而第三行的 T-RAG 则使用了来自两个来源的上下文信息:从原始文档生成的指令数据集中的问题和答案对,以及树上下文,该上下文为用户查询中提到的实体提供从实体树中提取的信息。

4 实验结果

4.1 效果评估

采用自动和人工方式来评估语言模型(LLMs)。在自动评估中,使用 GPT-4 语言模型作为评估工具。研究表明,语言模型的评估结果与人类对各种任务的评估结果是一致的。

表 -3 中 N 代表每组问题的数量,将回答手动评分为“正确”(C),“正确但冗长”(CV)。T 是回答正确的总数(T = C + CV)。可以看出,尽管 T-RAG 的效果较好,但它有可能生成冗长的答案(测试数据不多)。

4.2 微调模型后过拟合

模型微调可能导致模型忘记其在训练前所学习的内容。为了评估过拟合情况,使用了大规模多任务语言理解(MMLU)基准测试来对比微调前后的效果。结果显示,其影响较小。

5 经验教训总结

  • 虽然构建一个初始的 RAG 应用程序很容易,但要使其健壮并非易事,需要领域知识专家的帮助,并需要做出许多设计选择以优化系统的不同组件。
  • 微调的模型可能对问题的措辞敏感。
  • 通过将信息纳入模型的参数,微调模型可以节省 LLM 的有限上下文窗口的空间,从而减少所需的上下文量。
  • 在系统开发的各个阶段,让最终用户参与测试可以生成反馈,帮助引导开发过程中的决策。
  • 树提供了一个适合表示层次信息(如组织中的实体)的结构,可以用来增强上下文。

6 相关论文

  • 先抽象再提问的另一种方法:论文阅读_提示工程_通过抽象激发大模型的推理能力

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

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

相关文章

《米小圈上学记》|快乐读书,从身边的人身边的事开始!

时间,抓住了就是黄金,虚度了就是流水;书,看了就是学问,没看就是废纸:抱负,努力了才叫幻想,放弃了那只是妄想。读书,不一定能转变命运,但肯定能让我们安静,安静本身就是一…

企业计算机服务器中了faust勒索病毒如何处理,faust勒索病毒解密恢复

随着网络技术的不断发展与应用,越来越多的企业利用网络走向了数字化办公模式,网络也极大地方便了企业生产运营,大大提高了企业生产效率,但对于众多企业来说,企业的数据安全一直是大家关心的主要话题,保护好…

LLM Agent 全网最全简介

什么是LLM Agent 导语 GPT(尤其是GPT-4)等大语言模型(LLM)的推出,让人类认识到了大语言模型强大的文本生成能力。 只是用来做文本生成工具的话,LLM的能力就被严重低估了。Agents的想法的出现,…

粘土制作的梵高世界;实时自由地转换您的声音Supertone;几秒钟内设计出令人惊叹的LOGO

✨ 1: 梵高的世界 你探索 runwayml #Gen2 过 的风格功能吗?看看这个用粘土制作的梵高作品的视频——就像走进了梵高的双手雕刻的世界。 🎨 🖌️ 关注更多将经典艺术与现代技术融合的创新方式! ✨ 2: Supertone Shift 实时自由…

数字工厂管理系统如何实现生产过程透明化

随着科技的飞速发展,数字化转型已成为制造业不可逆转的趋势。数字工厂管理系统作为实现生产自动化、智能化的重要工具,其在提升生产效率、降低运营成本、优化资源配置等方面的作用日益凸显。其中,实现生产过程的透明化是数字工厂管理系统的重…

Vinted店铺总被封号?如何有效养号?

Vinted是一家欧洲知名的二手时尚交易平台,致力于连接买家和卖家,让他们能够在平台上买卖二手时尚商品。用户可以在Vinted上销售和购买服装、鞋子、配饰等各种时尚物品,无论是品牌商品还是非品牌商品,都可以在平台上找到。Vinted的…

什么是驱动数字签名?如何获取驱动数字签名?

Windows 驱动程序承载着计算机实现的各种内核和用户模式功能。如果驱动程序被黑客攻击,可能会产生很多问题。Windows通过数字签名来验证驱动程序包的完整性及发布者的身份。2020年10月的安全更新中,微软加强了对驱动软件的验证,如果Windows无…

OFDM802.11a的FPGA实现(十)导频插入(含verilog和matlab代码)

原文链接(相关文章合集):OFDM 802.11a的xilinx FPGA实现 目录 1.前言2.插入导频原理3.硬件实现4.Matlab仿真5.ModelSim仿真6.结果对比验证7.verilog代码 1.前言 前面一篇文章完成了星座图的映射,今天继续设计后面的模块。在接收机…

Linux 操作系统网络编程1

目录 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型 1.1.2 网络数据传输过程 2 传输层通信协议 2.1 TCP 2.1.1 TCP的3次握手过程 2.1.2 TCP四次挥手过程 2.2 UDP 3 网络编程的IP地址 4 端口 5 套接字 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型…

GitHub介绍,GitHub如何订阅充值?

一、GitHub介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名Github。 GitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、…

WSL介绍(Windows10内置的Linux子系统)

最近发现在Windows10下不用安装虚拟机也可以使用Linux,然后发现原来2016年就已经有这个功能了,下面来介绍下如何使用。 首先我的win10版本信息如下,以免部分版本不支持,可以做个参考。 需要进到控制面板里将Linux子系统功能打开&a…

使用Vue连接Mqtt实现主题的订阅及消息发布

效果如下&#xff1a; 直接贴代码&#xff0c;本地创建一个html文件将以下内容贴入即可 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

基于Linux中的 进程相关知识 综合讲解

目录 一、进程的基本概念 二、pid&#xff0c;ppid&#xff0c;fork函数 三、进程的状态讲解 四、进程的优先级 五、完结撒❀ 一、进程的基本概念 概念&#xff1a; ● 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 ● 内核观点&#xff1a;担当…

SSM【Spring SpringMVC Mybatis】——Mybatis

目录 1、初识Mybatis 1.1Mybatis简介 1.2 官网地址 2、搭建Mybatis框架 2.1 准备 2.2 搭建Mybatis框架步骤 1. 导入jar包 2. 编写核心配置文件【mybatis-config.xml】 3. 书写相关接口及映射文件 4. 测试【SqlSession】 2.3 添加Log4j日志框架 导入jar包 编写配置文…

CTF关于反序列化练习随笔记录

反序列化 php魔术方法 1、get、set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 get&#xff08; $property &#xff09; 当调用一个未定义的属性时访问此方法 set&#xff08; $property&#xff0c; $value &#xff09; 给一个未定义的属性赋值时调用 这里的…

华为eNSP中型企业局域网网络规划设计(上)

敲半天一个闪退全™给我干没了呜呜呜&#xff0c;eNSP&#xff0c;wcnm&#xff01;wcnm&#xff01;wcnm&#xff01; →b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;下&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩←…

带EXCEL附件邮件发送相关代码

1.查看生成的邮件 2.1 非面向对象的方式&#xff08;demo直接copy即可&#xff09; ​ REPORT Z12. DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST TYPE TABLE OF SOPCKLSTI1 WITH HEADER LIN…

ansible------inventory 主机清单

目录 inventory 中的变量 2&#xff09;组变量[webservers:vars] #表示为 webservers 组内所有主机定义变量&#xff0c;所有组内成 员都有效 ansible_userrootansible_passwordabc1234 3&#xff09; [all:vars…

数据湖与数据网格:引领组织数据策略的未来

十多年来&#xff0c;组织已经采用数据湖来克服数据仓库的技术限制&#xff0c;并发展成为更加以数据为中心的实体。虽然许多组织已经使用数据湖来探索新的数据用例并改进其数据驱动的方法&#xff0c;但其他组织发现所承诺的好处很难实现。因此&#xff0c;许多数据湖计划的有…

文件下载出现 IOExpcetion: closed

异常原因截图 : 异常代码位置 : 出现的原因是 使用 try-with-resources, downloadFile 方法执行完毕, 文件流被关闭了...导致前面读取文件字节, 异常提示已经关闭... try (Response response OkHttpUtils.getInstance().client.newCall(new Request.Builder().url(fileUrl)…