来源于复旦大学RAG的综述
https://github.com/Tongji-KGLLM/RAG-Survey/tree/main
什么是RAG?
大型语言模型(LLMs)已经成为我们生活和工作中不可或缺的一部分,通过其惊人的通用性和智能改变了我们与信息的交互方式。
尽管它们的能力令人印象深刻,但它们并非没有缺陷。这些模型会产生误导性的“幻觉”,依赖潜在过时的信息,在处理专业知识时效率低下,在专业领域缺乏深度,推理能力不足。
在现实世界的应用中,数据需要不断更新以反映最新发展,生成的内容必须透明且可追溯以管理成本和保护数据隐私。因此,仅仅依靠这些“黑箱”模型是不够的;我们需要更精细的解决方案来满足这些复杂的需求。
在此背景下,检索增强生成(RAG)作为人工智能时代的一种开创性趋势而脱颖而出。
RAG通过在语言模型生成答案之前首先从外部文档数据库中检索相关信息,显着提高了内容的查准率/精确度和针对性。
RAG范式
由Lewis于2020年引入的RAG概念发展迅速,标志着其研究历程的不同阶段。最初,该研究旨在通过在预训练阶段为语言模型注入额外的知识来支持语言模型。ChatGPT的推出激发了人们对利用大型模型进行深入上下文理解的浓厚兴趣,加速了RAG在推理阶段的发展。随着研究人员更深入地研究大型语言模型(LLMs)的功能,重点转向增强其可控性和推理技能,以跟上不断增长的需求。GPT-4的出现标志着一个重要的里程碑,它通过一种新颖的方法彻底改变了RAG,该方法将其与微调技术相结合,同时继续完善预训练策略。
在RAG的技术发展中,我们从技术范式的角度将其演变总结为以下几个阶段:
Naive RAG
经典的RAG过程,也称为朴素RAG,在前面的示例中进行了演示。它主要包括三个基本步骤:
索引-将文档语料库拆分为更短的块,并通过编码器构建向量索引。
检索-根据问题和块之间的相似性检索相关文档片段。
生成-根据检索到的上下文生成问题的答案。
Advanced RAG
朴素RAG在检索、生成和增强方面面临多重挑战,Advanced RAG范式随后被提出,并涉及Pre-Retrieval和Post-Retrieval中的附加处理,在检索之前,可以使用查询重写、路由和扩展等方法对齐问题和文档块之间的语义差异,在检索之后,对检索到的文档语料库进行重新排序可以避免"迷失在中间"现象,或者对上下文进行过滤和压缩以缩短窗口长度。
Modular RAG
随着RAG技术的进一步发展和演进,新的突破超越了传统的朴素RAGRetrieval-Generation框架,导致了模块化RAG的概念。在结构上,它更加自由和灵活,引入了更具体的功能模块,如查询搜索引擎和多个答案的融合。在技术上,它将检索与微调、强化学习等技术融为一体。在过程方面,RAG模块被设计和编排,产生了各种RAG模式。
然而,模块化RAG并不是突然出现的;三种范式之间存在继承性和发展性的关系。高级RAG是模块化RAG的一个特例,朴素RAG是高级RAG的一个特例。
如何做增强?
要构建一个好的RAG系统,其中增强部分是关键,需要考虑三个关键问题:
检索什么?
什么时候检索?
如何使用检索到的内容?
从以上三个问题出发,我们将增强整理如下:
检索增强可以在预训练、微调和推理阶段执行,这决定了外部知识的参数化程度,并对应于所需的不同计算资源。
数据源增强。可以利用各种形式的数据,包括非结构化数据,如文本段落、短语或单个单词。也可以使用结构化数据,如索引文档、三元数据或子图。另一种方法是不依赖外部信息源,而是充分利用LLMs的内在能力,从LLMs自己生成的内容中检索。
初始检索是一个一次性的过程,但是迭代检索、递归检索和自适应检索方法,LLMs自己决定检索的时间,在RAG的发展中逐渐出现。
RAG还是微调?
除了RAG之外,LLMs的主要最优化策略还包括提示工程和微调(FT)。每个都有自己独特的特点。根据它们对外部知识的依赖和模型调整的要求,它们各自有合适的场景。
RAG就像给模型一本定制信息检索的教科书,非常适合特定的查询。另一方面,FT就像一个学生随着时间的推移内化知识,更适合模仿特定的结构、样式或格式。FT可以通过增强基础模型的知识、调整输出和教授复杂的指令来提高模型的性能和效率。但是,它并不擅长整合新知识或快速迭代新用例。RAG和FT并不相互排斥;它们是互补的,它们一起使用可能会产生最好的结果。
如何评估RAG?
RAG的评价方法多种多样,主要包括三个质量分数:上下文相关性、答案保真度和答案相关性。此外,评估涉及四个关键能力:噪声稳健性、拒绝能力、信息集成性和反事实稳健性。这些评估维度将传统的定量指标与RAG特征的专门评估标准相结合,尽管这些标准尚未标准化。
在评估框架方面,有RGB、RECALL等基准,也有RAGAS、ARES、TruLens等自动化评估工具,有助于全面衡量RAG模型的性能。
前景
RAG的发展方兴未艾,有几个问题值得进一步探讨,我们可以从三个方面对这些进行展望:
存在的挑战:
旨在进一步应对RAG目前面临的挑战;
上下文长度。当检索到的内容太多并且超过窗口限制时该怎么办?如果LLMs的上下文窗口不再受到限制,应该如何改进RAG?
鲁棒性。如何处理检索到的不正确内容?如何过滤和验证检索到的内容?如何增强模型对中毒和噪声的抵抗力?
微调协调。如何同时利用RAG和FT的效果,它们应该如何协调、组织,无论是串联、交替还是端到端?
缩放定律:RAG模型是否满足缩放定律?RAG,或者在什么情况下RAG可能会遇到逆缩放定律的现象?
LLMs的角色。LLMs可以用于检索(用LLMs代代替搜索或搜索LLMs记忆),用于生成,用于评估。如何进一步挖掘RAG中LLMs的潜力?
生产环境应用。如何降低超大规模语料库的检索延迟?如何确保检索到的内容不被LLMs泄露。
多模态扩展
RAG不断发展的技术和概念如何扩展到图像、音频、视频或代码等其他数据模式?一方面,这可以增强单一模态内的任务,另一方面,它可以通过RAG的思想融合多模态。
RAG的生态系统
RAG的应用不再局限于问答系统;其影响正在扩展到更多的领域。现在,推荐系统、信息抽取、报告生成等多种任务开始受益于RAG技术的应用。
与此同时,RAG技术堆栈正在经历繁荣。除了Langchain和LlamaIndex等知名工具之外,市场上还出现了更有针对性的RAG工具,例如:那些为特定用例定制的工具,以满足更集中的场景需求;那些为进一步降低进入门槛而简化的工具;以及那些专门从事功能的工具,逐渐瞄准生产环境。
RAG论文列表
增强阶段
预训练
1.Improving language models by retrieving from trillions of tokens [paper][code]
2.Few-shot Learning with Re-trieval Augmented Language Models [paper]
3.Toolformer: Language Models Can Teach Themselves to Use Tools[paper]
4.Copy is all you need[paper]
5.In-context learning with retrieval augmented encoder-decoder language model[paper]
6.Shall we pretrain autoregressive language models with retrieval?[paper]
7.Demonstrate-Search-Predict: Composing retrieval and language models for knowledge-intensive NLP[paper]
微调
1.Dense Passage Retrieval for Open-Domain Question Answering[paper]
2.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation[paper][code]
3.Distilling knowledge from reader to retriever for question answering[paper]
4.RA-DIT: Retrieval-Augmented Dual Instruction Tuning[paper]
5.Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection[paper]
6.Knowledge Graph-Augmented Language Models for Knowledge-Grounded Dialogue Generation[paper]
7.Structure-Aware Language Model Pretraining Improves Dense Retrieval on Structured Data [paper] [code]
8.Replug: Retrieval-augmented black-box language models [paper]
9.Augmentation-Adapted Retriever Improves Generalization of Language Models as Generic Plug-In [paper][code]
推理
1.Generalization through Memorization: Nearest Neighbor Language Models[paper]
2.DEMONSTRATE–SEARCH–PREDICT: Composing retrieval and language models for knowledge-intensive NLP [paper][code]
3.Keyword Augmented Retrieval: Novel framework for Information Retrieval integrated with speech interface. [paper]
4.Interleaving retrieval with chain-of-thought reasoning for knowledge-intensive multi-step questions. [paper][code]
5.Generate rather than Retrieve: Large Language Models are Strong Context Generators [paper] [code]
6.In-Context Retrieval-Augmented Language Models [paper]
增强数据
Unstructured Data
1.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation[paper][code]
2.From Classification to Generation: Insights into Crosslingual Retrieval Augmented ICL [paper]
3.Copy is all you need [paper]
Structured Data
1.FABULA: Intelligence Report Generation Using Retrieval-Augmented Narrative Construction [paper]
2.Knowledge Graph-Augmented Language Models for Knowledge-Grounded Dialogue Generation [paper]
3.KnowledGPT: Enhancing Large Language Models with Retrieval and Storage Access on Knowledge Bases [paper]
4.Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT [paper]
LLM Generated Content
1.Lift Yourself Up: Retrieval-augmented Text Generation with Self-Memory [paper]
2.DEMONSTRATE–SEARCH–PREDICT: Composing retrieval and language models for knowledge-intensive NLP [paper]
3.Recitation-augmented language models[paper]
4.Generate rather than Retrieve: Large Language Models are Strong Context Generators [paper]
5.Self-Knowledge Guided Retrieval Augmentation for Large Language Models [paper]
过程增强
Once Retrieval
1.Retrieval-augmented generation for knowledge-intensive nlp tasks [paper]
2.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation [paper]
3.Augmented Large Language Models with Parametric Knowledge Guiding [paper]
4.Learning to Retrieve In-Context Examples for Large Language Models.[paper]
5.Few-shot Learning with Re-trieval Augmented Language Models [paper]
6.Replug: Retrieval-augmented black-box language models [paper]
7.Recitation-augmented language models[paper]
Iterative Retrieval
1.DEMONSTRATE–SEARCH–PREDICT: Composing retrieval and language models for knowledge-intensive NLP [paper][code]
2.Retrieve-and-Sample: Document-level Event Argument Extraction via Hybrid Retrieval Augmentation [paper]
3.Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy[paper]
4.RETRIEVAL-GENERATION SYNERGY AUGMENTED LARGE LANGUAGE MODELS [paper]
Recursive Retrieval
1.Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions [paper][code]
2.Tree of Clarifications: Answering Ambiguous Questions with Retrieval-Augmented Large Language Models [paper]
Adaptive Retrieval
1.Active Retrieval Augmented Generation[paper][code]
2.Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection [paper]
3.In-context learning with retrieval augmented encoder-decoder language model [paper]
原文链接
https://github.com/Tongji-KGLLM/RAG-Survey/tree/main