论文分享|RAG理论-第一篇-概述

0.前言

本系列以同济大学的检索增强生成(RAG)综述[1],ACL2023 检索增强语言模型(RALM) Tutorial[2]作为参考材料,讲解RAG的前世今身,包含概述,评估方法,检索器,生成器,增强方法,多模态RAG等内容。

本篇为概述篇,介绍RAG的基本概念技术分类

1.介绍

GPT系列,LLaMA,Gemini等取得了很好的效果,但是对于特定领域或高度专业化的用户查询,尤其是查询超出了模型的训练数据或者需要最新的信息时,大模型很容易产生错误的信息或幻觉现象,从而使得大模型的落地较为困难,一个缓解这些限制的方法是检索增强生成(RAG)。RAG将外部的数据检索整合到生成过程中,从而使模型能够提供准确且相关的回复。

[3]提出了RAG的概念,如下图,给定query先用最小内积搜索(MIPS)检索最相关的k个文档,得到相应的文档编码z,利用查询编码x和z组合输入生成器得到最终的输出。

img

RAG发展经历了几个阶段,最开始以基于Transformer预训练阶段的优化为主,接下来是一段沉寂期。直到ChatGPT的出现,RAG研究重点转向为利用LLM的能力获得更高的可控性和解决不断发展的需求,主流的研究集中在推理上,微调的研究相对较少。随着GPT4的出现,研究重点再次转变为混合方法,即推理,微调和预训练三种方法及结合。

img

2.定义

下图是[1]中一个简单的RAG应用流。包含用户输入,文档查询,文档与提示组合,获得输出四个步骤。

img

下图是[2]中定义的检索增强生成的基本组成,即必要条件为:推理阶段使用外部数据库进行辅助生成

img

[2]中主要认为检索增强生成主要需要解决3个问题,即检索什么,怎样使用检索结果,什么时候检索。下列小括号中为代表性方法。

  • 检索什么分为文本块(REALM[8] ICRALM[4]),词语(KNN-LM[5]),实体(EASE[9]),知识图谱(KGALM[10])等。综合来看效率最高的方法为文本块。
  • 怎样使用检索结果分为输入层使用(REALM[8] ICRALM[4] DSP[12]),中间层使用(RETRO[11]),输出层使用(REPLUG[7] KNN-LM[5] InterGen[13])。其中中间层使用往往需要修改模型结构以及重新训练,因此一般使用输入层和输出层使用的方法。
  • 什么时候检索分为单次检索(REALM[8] REPLUG[7] SKR[14]),多次检索(ICRALM[4] Atlas[17]),适应性检索(Adapt-KNN-LM[6] FLARE[15] RAVEN[16])。

img

总的来说RAG融合了信息检索技术上下文学习技术来提升LLM能力。现在的研究一般将RAG分为三步进行:

  • 语料被分割为多个离散的文本块,同时创建向量索引
  • RAG使用向量检索得到相关的文本块
  • 模型结合用户输入与检索到的文档进行推理生成获得相应的输出

3.RAG框架

下图为三种RAG框架的展示与对比。三种RAG从左至右逐渐扩大范围,右边包含了左边的技术。此部分内容也可参考IVAN ILIN大佬的博客Advanced RAG Techniques: an Illustrated Overview

Naive RAG主要包含了检索阅读两个模块,而Advanced RAG在Naive RAG基础上主要增加了查询重写重排序,而Modular RAG在Advance RAG基础上更加多样化且更加灵活

img

3.1 Naive RAG

Naive RAG是基本的“检索-阅读”框架:索引,检索,生成三步走。

索引包括文档转换(将pdf,html,word,markdown等内容转换为纯文本),分块编码得到文本块向量索引建立(一般使用向量数据库比如Faiss,Milvus等)

存在的问题:

  • 检索:低召回率,文本不相关或过时,重要性和相关性如何衡量
  • 生成:仍然产生幻觉,毒性,过度依赖检索文档
  • 增强:产生不连贯不一致的回复,重复内容

3.2 Advanced RAG

Advanced RAG主要优化Naive RAG中的检索流程

  • 检索前处理:即优化数据索引
  • 增强数据粒度。增加文本标准化,一致性,事实准确性与丰富的上下文。包含无关信息去除,实体消歧,事实核查,更新过时文档
  • 优化索引结构:块大小调整,多个索引路径查询,从图数据中捕捉相关上下文
  • 加入元数据信息:加入日期,用途,章节号等信息
  • 对齐优化:SANTA[18]引入假设性问题解决文档的差异性(对齐结构化和非结构化文档)
  • 检索模型优化
  • 微调编码:定制特定领域的编码模型。可以使用BGE模型作为基础,使用GPT和领域语料针对语料的文本块生成查询,构成查询-文档对组成训练数据。
  • 动态编码:与静态嵌入(word2vec,glove)不同,动态嵌入(BERT,GPT)使用Transformer对每个词语根据上下文不同得到不同的特征
  • 检索后处理:将检索文档与查询合并为LLM的输入,解决上下文长度限制。直接添加文档会引入噪音,且失去了对关键信息的关注。
  • 重排序:将检索信息进行重排序并将最相关内容放在提示词的末尾是一个关键的策略。这个概念在许多框架比如LlamaIndexLangChainHayStackDiversity Ranker根据文档多样性进行重排序,LostInTheMiddleRanker将最佳文档放在上下文窗口的最开始和最末尾。还有cohereAI rerankbge-rerank,LongLLMLingua[19]等根据查询与文档的语义相似度进行重新计算与排序,这些模型一般采用效率低但精读高的跨注意力编码器
  • 提示压缩:压缩不相关的上下文,突出关键段落,并减少整体上下文长度。 Selective Context[20]和LLMLingua[21]使用小模型计算互信息或复杂度,估计每个元素的重要性,留下重要的token序列。Recomp[22],LongContext[23]和Walking down the Memory Maze[24]设计了文本摘要模块来增强LLM的关键信息感知能力。

3.3 Modular RAG

Modular RAG结合了各种方法来提升各个模块性能。模块化的RAG范式正日益成为RAG领域的规范,允许使用序列化流水线跨多个模块的端到端训练方法。

3.3.1 新模块

  • 搜索模块:与相似度检索不同,这部分可以被应用于特定的场景并在一些特殊语料上进行检索。一般使用LLM代码生成SQL或Cypher或使用其他工具进行查询。这部分数据源包括搜索引擎,文本数据,表格数据和知识图谱
  • 存储模块:使用LLM的存储能力来指导检索。一般需要找出LLM存储中和当前输入最相似的部分。Selfmem[25]使用了一个检索增强的生成器来迭代创建一个无上限的存储池(即很多个自己的回复),并用检索器选择最合适的存储来改进自己(和用户输入拼接在一起),文本在推理过程中与数据分布更加一致。检索部分利用模型生成的文本与标注输出文本之间的BLEU分数作为每个存储内容的分数标签。
  • 融合模块:RAG-Fusion[26]使用LLM将用户查询扩展为多个查询。这个方法不仅捕捉了用户需要的显示信息,也揭示了更深层次的知识。融合过程包括对原始查询和扩展查询的并行向量搜索,智能重排序,并得到最佳搜索结果。这种复杂的方法确保了搜索结果与用户的显式和隐含的意图保持紧密一致,从而能找到更深刻和更相关的信息。
  • 路由:RAG系统的检索流程使用了各种来源的内容,包含不同领域、语言、形式。这些内容都可以根据需要进行修改或合并[27]。查询路由决定对用户查询的后续操作,其选项包括摘要搜索特定数据库将不同的路径合并到单个响应中。查询路由器还为查询选择适当的数据库,其中可能包括各种来源内容,如向量数据库、图数据库或关系数据库,或层次结构索引。开发者需要预先定义好查询路由器的决策方式,并通过LLM调用执行,它将查询指向所选的索引。
  • 预测:这个技术减少了检索内容中的冗余和噪声。该模块不是直接进行检索,而是利用LLM来生成必要的上下文[28]。与通过直接检索获得的内容相比,LLM生成上下文后检索得到的内容更有可能包含相关信息。
  • 任务适配器:本模块侧重于使RAG适应各种下游任务。UPRISE[29]可以从预先构建好的提示词池中自动检索零样本任务输入的提示词,从而增强了模型的不同任务通用性。同时,Promptagator[30]利用LLM作为少样本查询生成器,并基于生成的数据创建特定于任务的检索器。通过利用LLM的泛化能力,它可以通过最小的示例开发特定于任务的端到端检索器。

3.3.2 新模式

  • 添加或替换模块:这部分一般保留RAG的主要框架,增加或替换其中某些模块。可以添加模块,RRR[31]提出了重写-检索-阅读过程,利用LLM作为重写模块的强化学习激励信号或直接用于重写模块,使得重写器能够修改和完善检索查询,从而提高阅读过程中下游任务性能。可以替换模块,Generate-Read[28]方法使用LLM生成模块代替了检索模块。 Recite-Read[32]方法将外部搜索转换为从模型自身权重进行搜索,要求LLM首先训练一个背诵LM,用于根据问题生成相应的段落提示词和背诵内容,之后利用背诵LM对不同问题生成不同的背诵内容,并与用户输入拼接后生成回复。
  • 调整模块间的顺序:这部分重点关注如何增强语言模型和检索模型间的联系。DSP[12]提出了Demonstrate-Search-Predict框架,将上下文学习当作一个程序而不只是简单的提示词组成,每一个问题都含有几个示例,先对示例中的问题尝试进行检索与生成,筛选出较好的示例;之后利用这些示例,利用LLM生成查询进行检索得到检索结果;最终利用示例,检索结果生成答案。ITER-RETGEN [33]该方法利用生成的内容来指导检索,即先进行一次检索增强生成,将生成结果与用户查询拼接在一起进行检索(即生成增强检索),再利用检索到的结果进行检索增强生成,如此反复迭代,该方法展示了一种使用一个模块的输出来改进另一个模块的功能。

3.3.3 优化RAG流水线

这一部分主要优化了检索流程,力求取得检索效率和上下文信息含量的平衡。

  • 混合搜索:使用关键词搜索,语义搜索,向量搜索多种方式
  • 递归检索:递归检索先检索文档的小文本块,之后利用小块与大块之间的关系得到相应的大文本块
  • 溯源提示:这部分内容主要让LLM不仅利用具体的实例,还能利用更多的概念和定理[34],主要思想是对问题进行抽象化,得到其根问题,比如对一道具体的物理题得到根问题为“问题背后的物理原理是什么?”,之后利用这一根问题让模型背诵自己固有知识中的相应原理,根据原理得到更准确的答案。
  • 子查询:将查询利用LLM分解成几个子查询再进行检索。
  • 查询引擎:LlamaIndex使用了树查询,向量查询或简单的顺序块查询
  • 假设文档嵌入:一种方式是对每个文本块使用LLM生成相应的假设问题。另一种是HyDE[35],利用查询输入LLM生成可能的假设返回结果,利用假设返回结果检索更准确的文档。但当语言模型本身没见过这类问题时,这种方法效果较差。

大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!

4.引用

[1]Gao Y, Xiong Y, Gao X, et al. Retrieval-augmented generation for large language models: A survey[J]. arXiv preprint arXiv:2312.10997, 2023.

[2]Asai A, Min S, Zhong Z, et al. Retrieval-based language models and applications[C]//Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 6: Tutorial Abstracts). 2023: 41-46.

[3]Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive nlp tasks[J]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474.

[4]Ram O, Levine Y, Dalmedigos I, et al. In-context retrieval-augmented language models[J]. arXiv preprint arXiv:2302.00083, 2023.

[5]Khandelwal U, Levy O, Jurafsky D, et al. Generalization through Memorization: Nearest Neighbor Language Models[C]//International Conference on Learning Representations. 2019.

[6]He J, Neubig G, Berg-Kirkpatrick T. Efficient Nearest Neighbor Language Models[C]//Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing. 2021: 5703-5714.

[7]Shi W, Min S, Yasunaga M, et al. Replug: Retrieval-augmented black-box language models[J]. arXiv preprint arXiv:2301.12652, 2023.

[8]Guu K, Lee K, Tung Z, et al. Retrieval augmented language model pre-training[C]//International conference on machine learning. PMLR, 2020: 3929-3938.

[9]Nishikawa S, Ri R, Yamada I, et al. EASE: Entity-Aware Contrastive Learning of Sentence Embedding[C]//Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2022: 3870-3885.

[10]Kang M, Kwak J M, Baek J, et al. Knowledge Graph-Augmented Language Models for Knowledge-Grounded Dialogue Generation[J]. arXiv preprint arXiv:2305.18846, 2023.

[11]Borgeaud S, Mensch A, Hoffmann J, et al. Improving language models by retrieving from trillions of tokens[C]//International conference on machine learning. PMLR, 2022: 2206-2240.

[12]Khattab O, Santhanam K, Li X L, et al. Demonstrate-Search-Predict: Composing retrieval and language models for knowledge-intensive NLP[J]. arXiv preprint arXiv:2212.14024, 2022.

[13]Liang H, Zhang W, Li W, et al. InterGen: Diffusion-based Multi-human Motion Generation under Complex Interactions[J]. arXiv preprint arXiv:2304.05684, 2023.

[14]Wang Y, Li P, Sun M, et al. Self-knowledge guided retrieval augmentation for large language models[J]. arXiv preprint arXiv:2310.05002, 2023.

[15]Jiang Z, Xu F F, Gao L, et al. Active retrieval augmented generation[J]. arXiv preprint arXiv:2305.06983, 2023.

[16]Huang J, Ping W, Xu P, et al. Raven: In-context learning with retrieval augmented encoder-decoder language models[J]. arXiv preprint arXiv:2308.07922, 2023.

[17]Izacard G, Lewis P, Lomeli M, et al. Few-shot learning with retrieval augmented language models[J]. arXiv preprint arXiv:2208.03299, 2022.

[18]Li X, Liu Z, Xiong C, et al. Structure-Aware Language Model Pretraining Improves Dense Retrieval on Structured Data[J]. arXiv preprint arXiv:2305.19912, 2023.

[19]Jiang H, Wu Q, Lin C Y, et al. Llmlingua: Compressing prompts for accelerated inference of large language models[J]. arXiv preprint arXiv:2310.05736, 2023.

[20]Litman R, Anschel O, Tsiper S, et al. Scatter: selective context attentional scene text recognizer[C]//proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 11962-11972.

[21]Jiang H, Wu Q, Lin C Y, et al. LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models[C]//Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing. 2023: 13358-13376.

[22]Xu F, Shi W, Choi E. Recomp: Improving retrieval-augmented lms with compression and selective augmentation[J]. arXiv preprint arXiv:2310.04408, 2023.

[23]Xu P, Ping W, Wu X, et al. Retrieval meets long context large language models[J]. arXiv preprint arXiv:2310.03025, 2023.

[24]Chen H, Pasunuru R, Weston J, et al. Walking down the memory maze: Beyond context limit through interactive reading[J]. arXiv preprint arXiv:2310.05029, 2023.

[25]Cheng X, Luo D, Chen X, et al. Lift Yourself Up: Retrieval-augmented Text Generation with Self Memory[J]. arXiv preprint arXiv:2305.02437, 2023.

[26]Adrian H. Raudaschl. Forget rag, the future is rag-fusion. https://towardsdatascience.com/forget-rag-the-future-is-rag-fusion-1147298d8ad1, 2023.

[27]Li X, Nie E, Liang S. From classification to generation: Insights into crosslingual retrieval augmented icl[J]. arXiv preprint arXiv:2311.06595, 2023.

[28]Yu W, Iter D, Wang S, et al. Generate rather than retrieve: Large language models are strong context generators[J]. arXiv preprint arXiv:2209.10063, 2022.

[29]Cheng D, Huang S, Bi J, et al. UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation[J]. arXiv preprint arXiv:2303.08518, 2023.

[30]Dai Z, Zhao V Y, Ma J, et al. Promptagator: Few-shot Dense Retrieval From 8 Examples[C]//The Eleventh International Conference on Learning Representations. 2022.

[31]Ma X, Gong Y, He P, et al. Query Rewriting for Retrieval-Augmented Large Language Models[J]. arXiv preprint arXiv:2305.14283, 2023.

[32]Sun Z, Wang X, Tay Y, et al. Recitation-augmented language models[J]. arXiv preprint arXiv:2210.01296, 2022.

[33]Shao Z, Gong Y, Shen Y, et al. Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy[J]. arXiv preprint arXiv:2305.15294, 2023.

[34]Zheng H S, Mishra S, Chen X, et al. Take a step back: evoking reasoning via abstraction in large language models[J]. arXiv preprint arXiv:2310.06117, 2023.

[35]Gao L, Ma X, Lin J, et al. Precise zero-shot dense retrieval without relevance labels[J]. arXiv preprint arXiv:2212.10496, 2022.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值