逐步实践复现 SELF-RAG

news2024/11/15 17:39:25

SELF-RAG 简介

SELF-RAG(Self-Reflective Retrieval-Augmented Generation)是一种检索增强生成(RAG)的框架,它通过自我反思学习检索、生成和批判,以提高大型语言模型(LLM)的质量和真实性。

SELF-RAG的工作流程主要包括以下几个步骤:

  1. 按需检索(Retrieval as Needed):首先,SELF-RAG使用特殊的LLM对问题进行首次结果生成,这个LLM在生成过程中会输出一些特殊的Token,称为Reflection Token。如果生成的结果表明需要检索,则进入检索阶段;如果不需要检索,则直接返回结果。

  2. 检索与生成(Retrieval and Generation):如果需要检索,SELF-RAG会检索出相关文档,并将每个文档与问题一起输入到LLM中,获取每个文档的生成结果。这一过程可能涉及到并发执行以提高效率。

  3. 评估与选择(Evaluation and Selection):对每个文档的生成结果进行评估,使用Reflection Token来计算每个文档的得分,并选择得分最高的结果作为最终输出。

SELF-RAG与普通RAG的主要区别在于:

  • SELF-RAG可以根据生成的结果判断是否需要检索,而普通RAG每次查询都需要检索。
  • SELF-RAG只用单个文档作为上下文生成结果,而普通RAG将所有检索到的文档作为上下文。
  • SELF-RAG对生成结果有评估和挑选的过程,普通RAG则没有。
  • SELF-RAG使用的是经过特殊训练的LLM,而普通RAG使用的是通用LLM 1。

SELF-RAG通过使用Reflection Token来实现更智能的检索和生成控制,提高了生成文本的准确性和质量。此外,SELF-RAG的训练过程包括训练一个评估模型来生成Reflection Token,然后使用这些Token更新训练语料库,最后训练最终的生成模型来预测输出内容和Reflection Token。

在实际应用中,SELF-RAG可以构建完整的应用,实现从模型测试到构建Self-RAG应用的流程,包括模型的微调方法和应用的优化思考。此外,SELF-RAG框架还包括了对生成内容的评估参数logprobs的使用,这是一个重要的参数,用于计算每个生成的token的概率对数,从而评估生成结果的质量。

总结

SELF-RAG的工作流程如下所述:首先,我们输入一个问题,系统会先进行判断,是否需要进行信息检索。在这个例子中,系统检索到了3个相关文本。接着,大模型会针对这3个文本,并行地生成3个不同的子回答。随后,大模型将进行进一步判断,生成3个评估结果:一是检索到的文本是否与问题相关,二是生成的答案是否基于检索文本(即是否凭空捏造),三是生成的答案是否有助于回答问题。根据这三个评估结果,我们对检索文本和子回答进行排序,将那些相关性强、内容真实且有助于回答问题的部分置于前列。例如,将相关性高且内容可靠的检索文档排在首位。接下来,我们将这些新的子回答和文档片段再次进行检索,如此循环往复,直至最终生成一个最佳回答。

LangGraph 简介

LangGraph是LangChain平台最近推出的一项关键功能,它代表了LangChain向多代理框架发展的重要步伐。那么,如何实现上文提到的类似代理的功能呢?我们不必手动编写繁琐的判断函数,因为LangGraph为我们提供了一个高效的解决方案。

LangGraph建立在LangChain之上,它使得开发者能够更加轻松地构建强大的代理系统。以下是关于LangGraph的官方资源:

  • 官方博客:LangGraph on LangChain Blog
  • 使用文档:LangGraph Documentation

LangGraph的核心是以图形化的方式运行,它包含三个主要元素:StateGraph、Node和Edge。

  • StateGraph:这是图形的状态,它用于存储代理运行时的信息。在SELF-RAG中,StateGraph负责保存运行过程中产生的各种数据,如召回的文档、问题、子答案等,这些数据通常以字典的形式进行存储。
  • Node:代表图形中的节点,它们是代理执行过程中的关键步骤。例如,召回文档和根据文档生成答案都是独立的节点。
  • Edge:连接各个节点的边,它们代表了代理的工作流程方向。Edge通常负责执行文本分类的任务,例如决定是否进行检索。如果需要检索,流程就会转向检索节点;如果不需要,则直接由大模型生成答案。

通过这种方式,LangGraph为代理的构建和运行提供了一个清晰且易于管理的框架。

复现 SELF-RAG

构建Agent工作流程图如下所示:

图片

  1. 问题输入与文档检索:首先,用户输入一个问题,召回文档集,此检索过程是固定的。

  2. 文档相关性评估:接着,我们评估这些召回的文档是否与问题相关。将相关的文档保留,不相关的文档则被排除。这个过程实际上是对文档进行了一次筛选和排序。

    f"""你是一个评分员,正在评估检索到的文档与用户问题的相关性, \n
        以下是检索到的文档: \n {context} \n
        这是用户的问题: {question} \n    
        如果文档包含与用户问题相关的关键词或语义意义,将其评分为相关. \n
        只输出一个二分类的评分 'yes' 或者 'no' 用来表示文档是否与问题相关."""
  3. 文档存在性判断:然后,我们检查是否有相关文档。如果没有相关文档,系统将进行问题转写;如果有相关文档,则基于这些文档生成答案。

  4. 答案支持性判断:在这一步,我们需要判断生成的答案是否得到了召回文档的支持,即检查大模型是否忠实于文档内容,没有胡编乱造。如果答案得到支持,则继续下一步;如果答案不支持,则需要重新生成回答。

    f"""你是一个评分员,在评估一个答案是否基于现有的事实依据. \n
        以下是事实依据:
        \n ------- \n
        {documents}
        \n ------- \n
        以下是回答: {generation}
        只输出一个二分类的评分 'yes' 或者 'no' 用来表示答案是否基于事实的支持."""
  5. 最终评分准备:在这个节点,我们只进行图状态的变更,不需要调用大模型进行任何操作。

  6. 答案有用性判断:最后,我们评估生成的答案是否有助于解决问题。如果答案有用,代理任务结束;如果答案无用,则进行问题转写,并重新开始整个过程。

    f"""你是一个评分助手用于判断回答是否解决了问题. \n
        以下是回答:
        \n ------- \n
        {generation}
        \n ------- \n
        H以下是问题: {question}
        给出一个二分类评分 'yes' 或者 'no' 提示答案是否对解决问题有用."""

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

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

相关文章

谷粒商城实战笔记-28-前端基础-技术栈简介

文章目录 一,学习目标1,VSCode的使用2,开发语言ES6的学习目标3,Node.js的学习目标4,Vue的学习目标5,Babel的学习目标6,webpack的学习目标 二,前后端技术栈的比较 本节的主要内容是介…

KEIL下载芯片包记录

第一步 第二步 第三步

oracle 23ai新的后台进程bgnn介绍

前言 昨天发文研究了哪些oracle 后台不能杀 具体文章如下链接 oracle哪些后台进程不能杀?-CSDN博客 其中23ai中新增了一个后台进程bgnn 但是在oracle 23ai database reference中并没有找到该后台进程 有点不甘心就开了个SR,找oracle 官方来看看这个后…

Go语言---定时器

定时器 Timer-只响应一次 Timer 是一个定时器,代表未来的一个单一事件,可以告诉 timer 要等待多长时间,它提供一个 channel,在将来的那个时间那个 channel 提供了一个时间值。 2s后,往timer.C写数据,有…

智慧教育解决方案PPT(44页)

1. 教育信息化1.0与2.0 教育信息化1.0注重全体教师和学生的教学与学习应用,以及数字校园建设。2.0则强调宽带网络、优质资源和网络学习空间的普及,提高信息化应用水平和师生信息素养,建立教育资源和管理公共服务平台,推动“互联网…

【系统架构设计师】九、软件工程(项目管理|进度管理|软件配置管理|软件质量管理|软件风险管理 )

目录 十四、项目管理 14.1 软件进度管理 14.1.1 工作分解结构 14.1.2 Gantt 图 和 PERT 图 14.1.3 关键路径法 14.1.4 浮动时间 14.2 软件配置管理 14.3 软件质量管理 14.4 软件风险管理 相关推荐 历年真题练习 十四、项目管理 软件项目管理的对象是软件工程项目。…

3.Softmax回归

回归和分类 回归估计一个连续值 分类预测一个离散类别 Softmax回归实际是一个分类问题 从回归到多类分类 对类别进行一位有效编码 y [ y 1 , y 2 , ⋯ , y n ] T y[y_1,y_2,\cdots,y_n]^T y[y1​,y2​,⋯,yn​]T,如果是第i类,则值为1,否则为0 使用…

摸鱼大数据——Kafka——Kafka的shell命令使用

Kafka本质上就是一个消息队列的中间件的产品,主要负责消息数据的传递。也就说学习Kafka 也就是学习如何使用Kafka生产数据,以及如何使用Kafka来消费数据 topics操作 注意: 创建topic不指定分区数和副本数,默认都是1个 分区数可以后期通过alter增大,但是…

k8s集群离线部署

K8s离线部署 环境 目标 k8s离线部署 步骤 部署docker 详情见文章:《离线安装docker及后端项目离线打包》 https://blog.csdn.net/qq_45371023/article/details/140279746?spm1001.2014.3001.5501 所用到的所有文件在: 链接:https://pan…

摸鱼大数据——Kafka——Kafka的集群搭建

1、软件安装 搭建Kafka集群 1、下载安装 安装包下载地址:https://kafka.apache.org/download 2、将Kafka的安装包上传到虚拟机,并解压 cd /export/software/ tar -xzvf kafka_2.12-2.4.1.tgz -C ../server/ 配置软连接: cd /export/server ln -s kaf…

Debezium日常分享系列之:Debezium 3.0.0.Alpha1 Released

Debezium日常分享系列之:Debezium 3.0.0.Alpha1 Released 一、重大改变Java 和 Maven 要求已更改 二、新的特征和提高MongoDB 三、更多内容 Debezium 3 的第一个预发布版本 3.0.0.Alpha1。这个版本虽然比正常的预版本要小,但高度关注几个关键点&#xff…

【漏洞复现】Splunk Enterprise for Windows 任意文件读取漏洞 CVE-2024-36991

声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。 一、漏洞描述 Splunk Enterprise 是一款强大的机器数据管理和分析平台,广泛应用于企业中,用于实…

【单片机毕业设计选题24058】-基于嵌入式的智慧酒店管理系统设计与实现

系统功能: 系统分为主机端和从机端,主机端主动向从机端发送信息和命令,从机端 收到主机端的信息后回复温湿度和光照强度信息。 从机端操作: 从机端上电后显示“欢迎使用智慧酒店系统请稍后”两秒后进入正常显示界面。 第一行显示系统状态…

文心快码——百度研发编码助手

介绍 刚从中国互联网大会中回来,感受颇深吧。百度的展商亮相了文心快码,展商人员细致的讲解让我们一行了解到该模型的一些优点。首先,先来简单介绍一下文心快码吧。 文心快码(ERNIE Code)是百度公司推出的一个预训练…

Go语言---并发编程之channel(双channel,单channel)以及应用实例(生产者消费者、打印机模型)

Channel goroutine 运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine 通过通信来共享内存,而不是其享内存来通信。 引用类型 channel 是CSP 模式的具体实现,用于多个 goroutine 通讯。其内部实现了同步,确保并发安全。 chan…

【Linux】磁盘性能压测-FIO工具

一、FIO工具介绍 fio(Flexible I/O Tester)是一个用于评估计算机系统中 I/O 性能的强大工具。 官网:fio - fio - Flexible IO Tester 注意事项! 1、不要指定文件系统名称(如/dev/mapper/centos-root),避…

vue + echart 饼形图

图表配置: import { EChartsOption, graphic } from echarts import rightCircle from /assets/imgs/index/right_circle.png export const pieOption: EChartsOption {title: {text: 100%,subtext: 游客加量,left: 19%,top: 42%,textStyle: {fontSize: 24,color:…

如何评估媒体邀约宣传的效果

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 评估媒体邀约宣传的效果是一个系统而全面的过程,它涉及多个维度的考量和分析。 一、受邀媒体的出席率: 1.受邀媒体出席率直观反映了媒体邀约的效果; …

「C++系列」一篇文章说透【存储类】

文章目录 一、C 存储类1. 类的定义2. 对象的创建3. 对象在内存中的布局4. 对象的存储位置 二、auto 存储类1. auto的基本用法2. auto与存储类的关系1) 自动存储类(最常见的)2) 静态存储类3) 动态存储类(通过new) 三、register 存储…

自学第十五天----深入理解函数上

1. 函数是什么? 维基百科中对函数的定义: 子程序 在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method, subprogram, callable unit),是一个大型程序中的某部分代码…