type
status
date
slug
summary
tags
category
icon
password
💡

tl;dr

这篇文章主要介绍了RAG(检索增强生成)技术,并从三个方面阐述了其逻辑结构: 
  • 增强阶段:文章首先介绍了RAG在不同阶段(预训练、微调、推理)的应用,并详细解释了每个阶段的特点和优势。
  • 增强源: 文章接下来分析了不同类型的数据源(非结构化数据、结构化数据、LLM生成的内容)如何用于增强RAG,并列举了一些代表性模型。
  • 增强过程:最后,文章讨论了三种改进RAG检索过程的方法:迭代检索、递归检索、自适应检索,并分析了每种方法的优缺点和应用场景。
notion image

RAG增强阶段

预训练阶段RAG的增强

在预训练阶段,RAG技术主要通过基于检索的策略来增强预训练模型(PTM),以提升其在开放领域问答等任务上的表现。
增强方法主要包括以下几种:
  • REALM 模型: 采用结构化、可解释的知识嵌入方法,将预训练和微调构架为遮蔽语言模型(MLM)框架内的“检索-预测”工作流。
  • RETRO 模型: 利用检索增强技术进行大规模从零开始的预训练,在减少模型参数的同时,在困惑度方面超越了标准GPT模型。RETRO模型在GPT模型基础结构上增加了一个额外的编码器,专门用于处理从外部知识库检索到的实体特征。
  • Atlas 模型: 将检索机制纳入T5架构的预训练和微调阶段。它使用预训练的T5初始化“编码器-解码器”语言模型,并使用预训练的Contriever作为密集检索器,提高了复杂语言建模任务的效率。
  • COG 模型: 引入了一种全新的文本生成方法,模仿从现有集合中复制文本片段。COG模型利用高效的向量搜索工具,计算并索引文本片段的上下文意义表示,与RETRO模型相比,在问答和领域适应等领域展现了卓越的性能。
  • RETRO++ 模型: 随着模型参数增长规律的推动,自回归模型成为主流。研究人员正在将RAG方法扩展到预训练的更大模型上,RETRO++ 模型就是这一趋势的典型例子,它通过扩大模型参数,在保持或提高性能的同时,将检索机制整合到自回归语言模型的预训练中。
增强预训练的优势包括:
  • 构建强大的基础模型: 在使用更少参数的前提下,在困惑度、文本生成质量和特定任务性能方面超越标准GPT模型。
  • 擅长处理知识密集型任务:
  • 促进特定领域模型的发展: 通过在专业语料库上训练。
实证证据表明,预训练阶段应用RAG技术能够在以下方面取得显著改进:
  • 文本生成质量
  • 事实准确性
  • 减少有害内容
  • 下游任务能力

微调阶段RAG的增强

在微调阶段,RAG技术的增强主要集中在检索器的优化上,目标是提高其语义表示质量,使其更好地与LLM的偏好对齐,从而提高整体性能。
微调检索器的主要方法包括:
  • 使用语料库直接微调嵌入模型: 这种方法可以提高检索器对特定领域知识的理解能力,从而更准确地检索相关信息。
  • 通过反馈信号对齐检索器和LLM: 通过将检索器的输出作为LLM的输入,并将LLM的反馈信号用于调整检索器的参数,可以使两者更好地协同工作。
  • 针对特定下游任务微调检索器: 这种方法可以提高检索器对特定任务的适应性,例如问答、摘要、翻译等。
  • 任务不可知微调: 这种方法旨在提高检索器在多任务场景中的通用性,使其能够适应不同的任务需求。
协同微调检索器和生成器
除了单独微调检索器,还可以协同微调检索器和生成器,以进一步提高模型的整体性能。例如,RA-DIT 模型提出了一种轻量级的双指令调整框架,可以有效地为任何LLM增加检索能力。检索增强的指令性微调更新了LLM,指导它更有效地使用检索到的信息并忽略分散注意力的内容。
微调阶段增强的优势:
  • 提高语义表示质量: 微调可以使检索器更好地理解语义信息,从而更准确地检索相关内容。
  • 增强模型泛化能力: 协同微调检索器和生成器可以避免分别训练可能导致的过拟合问题。
  • 提高任务适应性: 针对特定下游任务进行微调可以使模型更好地适应特定任务需求。
微调阶段增强的局限性:
  • 需要专门的RAG微调数据集: 微调需要大量的标注数据,这对于一些特定领域或低资源语言来说可能是一个挑战。
  • 计算资源消耗大: 协同微调检索器和生成器需要大量的计算资源,这对于一些小型研究团队来说可能是一个障碍。

推理阶段RAG的增强

在推理阶段,高级RAG通过引入更丰富的上下文来克服初级RAG的限制,主要体现在以下几个方面:
1. 增强上下文
  • DSP框架: DSP框架利用冻结的语言模型(LM)和检索模型 (RM) 之间自然语言文本的复杂交换来丰富上下文,从而提高生成结果的质量。
  • PKG方法: PKG方法为LLM配备了知识引导模块,允许在不修改LM参数的情况下检索相关信息。它结合了本地模型和LLM模型,其中本地模型基于开源的自然语言模型(Llama),可以存储离线的领域知识,并将领域知识转化成参数输出。这些参数输出与问题一起传入大模型,实现更复杂的任务执行。
  • CREAICL方法: CREAICL方法采用同步检索跨语言知识来增强上下文。
  • RECITE方法: RECITE方法是一种新的语言模型提示方法,它通过提示模板使模型在生成答案之前从记忆中找到其训练语料库中的相关段落,然后生成上下文。
2. 处理多步推理任务
为了进一步精炼RAG在推理阶段的处理过程,一些研究提出了针对需要多步推理任务的方法:
  • ITRG方法: ITRG方法以迭代的方式检索信息来确定正确的推理路径,从而提高了任务适应性。
  • ITER-RETGEN方法: ITER-RETGEN方法采用迭代策略,将原始查询与生成的伪文档合并形成新的查询,将“检索增强型生成”和“生成增强型检索”在循环过程中交替进行。

RAG增强源 

非结构化数据在RAG中的增强

非结构化数据增强是RAG增强源的重要组成部分,主要利用纯文本信息来增强模型的性能。
非结构化数据的来源
  • 语料库: 语料库是RAG增强最常用的非结构化数据来源,包括用于大型模型微调的提示数据和跨语言数据。
  • 维基百科: 维基百科是一个常用的语料库,包含大量的文本信息,可以用于增强RAG模型的知识储备。
非结构化数据的检索单元
非结构化数据的检索单元可以是不同粒度的文本片段,例如:
  • 标记: 例如 kNN-LM 模型
  • 短语: 例如 COG 模型
  • 文档段落:
检索单元粒度的选择
选择合适的检索单元粒度需要权衡精确性和检索复杂性:
  • 更细的粒度: 提供更高的精确性,但会增加检索的复杂性。
  • 更粗的粒度: 检索效率更高,但可能会引入一些噪声信息。
非结构化数据增强的优势
  • 易于获取: 纯文本数据易于收集和处理,可以快速构建大规模的知识库。
  • 灵活性高: 非结构化数据可以用于各种不同的RAG任务,例如问答、摘要、翻译等。
非结构化数据增强的局限性
  • 信息噪声: 非结构化数据中可能包含一些噪声信息,这会影响RAG模型的性能。
  • 语义理解: RAG模型需要对非结构化数据进行语义理解,这对于一些复杂的语言现象来说仍然是一个挑战。

结构化数据在RAG中的增强

结构化数据,例如知识图谱(KG),是RAG增强源中非常重要的一部分,能够提供高质量的上下文信息,并有效减少模型幻觉的产生。与非结构化数据相比,结构化数据具有以下优势:
  • 信息准确性高: 结构化数据通常经过人工验证,信息来源可靠,可以提高RAG模型生成答案的可信度。
  • 语义关系明确: 结构化数据以图的形式存储信息,节点之间关系明确,方便模型理解语义信息,进行推理和问答。
结构化数据在RAG中的应用
目前,一些研究已经开始探索将结构化数据应用于RAG,例如:
  • RET-LLM模型: 从过去的对话中构建知识图谱记忆,用于未来参考,增强模型对对话历史的理解和记忆能力。
  • SUGRE模型: 使用图神经网络(GNN)对相关KG子图进行编码,通过多模态对比学习确保检索到的事实和生成的文本之间的一致性,提高模型生成答案的准确性和一致性。
  • KnowledGPT模型: 生成KB搜索查询,并将知识存储在个性化基础上,增强了RAG模型的知识丰富性和上下文性,使模型能够根据用户需求进行个性化的知识检索和问答。
  • G-Retriever 模型: 将图神经网络(GNNs)、LLM 和 RAG 结合起来,通过对 LLM 进行软提示来增强图理解和问答能力,并采用 Prize-Collecting Steiner Tree (PCST) 优化问题进行目标图检索。
结构化数据增强的挑战
尽管结构化数据增强具有很多优势,但也面临一些挑战:
  • 构建成本高: 构建高质量的知识图谱需要大量的人力和时间成本,这对于一些特定领域或低资源语言来说是一个挑战。
  • 数据更新: 知识图谱需要不断更新,以保持信息的时效性,这需要一定的维护成本。
  • 模型适配: 现有的LLM模型大多是基于文本数据训练的,需要进行一定的适配才能有效地处理结构化数据。
未来发展方向
未来,结构化数据增强将会是RAG发展的重要方向,研究重点包括:
  • 自动构建知识图谱: 研究如何利用LLM自动从文本数据中抽取知识,构建知识图谱,降低构建成本。
  • 多模态知识融合: 研究如何将文本、图像、视频等多模态数据融合到知识图谱中,增强模型对复杂信息的理解能力。
  • 模型架构优化: 研究如何优化LLM模型架构,使其能够更有效地处理结构化数据,提高RAG模型的性能。

在 RAG 中使用 LLM 增强数据

在 RAG 中,利用 LLM 生成的内容来增强数据是一种新兴的研究趋势,其目的在于克服外部辅助信息的局限性,充分挖掘 LLM 内部的知识潜力。
具体方法包括:
  • 选择性应用检索增强: SKR 模型根据对问题的分类(已知或未知)来选择性地应用检索增强,从而提高检索效率。
  • 用 LLM 生成器替换检索器: GenRead 模型直接使用 LLM 生成上下文信息,而非从外部知识库中检索。研究发现,由于 LLM 生成的内容与因果语言建模的预训练目标更一致,其包含的答案往往更准确。
  • 构建自记忆池: Selfmem 模型利用检索增强的生成器迭代地创建一个无界的记忆池。它使用记忆选择器来选择输出,并将这些输出作为原始问题的对偶问题,从而实现生成模型的自我增强。
这种方法的优势在于:
  • 减少对外部知识库的依赖: 利用 LLM 生成内容可以减少模型对外部知识库的依赖,尤其是在某些特定领域或低资源语言缺乏高质量外部知识库的情况下,更具优势。
  • 提高信息的一致性: LLM 生成的内容与模型自身的知识体系更一致,可以避免从外部知识库中检索到的信息与模型知识体系产生冲突,从而提高生成答案的一致性和可信度。
  • 实现个性化知识增强: 通过对 LLM 进行微调,可以使其生成更符合用户需求的个性化知识,从而实现更精准的知识增强。
然而,这种方法也面临一些挑战:
  • 生成内容的质量控制: 如何确保 LLM 生成的内容的准确性和可靠性是一个重要问题。需要开发相应的评估机制和质量控制方法,以保证生成内容的质量。
  • 计算资源消耗: 使用 LLM 生成内容需要消耗大量的计算资源,这对于一些资源有限的研究团队来说是一个挑战。

RAG增强过程

RAG 增强过程中的迭代检索

迭代检索是 RAG 增强过程中的一个重要技术,它允许模型进行多次检索,逐步丰富上下文信息,并最终生成更准确、更全面的答案。
迭代检索的定义
在 RAG 模型中,迭代检索是一个基于初始查询以及截至目前生成的文本反复收集文档的过程。简单来说,模型会根据用户的初始问题进行第一次检索,获取相关文档。然后,模型会根据已检索到的文档和生成的中间答案,生成一个新的查询,并再次进行检索,获取更多相关文档。这个过程会不断重复,直到模型认为已经获取了足够的信息。
迭代检索的优势
  • 增强信息的深度和相关性: 通过多次检索迭代,模型可以获取更多与问题相关的上下文信息,从而提高答案的深度和相关性。
  • 提高答案生成的健壮性: 迭代检索可以帮助模型克服单次检索可能存在的偏差或遗漏,从而提高答案生成的健壮性。
  • 支持多步推理: 对于需要多步推理才能回答的问题,迭代检索可以帮助模型逐步收集必要的信息,最终得出正确答案。
迭代检索的应用
  • ITRG 方法: ITRG 方法以迭代的方式检索信息来确定正确的推理路径,从而提高了任务适应性。
  • ITER-RETGEN 方法: ITER-RETGEN 方法采用迭代策略,将原始查询与生成的伪文档合并形成新的查询,将“检索增强型生成”和“生成增强型检索”在循环过程中交替进行。

RAG 增强过程中的递归检索

递归检索通常用于信息检索和自然语言处理领域,旨在提升搜索结果的深度和相关性。在 RAG 中,递归检索可以用于处理需要逐步方法以收敛到最终答案的复杂或多步查询,例如学术研究、法律案例分析或某些类型的数据挖掘任务。
递归检索的实现方式
递归检索的实现方式主要有两种:
  • 利用结构化索引: 递归检索可以通过使用结构化索引以分层方式处理和检索数据。例如,在检索长文档或 PDF 文件时,可以先对文档的部分内容进行摘要,然后基于摘要进行检索。之后,再在文档内进行二次检索,以精确定位相关信息。
  • 迭代优化查询: 递归检索还可以通过迭代优化查询的方式实现。模型会根据前一次检索的结果,生成一个新的查询,并再次进行检索。这个过程会不断重复,直到找到最相关的信息。
递归检索的应用
  • IRCoT 方法:IRCoT 方法使用思维链来指导检索过程,并利用获得的检索结果优化思维链,从而提高模型在多步推理问题上的性能。
递归检索的优势
  • 提高检索深度: 递归检索可以帮助模型深入挖掘信息,找到更深层次的关联信息。
  • 提高检索相关性: 通过迭代优化查询或分层检索,递归检索可以帮助模型找到更符合用户需求的信息。
  • 支持复杂查询: 递归检索可以帮助模型处理需要多步推理的复杂查询,例如需要整合多个信息源才能回答的问题。
递归检索的局限性
  • 效率问题: 递归检索需要进行多次检索,可能会影响模型的效率。
  • 复杂性: 递归检索的实现方式相对复杂,需要设计合理的检索策略和算法。

RAG 增强过程中的自适应检索

自适应检索是 RAG 增强过程中的一个重要技术,它可以让 LLM 主动判断何时需要检索、检索什么内容,从而提高检索效率和信息相关性。
自适应检索的实现机制
自适应检索通常使用一些特殊的机制来让 LLM 判断是否需要进行检索,例如:
  • 置信度阈值: Flare 模型会监控生成过程的置信度,当生成的词语概率低于预设的阈值时,就会触发检索机制。
  • 反射标记: Self-RAG 模型引入了一种名为“反射标记”的机制,允许模型反思自己的输出。反射标记有两种类型:“检索”和“评论”。模型可以根据生成的反射标记来决定是否需要检索,或者也可以根据预设的阈值来触发检索。
自适应检索的优势
  • 提高检索效率: 自适应检索可以让 LLM 避免不必要的检索,从而提高检索效率。
  • 提高信息相关性: 自适应检索可以让 LLM 只检索与当前任务相关的信息,从而提高信息相关性。
  • 增强模型自主性: 自适应检索可以让 LLM 更自主地控制检索过程,从而提高模型的自主性和灵活性。
自适应检索的应用
除了 Flare 和 Self-RAG 之外,还有一些其他的研究工作也探索了自适应检索的应用,例如:
  • WebGPT 模型:WebGPT 模型使用强化学习来训练 GPT-3 模型,使其能够在生成文本时自主使用搜索引擎。
  • Graph-Toolformer 模型:Graph-Toolformer 模型将检索过程分为不同的步骤,LLM 可以根据需要主动使用检索器。
 
fish终端美化Widows 和Linux离线安装conda环境