RAFT: Adapting Language Model to Domain Specific RAG

news2024/9/22 11:24:52

预备知识

RAG介绍一文搞懂大模型RAG应用(附实践案例) - 知乎 (zhihu.com)

RAG的核心理解为“检索+生成

检索:主要是利用向量数据库的高效存储和检索能力,召回目标知识;

生成:利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案 

  • 数据准备阶段:数据提取——>文本分割——>向量化(embedding)——>数据入库
  • 应用阶段:用户提问——>数据检索(召回)——>注入Prompt——>LLM生成答案
  • 总的来说,在数据准备时候加入doc入dataset,在提问阶段根据dataset检索出prompt进行答案生成

RATF与RAG区别(chatgpt)

  1. 目标

    • 检索增强微调旨在利用大规模检索到的文本数据来增强模型的微调过程。它的主要目标是通过利用外部知识源来提高模型在目标任务上的性能。
    • 检索增强生成技术的目标是结合检索和生成两种技术,以生成与输入相关的连贯、准确的文本。它侧重于生成文本的质量和相关性。
  2. 方法

    • 检索增强微调通过将检索到的文本信息与目标任务的数据合并,然后在合并的数据集上进行模型微调。这种方法通常会使用一些特定的策略,例如数据蒸馏或伪标签生成,以更好地利用检索到的信息。(含有预训练过程)
    • 检索增强生成技术将检索到的文本信息作为上下文,结合生成模型以生成文本。它通常不涉及对模型参数的微调,而是利用检索到的信息来指导生成过程。

零次学习(Zero-Shot Learning)

希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。 

在训练阶段不存在与测试阶段完全相同的类别。

论文总结概括

RAFT

在训练阶段加入该领域的doc进行ft,生成阶段LLM与一个检索器配对,该检索器可检索到‘k’文档(或文档的特定片段)并附加到提示符prompt中。

surpervised ft  (SFT)

训练数据

每个数据点包含一个问题(Q),一组文档(Dk)和从其中一个文档(D∗)生成相应的思维链风格答案(A∗)---->Q、Dk、A*

文档分为两类

  1. oracle(D*)可推断出问题答案的文档(可以为多个)
  2. Di干扰文档

对于数据集

  1. p%的数据  ---> 保存oracle文档和k-1个干扰文档
  2. (1-p%)的数据--->仅包含干扰文档                    

baseline

1.zero-shot的Llama2-7b-chat,指令集微调模型,提供了书面的指令instruct,没有提供参考文档。

2.基于RAG的Llama2-7b-chat(LLM+RAG),多提供了参考文档。

3.zero-shot的(DSF)特定领域微调,没有上下文文档。

4.基于RAG特定领域微调(DSF+RAG),基于RAG微调模型储备外部知识。

RAFT与基线对比:将RAG引入Domain Specific Fine-tuning(DSF)->模型缺乏上下文处理和从中提取有用信息的训练。(数据集干扰文档的处理上面)

CoT(Chain-of-Thought )

生成问题时,整合出一个推理链,丰富模型的理解,提高整体准确性,增强训练鲁班性 。

top-K RAG

注意与train时的p%dataset区分开,此时是测试时的场景!!

解决LLM的检索能力——>oracle文档与干扰文档混合——>完善相关和不相关文档的比例

微调方法:结合高度相关文档和干扰文档。该模型使用不同数量的干扰物文档进行训练,但始终使用从检索器中获得的top-k文档进行评估。

现象:仅使用oracle文档进行微调会导致性能更差

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

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

相关文章

今天聊聊Docker

在数字化时代,软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术,正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景,帮…

前缀和(三)

题目:激光炸弹 1 链接 P2280 [HNOI2003] 激光炸弹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 2.大体思路 先开辟一个全局变量的 s 二维数组,这个二维数组开成 s [ 5010 ] [ 5010 ] ,这个是为了,能够将它所给的所有有价值的…

由vue2版本升级vue3版本遇到的问题

一、vuedraggable 由vue2版本升级vue3版本后,可能会遇到以下几种bug: 1、vue3vuedraggable报错TypeError: Cannot read properties of undefined (reading ‘updated’):这个一般是因为插件使用语法有问题,vue3版本的插件使用时&…

Git基础(24):分支回退

文章目录 前言放弃已修改的内容分支回退到指定commit 前言 将分支回退到之前的某个版本 开发中,可能开发某个功能不需要了,或者想要回退到之前历史的某个commit, 放弃后来修改的内容。 放弃已修改的内容 如果未提交,直接使用 …

一个优秀的开源ChatGpt外壳项目(lobe-chat)

lobe-chat 简介: 开源、现代化设计的 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Ollama 应用。 下载lobe-chat lobe-chat项目开源地址:GitHub - lobehub/lobe-chat: &am…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

Jenkins+Ant+Jmeter接口自动化集成测试详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、Jenkins安装配置 1、安装配置JDK1.6环境变量&#xff1b; …

mysql事务及存储引擎

目录 什么是事务 事务的ACIP特性 事务之间的影响 mysql隔离级别 事务隔离级别的作用范围 事务控制语句 mysql存储引擎 什么是事务 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作…

STM32—控制蜂鸣器(定时器)

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能&#xff08;向上计数或向下计…

Web前端—CSS属性计算过程

属性计算过程 CSS 属性计算过程1. 确定声明值2. 层叠冲突比较源的重要性比较优先级比较次序 3. 使用继承4. 使用默认值 CSS 属性计算过程 我们所书写的任何一个 HTML 元素&#xff0c;实际上都有完整的一整套 CSS 样式&#xff08;该元素上面会有 CSS 所有的属性。&#xff0…

Windows 7 一键恢复 - 联想拯救系统

Windows 7 一键恢复 - 联想拯救系统 1. 联想拯救系统1.1. OEM 分区1.2. 一键恢复 References 1. 联想拯救系统 1.1. OEM 分区 计算机 -> 管理 -> 存储 -> 磁盘管理 1.2. 一键恢复 重新启动电脑 F11 -> 从初始备份恢复 References [1] Yongqiang Cheng, https…

实在数字员工,助力菜鸟智慧物流高效腾飞,领航行业新高度

秉承人人都有一个智能助理的发展愿景&#xff0c;自2023年首个数字员工落地以来&#xff0c;菜鸟数字员工累计运行时长已达10万小时。 在智能物流科技不断飞速迭代的今天&#xff0c;物流行业作为社会经济运行的重要支柱和电子商务生态链的关键环节&#xff0c;面临着前所未…

Python灰帽子网络安全实践

教程介绍 旨在降低网络防范黑客的入门门槛&#xff0c;适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法&#xff0c;让网站管理人员都具备基本的保护能力。Python 编程的简单实现&#xff0c;让网络运维变得更简单。各种黑客工具的理论和原理解剖&#xff0c;让人知…

PLC常用通信协议应用

PLC通信协议 ModbusModbus协议介绍Modbus协议的应用Modbus通信模式 Modbus RTU通讯Modbus RTU报文映射寄存器常见功能码数据类型Modbus CRC校验计算Modbus RTU举例&#xff08;读位&#xff09;Modbus RTU举例&#xff08;读字&#xff09; Modbus TCP协议应用TCP数据帧Modbus …

Spring IOC 容器的加载过程(bean 的创建过程)

Spring IOC 容器的加载过程&#xff08;bean 的创建过程&#xff09; 配置Bean 通过xml或者是Component Bean 等进行配置 解析Bean,得到BeanDefinition定义对象 通过 BeanDefintionReader 将 bean 进行解析&#xff0c;准备要创建的bean对象的定义对象BeanDefinition,存放到Be…

Elasticsearch 索引模板、生命周期策略、节点角色

简介 索引模板可以帮助简化创建和二次配置索引的过程&#xff0c;让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热&#xff08;hot&#xff09;、温&#xff08;warm&#xff09;和冷&#xff08;cold&#xff09;数…

尽可能使用清晰、统一的方式初始化所有对象:列表初始化。【C++】

不管是为了统一性&#xff0c;还是避免发生窄化转换&#xff0c;尽可能使用初始化列表。 说明哪些对象可以使用列表初始化&#xff1f;代码演示 说明 C11 引入了列表初始化&#xff08;也称为统一初始化或初始化列表&#xff09;&#xff0c;它是一种使用花括号 {} 来初始化对…

对象实例化在bean注入之前导致@Autowired失效

开发时遇到一个问题&#xff0c;Springboot的Autowired失效&#xff0c;无法注入bean&#xff0c;获取的到的mqttProperties一直为空。 MqttProperties定义&#xff1a; 业务代码&#xff1a; 按理来说&#xff0c;我的MqttProperties和当前类 NettyMqttClient都注册为了bea…

铁道障碍物检测6种YOLOV8

铁道障碍物检测6种&#xff0c;采用YOLOV8训练&#xff0c;得到PT模型&#xff0c;然后转换成ONNX模型&#xff0c;OPENCV调用 铁道障碍物检测6种YOLOV8

YOLOv8 | 注意力机制 | 添加ECA注意力机制

目录 原理简介 代码实现 yaml文件实现 检查是否添加执行成功