论文 | Retrieval-Augmented Generation for Natural LanguageProcessing: A Survey 面向自然语言处理的检索扩展生成研究综述

大型语言模型(LLMs)凭借其庞大的参数规模,在多个领域取得了显著成功,成为自然语言处理(NLP)的基础。然而,它们仍面临三大关键问题:

  1. 幻觉(Hallucination) —— 模型可能生成内容流畅但事实错误的回答;

  2. 知识更新困难 —— 更新模型内部知识需重新训练或微调,成本高昂;

  3. 缺乏领域专用知识 —— 通用 LLM 难以满足特定领域的专业需求。

为弥补这些不足,检索增强生成(RAG) 被提出,它通过引入外部知识库来增强 LLM 的能力。本文系统回顾了 RAG 的关键技术,尤其关注其核心模块——**检索器(retriever)检索融合(retrieval fusion)**方法。

文章内容

  • 系统性地介绍了 RAG 的各个组成部分,包括从构建到查询的检索器细节,以及检索融合的技术,并提供了教程代码。

  • 展示了不同的 RAG 训练策略,包括带/不带数据存储更新的 RAG。

  • 进一步探讨了 RAG 在下游 NLP 任务和实际 NLP 场景中的应用。

  • 最后指出了 RAG 值得探索的未来方向以及亟需解决的主要挑战。

检索增强生成(Retrieval-Augmented Generation, RAG)概述

对 RAG 在自然语言处理(NLP)中的整体框架进行介绍。正如图 1 所示,RAG 通常由三个模块组成:检索器(retriever)生成器(generator)检索融合(retrieval fusions)

1. 检索器模块(Retriever)
检索器通常包含三个核心组件:

  • 编码器(encoder):将输入编码为向量表示(embeddings)。

  • 高效索引(efficient indexing):支持近似最近邻搜索(Approximate Nearest Neighbor, ANN)。

  • 数据存储(datastore):以键值对(key-value pairs)的形式存储外部知识。

检索器的主要挑战在于检索效率检索质量之间的平衡:

  • 检索效率(retrieval efficiency):指获取相关信息的速度,包括编码加速、索引优化、数据存储中的批量查询等。

  • 检索质量(retrieval quality):指检索到信息的相关性,包括切分表示学习(chunk representation learning)、先进的近似最近邻搜索算法等。

2. 检索融合(Retrieval Fusions)
检索融合的目标是利用检索到的信息增强生成效果。主要分为三类:

  • 基于查询的融合(query-based fusion):在将输入送入生成器之前,将检索结果拼接或注入到输入中。

  • 基于 logits 的融合(logits-based fusion):在生成器输出层(logits)阶段进行融合,将检索结果的 logits 融合进来,使输出更鲁棒。

  • 潜在空间融合(latent fusion):将检索结果的表示引入生成器的潜在表示中,从而在隐式层面提升模型性能。

3.生成器模块(Generator Module)

生成器模块可以分为两类:默认生成器(default generators)和检索增强生成器(retrieval-augmented, RA generators)。

默认生成器包括大多数经过预训练或微调的大型语言模型,如 GPT 系列模型、Mistral 模型 以及 Gemini 系列模型。检索增强生成器(RA generators)指的是在预训练或微调过程中包含检索融合模块的生成器,例如 RETRO 和 Enc-Dec 。这些生成器能够生成响应或进行预测。

RAG 的工作流程包括三个步骤:
(1) 根据给定输入,从外部数据库中检索相关信息;
(2) 基于融合技术,将检索到的信息与输入或中间状态进行融合;
(3) 生成器根据输入及相应的检索结果进行预测。

1.检索器(Retriever)

图 2 展示了使用检索器的两个阶段:首先是构建检索器,然后是查询检索器。接下来的章节将详细介绍每个阶段的具体内容。

使用大型自然语言语料库来构建一个检索器,该过程包括三个步骤:

  1. 语料切分(chunking corpus)

  2. 编码切分块(encoding chunks)

  3. 构建向量数据库(building the vector database)

其中,构建向量数据库的过程包括建立 近似最近邻(Approximate Nearest Neighbor, ANN)索引,并以 键值对(key-value pairs) 的形式存储数据。

语料切分(Chunking Corpus):语料切分技术通常指将大型文档划分为较小的文本块(text chunks)

其核心思想包括以下两点:
(1) 用于建立索引的文本或向量表示应当在语义上相对独立,每个块包含一个核心思想,便于模型编码。过短的文本往往语义模糊,例如单词 “apple” 可能指水果,也可能指公司;
(2) 使用基于 Transformer 的模型对长序列进行编码会造成巨大的计算与资源开销,而将文本分成较短的块可以显著加速编码过程并节省内存成本。

因此,语料切分的主要挑战在于如何找到最佳的块大小(chunk size),以在语义完整性与编码效率之间取得平衡。

为解决这一挑战,在确定切分大小时需要考虑以下三个关键因素:
(1) 任务特性(Task’s property):不同任务可能适合不同类型的切分。例如,问答任务通常更适合短语级切分,而摘要任务则更偏好长文档切分。
(2) 编码器特性(Encoder’s property):不同的编码器模型在处理不同长度文本时表现不同。例如,sentence-transformer更适合单句编码,而 text-embedding-ada-002 在处理长文本时表现更优。
(3) 查询特性(Query’s property):用户查询的长度应与切分块的长度相匹配,以便使检索块中的上下文信息量与查询相协调,从而提高检索结果的相关性。例如,用短语构建的检索数据库对长文档查询几乎无效。

总的来说,并不存在统一的“最佳切分规则”,具体的切分策略应根据 RAG 的应用场景而定。

语料切分方法主要分为三类:

  1. 固定长度切分(Chunking with fixed length):最简单的方法,通过设置一个长度超参数顺序地分割文档。

  2. 语义切分(Semantic chunking):根据语义边界(如句号、换行符)划分文档,这些标记通常表示句子的结束。主流 NLP 工具包,如 NLTKspaCy ,均提供了便捷的句子切分方法。

  3. 基于内容的切分(Content-based chunking):根据文档的结构特征进行分块。例如,电子病历可以根据章节划分,程序代码可以按函数块分割。

检索融合(Retrieval Fusions)

检索融合(Retrieval Fusions)是指如何有效地利用已检索到的外部知识来提升生成模型(generator)的性能。
根据融合方式的不同,检索融合大致分为三类:

  1. 基于查询的融合(Query-based Fusion)

  2. 基于 logits 的融合(Logits-based Fusion)

  3. 基于潜在表示的融合(Latent Fusion)

融合方式位置优点缺点代表方法
文本拼接输入层简单直接、可用于黑箱 LLM长度限制明显GPT-4 + RAG prompt
特征拼接编码层表达力强内存成本高FID
logits 融合输出层提高鲁棒性与精度需访问 logits,不适用于黑箱kNN-LM, kNN-MT
融合类型引入位置特点优点代表方法
Logits 融合 - Ensemble输出层固定权重融合简单稳定kNN-LM, kNN-MT
Logits 融合 - Calibration输出层动态置信度调整提升翻译/生成可靠性Confidence-enhanced kNN-MT
Attention 潜在融合隐层(Cross-Attention)结构性强,效果突出高性能、高复杂度RETRO, Li [93], Wu [154]
Weighted-addition 潜在融合隐层(向量加权)轻量高效易扩展、低计算量EAE, ReFusion

生成器(Generators)

本节介绍了典型的生成器(Generators)检索增强生成器(Retrieval-Augmented Generators, RA Generators)
这些模型通常都在大规模数据集上进行预训练,是整个 RAG(Retrieval-Augmented Generation)框架的核心部分。

普通生成器(Default Generators)

目前主流的生成器基本上都是基于 Transformer 架构 的大型语言模型(LLMs),通过对 Transformer 结构进行裁剪或改进而形成不同的系列模型。

常见的代表模型包括:

  • LLaMA 系列模型

  • GPT 系列模型 

  • Gemini 系列模型 

这些模型的共同点是:
它们去掉了 Transformer 的编码器部分(Encoder)
仅保留解码器部分(Decoder),并在其中包含:

  • 注意力模块(Attention Module)

  • 前馈网络模块(Feed-Forward Network, FFN)

生成器通常主要采用潜在融合(latent fusion)的方式,将检索到的知识融入大型语言模型(LLM)隐藏状态(hidden states)中。

RAG 训练(RAG Training)**主要讲述了如何训练检索增强生成模型(RAG),并将其分为两大类:

  1.  不更新数据存储的 RAG 训练(RAG without Datastore Update)
  2. 更新数据存储的 RAG 训练(RAG with Datastore Update)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值