RAFT: Adapting Language Model to Domain Specific RAG

预备知识

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干扰文档

对于数据集:p%的数据  ---> 保存oracle文档和k-1个干扰文档

                      (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文档进行微调会导致性能更差

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

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

相关文章

Android Studio实现内容丰富的安卓校园公告助手

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 093校园助手 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 具体往下看第三节,功能截图 安卓端: 1.注册登录 2.校园公告列表…

微信小程序订阅消息(一次性订阅消息)

1、准备工作 登录微信公众平台–>订阅消息–>在公共模板库中选中一个模版–>将模版id复制,前后端都需要。 点击详情–>查看详细内容模版 复制给后端 2、相关api的使用 前端使用:wx.requestSubscribeMessage wx.openSetting wx.getSetti…

[Qt学习笔记]QPushButton点击事件和长按事件使用功能

1、背景介绍 在使用QPushButton中,一般都在UI界面直接右键添加槽函数进入代码,很少去分析每个触发事件的功能,比如需要通过长按按钮来触发相应的操作,这里点击信号不可以达到预期的效果。 2、功能分析 首先分析QPushButton的点…

13014.Linux小知识点记录

文章目录 1 工具记录1.1 串口传输文件 1 工具记录 1.1 串口传输文件 打开SecureCRT的串口,执行rx 文件名指令从桌面将可执行文件,拖拽到串口终端即可

计算机三级——网络技术(综合题第二题)

路由器工作模式 用户模式 当通过Console或Telnet方式登录到路由器时,只要输入的密码正确,路由器就直接进入了用户模式。在该模式下,系统提示符为一个尖括号(>)。如果用户以前为路由器输入过名称,则该名称将会显示在尖指号的前…

opengl日记10-opengl使用多个纹理示例

文章目录 环境代码CMakeLists.txt文件内容不变。fragmentShaderSource.fsvertexShaderSource.vsmain.cpp 总结 环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.…

【Hadoop】Hadoop 编译源码

目录 为什么要源码编译Hadoop 编译源码1前期工作准备2jar 包安装2.1安装 Maven2.2安装 ant2.3安装 glibc-headers 和 g2.4安装 make 和 cmake2.5安装 protobuf2.6安装 openssl 库2.7安装 ncurses-devel 库 3编译源码3.1解压源码到 /opt/ 目录3.2 进入到 hadoop 源码主目录 /opt…

课时70:流程控制_for循环_嵌套循环

2.4.4 嵌套循环 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 这里的嵌套实践,与选择语句的嵌套实践基本一致,只不过组合的方式发生了一些变化。常见的组合样式如下:for嵌套for语句for …

【Android】【Bluetooth Stack】蓝牙电话本协议分析(超详细)

1. 精讲蓝牙协议栈(Bluetooth Stack):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅,【蓝牙协议栈】专栏会持续更新中.....敬请期待! 目录 1. 协议简述 1.1 PBAP…

Qt笔记 事件处理_鼠标事件

什么是事件? 点击鼠标左键,双击鼠标左键,鼠标来回移动,按下键盘按钮,这些都是事件。 那么事件的响应机制是什么样的呢? 首先main函数中有一个QApplication,其作用是创建一个应用程序对象&…

11种创造型设计模式(下)

观察者模式 我们可以比喻观察者模式是一种类似广播的设计模式 介绍 观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象是Subject,依赖的对象是Observer,Subject通知Observer变化。 代码 说明: WeatherStat…

手撕算法-判断是不是二叉搜索树

题目描述 分析 二叉搜索树的特性就是中序遍历是递增序。既然是判断是否是二叉搜索树,那我们可以使用中序递归遍历。只要之前的节点是二叉树搜索树,那么如果当前的节点大于上一个节点值那么就可以向下判断。 如果有出现当前的节点小于上一个节点值&…

Host xxx1 has more disk space than database expected (xxx2 GB > xxx3 GB)

在nova-compute.log中有时会看到日志“Host xxx1 has more disk space than database expected (xxx2 GB > xxx3 GB)”类似日志。 查看下源码,如下: 分析: 定时任务更新主机资源到内存或者对象中,当执行检测的定时任务…

颠覆传统:Web3如何塑造未来的数字经济

引言 近年来,随着数字化时代的到来,互联网已经成为人们生活中不可或缺的一部分。然而,随着技术的不断发展和社会的不断变迁,传统的Web2模式逐渐显露出一些弊端,如数据垄断、隐私泄露等问题,这促使人们寻求…

Linux账号管理与ACL权限设置

文章目录 Linux的账户和用户组用户标识符:UID与GID用户账号用户组:有效与初始用户组groups,newgrp 账号管理新增与删除用户:useradd、相关配置文件、passwd、usermod、userdel用户功能:id、finger、chfn、chsh新增与删…

【文件操作和IO】

文件操作和IO 1.文件2. 硬盘上文件的目录结构3. 文件路径4. 文件重要分类:5. Java中操作文件5.1 Java对于文件操作的API5.2 Java中使用File类来进行文件操作5.3 File类属性5.4 构造方法5.5 方法: 6. 文件内容的读写 -- 文件流(数据流&#xf…

C++ List底层实现

文章目录 前言成员变量成员函数迭代器self& operator()前置self operator(int)后置self operator--()前置--self operator--(int)后置--bool operator!(const self & tmp)判断是否相等T* operator*() 解引用操作 list()初始化iterator begin()iterator end()const_iter…

视频无水印批量下载软件|抖音视频提取工具

视频无水印批量下载软件 在当今社交媒体充斥着大量优质视频内容的时代,很多用户都希望能够轻松下载自己喜爱的视频进行收藏或分享。为了满足用户的需求,我们特别推出了一款专业的视频无水印批量下载软件,让您可以方便快捷地获取喜爱的视频内容…

鸿蒙Harmony应用开发—ArkTS-转场动画(共享元素转场)

当路由进行切换时,可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 属性 名称参数参数描述…

springboot企业级抽奖项目业务二(用户模块)

书接上回,梅开二度 开发流程 该业务基于rouyi生成好了mapper和service的代码,现在需要在controller层写接口 实际操作流程: 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口…