Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量

server/2024/11/17 21:42:26/

Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量

论文链接:https://arxiv.org/html/2411.07021v1

论文概述

在检索增强型生成(Retrieval-Augmented Generation, RAG)系统中直接应用大型语言模型(Large Language Models, LLMs)时面临的挑战。具体来说,论文关注以下几个问题:

  • 特征局部性问题(Feature Locality Problem):由于大型语言模型的庞大参数知识库阻碍了有效使用所有语料库中的全局信息,例如,基于LLM的检索器通常输入文档的摘要而不是整个文档,这可能导致无法充分利用全局信息。

  • 检索方差问题(Retrieval Variance):由于大型语言模型固有的生成不一致性属性,当前基于LLM的检索可能会产生不可预见的方差,尤其是在输入查询或上下文大小变化时,直接导致不理想且易受攻击的性能。

  • 检索器与生成模型的分离问题:在RAG系统中,检索器和生成模型之间的分离阻碍了它们的完全集成,限制了它们在下游应用中的兼容性。

为了解决这些问题,论文提出了一个名为Invar-RAG的新颖两阶段微调架构,包括检索阶段和生成阶段。在检索阶段,通过整合基于LoRA的表示学习来解决特征局部性问题,并开发了两种模式(即不变模式和变体模式)以及不变损失来减轻LLM中的方差。在生成阶段,设计了一种精心设计的微调方法,以改进LLM,以便根据检索到的信息准确生成答案。实验结果表明,Invar-RAG在三个开放域问答(Open-domain Question Answering, ODQA)数据集上显著优于现有基线

核心内容

论文提出了一个名为Invar-RAG的新型两阶段微调架构来解决上述问题,具体方法如下:

检索阶段(Retrieval Stage)

1. LLM-based Retriever:

  • 使用基于LLaMA的双编码器架构作为检索器的骨干网络。

  • 引入了LLM-aligned Retrieval,通过小语言模型(MiniLM)将输入查询和文档表示为高维空间中的向量,然后通过KL散度构建的新损失函数将这些粗略的查询-文档对表示与LLM的表示空间对齐。

2. 表示学习(Representation Learning):

利用LoRA(Low-Rank Adaptation)架构为原始表示添加额外的适配参数,以增强检索器返回相关文档的能力。

3. 不变性损失(Invariance Loss):

通过识别对性能贡献最大的不变模式,并逐渐迫使模型依赖于这些不变模式,减少实践中不可预见的方差,增强RAG系统的鲁棒性。

生成阶段(Generation Stage)

1. 生成能力优化:

在检索到相关信息后,通过特殊设计的微调示例来优化LLM,使其能够更准确地回答给定问题。

2. 微调方法

冻结先前微调的权重,并优化生成函数,允许LLM根据检索到的文档给出正确答案。

论文总结

  • Invar-RAG框架:提出了一个新颖的框架,包含两个阶段的微调方法,分别针对检索和生成。

  • LLM-based检索方法:提出了一种新的基于LLM的检索方法,包括表示学习和不变性损失,分别解决特征局部性和检索方差问题。

  • 性能验证:在三个公共ODQA数据集上验证了Invar-RAG的性能,无论在检索性能还是生成性能上,都展示了其优越性。

通过这些方法,Invar-RAG能够有效地利用LLM的语义理解能力来检索相关信息,并生成准确的答案,同时解决了特征局部性和检索方差的问题。

编者简介

致Great,中国人民大学硕士,多次获得国内外算法赛奖项,目前在中科院计算所工作,目前负责大模型训练优化以及RAG框架开发相关工作。

个人主页:https://github.com/yanqiangmiffy

项目链接:https://github.com/gomate-community/GoMate


http://www.ppmy.cn/server/142451.html

相关文章

Python习题 250:删除空文件夹

(编码题)编写一段 Python 代码,删除指定目录的空文件夹。 参考答案: 使用 pathlib 库可以更简洁地处理文件路径。下面是一个使用 pathlib 库递归删除空文件夹的 Python 代码:from pathlib import Pathdef remove_empty_dirs(directory):# 遍历目录及其子目录for path in…

Linux 进程信号初识

目录 0.前言 1.什么是信号 1.1生活中的信号 1.2 OS中的信号 2.认识信号 2.1信号概念 2.2查看信号 2.3 signal函数 2.4代码示例 3. 信号处理方式 3.1 忽略信号 3.2 默认处理 3.3 自定义处理 4.小结 (图像由AI生成) 0.前言 在之前的学习中,我…

Redis 字符串(String)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME实例 redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> GET w3ckey "redis"在以上实例中我…

【回溯法】——分割回文串

131. 分割回文串 一、题目难度 中等 二、相关标签与相关企业 [相关标签] [相关企业] 三、题目描述 给你一个字符串 s s s,请你将 s s s 分割成一些子串,使每个子串都是回文串。返回 s s s 所有可能的分割方案。 四、示例 示例1 输入&#xf…

Bugku CTF_Web——点login咋没反应

Bugku CTF_Web——点login咋没反应 进入靶场 随便输个试试 看来确实点login没反应 抓包看看 也没有什么信息 看了下源码 给了点提示 一个admin.css try ?12713传参试试 拿到一个php代码 <?php error_reporting(0); $KEYctf.bugku.com; include_once("flag.php&q…

Kafka-Controller选举

一、上下文 《Kafka-broker粗粒度启动流程》博客中我们分析了broker的大致启动流程&#xff0c;这个时候每个broker都不是controller角色&#xff0c;下面我们就来看下它是如何选举出来的吧 二、设置ZooKeeper ‌ZooKeeper是一个开源的分布式协调服务&#xff0c;主要用于分…

机器学习-4:机器学习的建模流程

机器学习的建模流程 流程为&#xff1a; 原始数据 --> 数据预处理 --> 特征工程 --> 建模 --> 验证。 原始数据收集 所有AI或机器学习的基础就是数据&#xff0c;没有数据就什么都做不了&#xff0c;在搭建一个系统之前首要考虑的就是有没有足够多的数据可以支撑这…

VMware 17虚拟Ubuntu 22.04设置共享目录

VMware 17虚拟Ubuntu 22.04设置共享目录 共享文件夹挂载命令&#xff01;&#xff01;&#xff01;<font colorred>配置启动自动挂载Chapter1 VMware 17虚拟Ubuntu 22.04设置共享目录一、卸载老版本二、安装open-vm-tools<font colorred>三、配置启动自动挂载四、添…