今天是2024年3月3日,星期日,北京,天气晴。

近期大模型领域的节奏依旧很快,围绕Sora的开源项目、长文本RAG实践以及各类落地项目层出不穷。趁此机会,来深入梳理一下RAG(检索增强生成)这一关键技术的全景——从整体架构、评估方案、增强范式到应用场景,力求把脉络理清。
两份综述值得关注。首先是《Retrieval-Augmented Generation for Large Language Models: A Survey》(https://arxiv.org/pdf/2312.10997),其中系统梳理了现有大模型的整体架构与评估思路;另一份是《Retrieval-Augmented Generation for AI-Generated Content: A Survey》(https://arxiv.org/abs/2402.19473),这也是本文重点介绍的工作。该综述对应的论文列表可在GitHub (https://github.com/hymie122/RAG-Survey) 找到,对后续深入阅读很有帮助。
一、从RAG的整体架构说起
通用的RAG架构中,用户的查询可能是多种模态的,它同时作为检索器和生成器的输入。检索器搜索存储中的相关数据源,而生成器则与检索结果交互,最终生成各种模态的输出。
1、RAG基础
该综述将RAG划分为四种类型,如下图所示:
1)Query-based RAG
基于查询的RAG也被称为提示增强。它将用户的查询与检索过程中从文件中获取的信息直接整合到语言模型输入的初始阶段。这是RAG应用中最广泛采用的方法。一旦检索到文档,它们的内容就会与用户的原始查询合并,形成一个组合输入序列,随后输入到预训练的语言模型中以生成回复。
2)Latent Representation-based RAG
在基于潜在表征的RAG框架中,生成模型与检索对象的潜在表征相互作用,从而提高模型的理解能力和生成内容的质量。
3)Logit-based RAG
在基于对数的RAG中,生成模型在解码过程中通过对数将检索信息结合起来。通常情况下,对数通过模型求和或组合,产生逐步生成的概率。
4)Speculative RAG
投机性RAG寻找使用检索代替生成的机会,以节省资源和加快响应速度。例如,REST用检索取代了推测解码中的小模型来生成草稿;GPTCache尝试通过建立语义缓存存储LLM响应,从而解决使用LLM API时的高延迟问题。
二、RAG的评估方案
当前RAG评估也是一个核心话题,以下基准测试和评估框架值得关注:
- Benchmarking Large Language Models in Retrieval-Augmented Generation (https://doi.org/10.48550/arXiv.2309.01431)
- CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation of Large Language Models (https://doi.org/10.48550/arXiv.2401.17043)
- ARES: An Automated Evaluation Framework for Retrieval-Augmented Generation Systems (https://doi.org/10.48550/arXiv.2311.09476)
- RAGAS: Automated Evaluation of Retrieval Augmented Generation (https://doi.org/10.48550/arXiv.2309.15217)
三、RAG增强的多阶段方案
该综述将RAG增强分为五种类型:Input Enhancement、Retriever Enhancement、Generator Enhancement、Result Enhancement以及RAG Pipeline Enhancement,如下图所示:
1、Input Enhancement 输入增强
输入是指用户的查询,最初被馈送到检索器中。输入的质量显著影响检索阶段的最终结果,因此增强输入至关重要。主要包括查询转换和数据增强两种方式。
1)Query Transformation 查询转换
查询转换通过修改输入查询来增强检索结果。Query2doc和HyDE首先使用query生成伪文档,然后将其作为检索的键。这样做的好处是伪文档包含更丰富的相关信息,有助于检索更准确的结果。
2)Data Augmentation 数据增强
数据增强是指在检索前对数据进行预先完善,如去除不相关信息、消除歧义、更新或合成新数据,能有效提高最终RAG系统的性能。例如,MakeAnAudio使用字幕和音频-文本检索为无语言音频生成字幕以减轻数据稀疏性,并添加随机概念音频改进原始音频。
2、Retriever Enhancement 检索增强
在RAG系统中,检索过程至关重要。检索内容质量越好,就越能激发大模型的情境学习能力;内容质量越差,越容易引起模型幻觉。核心在于如何有效提高检索过程的有效性。
1)递归检索 Recursive Retrieve
递归检索是在检索前对查询进行拆分,执行多次搜索以检索更多更高质量的内容。例如使用思维链(Chain-of-Thought, COT)使模型逐步分解查询,提供更丰富的相关知识。LLMCS将该技术应用于会话系统,通过重写会话记录获得了更好的检索结果。
2)块优化 Chunk Optimization
块优化技术通过调整块的大小来获得更好的检索结果。句子窗口检索是一种有效方法,它获取小块文本并返回被检索片段周围的相关句子窗口,确保目标句子前后的上下文都包含在内。自动合并检索(LlamaIndex)以树状结构组织文档,父节点包含所有子节点内容,检索子节点时最终返回父节点,从而提供更丰富的信息。
3)微调向量嵌入模型 Finetune Retriever
作为RAG系统的核心部件,检索器至关重要。好的嵌入模型能使语义相似的内容在向量空间中更紧凑,召回能力越强,为后续生成器提供的有用信息就越多。即使嵌入模型已有良好表达能力,仍可使用高质量的领域数据或任务相关数据进行微调,以提升特定领域性能。例如,REPLUG将LM视为黑盒,根据最终结果更新检索器模型;APICoder使用python文件和API名称、签名、描述对检索器微调;EDITSUM以减少检索后摘要之间的夹板距离为目标微调检索器;SYNCHROMESH在损失中加入AST的树距离,并使用目标相似度调优;R-ConvED使用与生成器相同的数据微调检索器。
4)混合检索 Hybrid Retrieve
混合检索指同时使用多种类型的检索方法。RAP-Gen和ReACC同时使用密集检索器和稀疏检索器提高检索质量;Ren-cos使用稀疏检索器在句法层面检索相似代码片段,密集检索器在语义层面检索;BASHEXPLAINER先用密集检索器捕获语义信息,再用稀疏检索器获取词汇信息;RetDream先用文本检索,然后用图像嵌入检索。
5)重新排序 Re-ranking
重新排序技术对检索到的内容重新排序,以实现更大多样性和更好结果。Re2G采用了传统检索器后的重新排序token模型。AceCoder使用选择器对检索到的程序重新排序,减少冗余,获得多样化程序。XRICL在检索后使用基于蒸馏的范例重新排序器。
6)元数据过滤 Meta-data Filtering
使用元数据(如时间、目的等)过滤检索到的文档,以获得更优结果。
3、生成器增强 Generator Enhancement
在RAG系统中,生成器的质量往往决定最终输出结果的质量,其能力决定了整个RAG系统效能的上限。
1)提示工程 Prompt Engineering
提示工程中的技术如Prompt Compression、Stepback Prompt、Active Prompt、Chain of Thought Prompt等,都适用于RAG系统中的LLM生成器。例如,LLM-Lingua采用小模型压缩查询总长度,缓解不相关信息的影响;ReMo Diffuse使用ChatGPT将复杂描述分解为结构文本脚本;ASAP将范例添加到提示符中以获得更好结果;CEDAR使用设计好的提示模板组织代码演示、查询和自然语言指令;XRICL利用COT技术添加翻译对作为跨语言语义解析的推理步骤;Make An Audio能使用其他模态作为输入,为后续过程提供更丰富信息。
2)微调解码器 Decoding Tuning
在生成器处理过程中增加额外控制,可以通过调整超参数实现更大多样性或限制输出词汇表。例如,interfix通过调节解码器温度平衡结果的多样性和质量;SYNCHROMESH通过实现补全引擎消除实现错误,限制解码器输出词汇表;DeepICL根据额外的温度因素控制生成随机性。
3)微调生成器 Finetune Generator
对生成器进行微调,可增强模型拥有更精确的领域知识或更好匹配检索对象。例如,RETRO固定检索器参数,使用分块交叉注意机制将查询内容与检索器结合;APICoder微调生成器CODEGEN-MONO350M,结合API信息和代码块;CAREt先用图像、音频、视频文本对对编码器训练,再以减少标题损失和概念检测损失为目标微调解码器;animation-a-story使用图像数据优化视频生成器,然后微调LoRA适配器以捕获给定角色外观细节;Ret-Dream用渲染的图像微调LoRA适配器。
4、结果增强 Result Enhancement
当最终结果未达预期时,一些结果增强技术可帮助缓解。例如,重写输出:SARGAM通过Levenshtein Transformer对删除、占位和插入分类器进行分类,修改代码相关任务结果;Ring通过重新排序得到多样性结果;CBR-KBQA通过将生成的关系与知识图中查询实体的局部邻域中的关系对齐来修正结果。
5、RAG流程增强 RAG Pipeline Enhancement
1)自适应检索 Adaptive Retrieval
实际经验表明,检索并不总是有利于最终生成结果。当模型本身的参数化知识足以回答问题,过度检索会造成资源浪费并可能增加模型混乱。确定是否检索的方法分为基于规则和基于模型两类。
基于规则:FLARE在生成过程中通过概率主动决定是否搜索以及何时搜索;efficiency-knnlm将KNN-LM和NPM的生成概率与超参数λ结合确定生成和检索比例;Mallen等在生成答案前对问题进行统计分析,高频问题直接回答,低频问题引入RAG。Jiang等研究了模型不确定性、输入不确定性和输入统计量,综合评估模型置信水平,决定是否检索。Kandpal等人通过研究训练数据集中相关文档数量与模型掌握相关知识程度的关系,帮助确定检索必要性。
基于模型:Self-rag使用经过训练的生成器根据不同指令下的检索确定是否执行检索,并通过Self-Reflection评估检索文本相关性和支持程度;Ren等人使用“判断提示”判断大模型能否回答相关问题及其答案正确性,帮助确定检索必要性;SKR利用LLM自身判断是否能回答问题的能力,能回答则不检索。
2)迭代RAG
RepoCoder采用迭代检索生成管道,在第i次迭代期间使用先前生成的代码增强检索查询,获得更好结果。ITER-RETGEN以迭代方式协同检索和生成,生成器当前输出反映出其欠缺的知识,检索器检索缺失信息作为下一轮上下文,提高下一轮生成质量。
3、RAG的应用
如下图所示,该综述将RAG的应用分为面向不同模态的检索增强。
四、面向文本模态的RAG应用
1、Question Answering 问答
- Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering (https://doi.org/10.18653/v1/2021.eacl-main.74)
- REALM: Retrieval-Augmented Language Model Pre-Training (https://arxiv.org/abs/2002.08909)
- Knowledge Graph Based Synthetic Corpus Generation for Knowledge-Enhanced Language Model Pre-training (https://doi.org/10.18653/v1/2021.naacl-main.278)
- Atlas: Few-shot Learning with Retrieval Augmented Language Models (http://jmlr.org/papers/v24/23-0037.html)
- Improving Language Models by Retrieving from Trillions of Tokens (https://proceedings.mlr.press/v162/borgeaud22a.html)
- Self-Knowledge Guided Retrieval Augmentation for Large Language Models (https://aclanthology.org/2023.findings-emnlp.691)
- Knowledge-Augmented Language Model Prompting for Zero-Shot Knowledge Graph Question Answering (https://doi.org/10.48550/arXiv.2306.04136)
- Think-on-Graph: Deep and Responsible Reasoning of Large Language Model with Knowledge Graph (https://doi.org/10.48550/arXiv.2307.07697)
- Nonparametric Masked Language Modeling (https://doi.org/10.18653/v1/2023.findings-acl.132)
- CL-ReLKT: Cross-lingual Language Knowledge Transfer for Multilingual Retrieval Question Answering (https://doi.org/10.18653/v1/2022.findings-naacl.165)
- One Question Answering Model for Many Languages with Cross-lingual Dense Passage Retrieval (https://proceedings.neurips.cc/paper/2021/hash/3df07fdae1ab273a967aaa1d355b8bb6-Abstract.html)
- Entities as Experts: Sparse Memory Access with Entity Supervision (https://arxiv.org/abs/2004.07202)
- When to Read Documents or QA History: On Unified and Selective Open-domain QA (https://doi.org/10.18653/v1/2023.findings-acl.401)
2、Fact Verification 事实校验
CONCRETE: Improving Cross-lingual Fact-checking with Cross-lingual Retrieval (https://aclanthology.org/2022.coling-1.86)
3、Commonsense Reasoning 常识推理
KG-BART: Knowledge Graph-Augmented {BART} for Generative Commonsense Reasoning (https://doi.org/10.1609/aaai.v35i7.16796)
4、Human-Machine Conversation 人机对话
- Grounded Conversation Generation as Guided Tra verses in Commonsense Knowledge Graphs (https://doi.org/10.18653/v1/2020.acl-main.184)
- Skeleton-to-Response: Dialogue Generation Guided by Retrieval Memory (https://doi.org/10.18653/v1/n19-1124)
- Internet-Augmented Dialogue Generation (https://doi.org/10.18653/v1/2022.acl-long.579)
- BlenderBot 3: a deployed conversational agent that continually learns to responsibly engage (https://doi.org/10.48550/arXiv.2208.03188)
- A Model of Cross-Lingual Knowledge-Grounded Response Generation for Open-Domain Dialogue Systems (https://doi.org/10.18653/v1/2021.findings-emnlp.33)
5、Neural Machine Translation 机器翻译
- Neural Machine Translation with Monolingual Translation Memory (https://doi.org/10.18653/v1/2021.acl-long.567)
- Nearest Neighbor Machine Translation (https://openreview.net/forum?id=7wCBOfJ8hJM)
- Training Language Models with Memory Augmentation (https://doi.org/10.18653/v1/2022.emnlp-main.382)
6、Event Extraction 事件抽取
Retrieval-Augmented Generative Question Answering for Event Argument Extraction (https://doi.org/10.18653/v1/2022.emnlp-main.307)
7、Summarization 文本摘要
- Retrieval-Augmented Multilingual Keyphrase Generation with Retriever-Generator Iterative Training (https://doi.org/10.18653/v1/2022.findings-naacl.92)
- Unlimiformer: Long-Range Transformers with Unlimited Length Input (https://doi.org/10.48550/arXiv.2305.01625)
五、RAG用于Code代码领域
1、Code Generation 代码生成
- Retrieval Augmented Code Generation and Summarization (https://doi.org/10.18653/v1/2021.findings-emnlp.232)
- When Language Model Meets Private Library (https://doi.org/10.18653/v1/2022.findings-emnlp.21)
- DocPrompting: Generating Code by Retrieving the Docs (https://openreview.net/pdf?id=ZTCxT2t2Ru)
- CodeT5+: Open Code Large Language Models for Code Understanding and Generation (https://aclanthology.org/2023.emnlp-main.68)
- AceCoder: Utilizing Existing Code to Enhance Code Generation (https://arxiv.org/abs/2303.17780)
- The impact of lexical and grammatical processing on generating code from natural language (https://doi.org/10.18653/v1/2022.findings-acl.173)
2、Code Summary 代码摘要
- Retrieval-based neural source code summarization (https://doi.org/10.1145/3377811.3380383)
- Retrieve and Refine: Exemplar-based Neural Comment Generation (https://doi.org/10.1145/3324884.3416578)
- RACE: Retrieval-augmented Commit Message Generation (https://doi.org/10.18653/v1/2022.emnlp-main.372)
- BashExplainer: Retrieval-Augmented Bash Code Comment Generation based on Fine-tuned CodeBERT (https://doi.org/10.1109/ICSME55016.2022.00016)
3、Code Completion 代码补全
- ReACC: A Retrieval-Augmented Code Completion Framework (https://doi.org/10.18653/v1/2022.acl-long.431)
- RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation (https://aclanthology.org/2023.emnlp-main.151)
- CoCoMIC: Code Completion By Jointly Modeling In-file and Cross-file Context (https://doi.org/10.48550/arXiv.2212.10007)
4、Automatic Program Repair 自动程序修复
- Repair Is Nearly Generation: Multilingual Program Repair with LLMs (https://doi.org/10.1609/aaai.v37i4.25642)
- Retrieval-Based Prompt Selection for Code-Related Few-Shot Learning (https://doi.org/10.1109/ICSE48619.2023.00205)
- InferFix: End-to-End Program Repair with LLMs (https://doi.org/10.1145/3611643.3613892)
5、Text-to-SQL and Code-based Semantic Parsing
- XRICL: Cross-lingual Retrieval-Augmented In-Context Learning for Cross-lingual Text-to-SQL Semantic Parsing (https://doi.org/10.18653/v1/2022.findings-emnlp.384)
- Synchromesh: Reliable Code Generation from Pre-trained Language Models (https://openreview.net/forum?id=KmtVD97J43e)
- Leveraging Code to Improve In-context Learning for Semantic Parsing (https://arxiv.org/abs/2311.09519)
- Leveraging training data in few-shot prompting for numerical reasoning (https://arxiv.org/abs/2305.18170)
六、面向Audio音频处理的RAG应用
1、Audio Generation 音频生成
- Retrieval-Augmented Text-to-Audio Generation (https://doi.org/10.48550/arXiv.2309.08051)
- Large-Scale Contrastive Language-Audio Pretraining with Feature Fusion and Keyword-to-Caption Augmentation (https://doi.org/10.1109/ICASSP49357.2023.10095969)
- Large-Scale Contrastive Language-Audio Pretraining with Feature Fusion and Keyword-to-Caption Augmentation (https://doi.org/10.1109/ICASSP49357.2023.10095969)
2、Audio Captioning 音频字幕生成
- RECAP: Retrieval-Augmented Audio Captioning (https://doi.org/10.48550/arXiv.2309.09836)
- Large-Scale Contrastive Language-Audio Pretraining with Feature Fusion and Keyword-to-Caption Augmentation (https://doi.org/10.1109/ICASSP49357.2023.10095969)
- CNN architectures for large-scale audio classification (https://doi.org/10.1109/ICASSP.2017.7952132)
七、面向Image图像模态的RAG应用
1、Image Generation 图像生成
- Retrievegan: Image synthesis via differentiable patch retrieval (https://arxiv.org/abs/2007.08513)
- Instance-conditioned gan (https://arxiv.org/abs/2109.05070)
- Memory-driven text-to-image generation (https://arxiv.org/abs/2208.07022)
- RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR (https://arxiv.org/abs/2209.14491)
- KNN-Diffusion: Image Generation via Large-Scale Retrieval (https://arxiv.org/abs/2204.02849)
- Retrieval-Augmented Diffusion Models (https://arxiv.org/abs/2204.11824)
- Text-Guided Synthesis of Artistic Images with Retrieval-Augmented Diffusion Models (https://arxiv.org/abs/2207.13038)
- X&Fuse: Fusing Visual Information in Text-to-Image Generation (https://arxiv.org/abs/2303.01000)
2、Image Captioning 图像字幕生成
- Memory-augmented image captioning (https://ojs.aaai.org/index.php/AAAI/article/view/16220)
- Retrieval-enhanced adversarial training with dynamic memory-augmented attention for image paragraph captioning (https://www.sciencedirect.com/science/article/pii/S0950705120308595)
- Retrieval-Augmented Transformer for Image Captioning (https://arxiv.org/abs/2207.13162)
- Retrieval-augmented image captioning (https://arxiv.org/abs/2302.08268)
- Reveal: Retrieval-augmented visual-language pre-training with multi-source multimodal knowledge memory (https://arxiv.org/abs/2212.05221)
- SmallCap: Lightweight Image Captioning Prompted With Retrieval Augmentation (https://arxiv.org/abs/2209.15323)
- Cross-Modal Retrieval and Semantic Refinement for Remote Sensing Image Captioning (https://www.mdpi.com/2072-4292/16/1/196)
八、面向Video视频模态的RAG
1、Video Captioning
- Retrieval Augmented Convolutional Encoder-decoder Networks for Video Captioning (https://doi.org/10.1145/3539225)
- Concept-Aware Video Captioning: Describing Videos With Effective Prior Information (https://doi.org/10.1109/TIP.2023.3307969)
2、Video Generation 视频生成
- Animate-A-Story: Storytelling with Retrieval-Augmented Video Generation (https://doi.org/10.48550/arXiv.2307.06940)
- Frozen in Time: {A} Joint Video and Image Encoder for End-to-End Retrieval (https://doi.org/10.1109/ICCV48922.2021.00175)
九、面向3D创作的RAG
- ReMoDiffuse: Retrieval-Augmented Motion Diffusion Model (https://doi.org/10.1109/ICCV51070.2023.00040)
- AMD: Anatomical Motion Diffusion with Interpretable Motion Decomposition and Fusion (https://arxiv.org/abs/2312.12763)
- Retrieval-Augmented Score Distillation for Text-to-3D Generation (https://doi.org/10.48550/arXiv.2402.02972)
十、面向知识领域的RAG
1、Knowledge Base Question Answering 知识库问答
- ReTraCk: A Flexible and Efficient Framework for Knowledge Base Question Answering (https://doi.org/10.18653/v1/2021.acl-demo.39)
- Case-based Reasoning for Natural Language Queries over Knowledge Bases (https://doi.org/10.18653/v1/2021.emnlp-main.755)
- Logical Form Generation via Multi-task Learning for Complex Question Answering over Knowledge Bases (https://aclanthology.org/2022.coling-1.145)
2、Knowledge Graph Completion 知识图谱补全
Retrieval-Enhanced Generative Model for Large-Scale Knowledge Graph Completion (https://doi.org/10.1145/3539618.3592052)
十一、面向科学领域的RAG
1、Drug Discovery 药物发现
- Retrieval-based controllable molecule generation (https://arxiv.org/abs/2208.11126)
- Prompt-based 3d molecular diffusion models for structure-based drug design (https://openreview.net/forum?id=FWsGuAFn3n)
- A protein-ligand interaction- focused 3d molecular generative framework for generalizable structure- based drug design (https://chemrxiv.org/engage/chemrxiv/article-details/6482d9dbbe16ad5c57af1937)
2、Medical Applications 医学应用
- Genegpt: Augmenting large language models with domain tools for improved access to biomedical information (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10153281)
- Retrieval-augmented large language models for adolescent idiopathic scoliosis patients in shared decision-making (https://dl.acm.org/doi/abs/10.1145/3584371.3612956)
总结
本文重点介绍了《Retrieval-Augmented Generation for AI-Generated Content: A Survey》(https://arxiv.org/abs/2402.19473)这一工作。该综述归纳的增强方案以及给出的论文引导具有很高的参考价值,感兴趣的读者可以根据自己的需求进行选择性深入阅读,会有不错的收获。
