RAG综述——Retrieval-Augmented Generation for Large Language Models:A Survey
·
文章针对大模型在生成文本时面临的幻觉、知识过时和推理不透明等问题,提出并系统回顾了检索增强生成(Retrieval-Augmented Generation, RAG)技术,通过结合外部知识库提升生成文本的准确性和可信度,最终得出RAG显著改进大模型在知识密集型任务中的表现的结论。
核心方法:检索增强生成(RAG)
- 工作原理:
- 检索(Retrieval):根据用户查询,从外部知识库中提取与查询最相关的信息片段(chunks)
- 生成(Generation):将检索到的信息与用户查询一起输入到LLMs中,由模型生成最终回答
- 增强(Augmentation):通过优化技术(如查询重写或检索增强训练)提升检索和生成的效率与质量
- 创新点:
- RAG的创新在于它将LLMs的固有知识与外部动态知识库无缝融合,不仅能解决知识过时问题,还能针对特定领域集成专业知识
系统架构
- 系统架构描述:
- 索引(Indexing):将外部文档切分为小块(chunks),通过编码器转化为向量,并存储在向量数据库中
- 检索(Retrieval):根据用户查询,从向量数据库中找出语义上最相似的Top k个chunks
- 生成(Generation):将检索到的chunks与查询一起输入LLMs,生成最终回答
- 模块功能与数据流:
- 索引模块负责文档的预处理和向量存储,为检索提供基础数据
- 检索模块基于查询提取相关信息,输出Top k chunks
- 生成模块结合检索结果和查询,利用LLMs生成连贯且准确的回答。数据从查询输入到索引数据库,再到检索和生成,形成一个清晰的流向
RAG研究范式
1. Naive RAG
- Includes indexing, retrieval, and generation——“Retrieve-Read” framework
- 索引(Indexing):将外部文档切分为小块(chunks),通过编码器转化为向量,并存储在向量数据库中
- 检索(Retrieval):根据用户查询,从向量数据库中找出语义上最相似的Top k个chunks
- 生成(Generation):将检索到的chunks与查询一起输入LLMs,生成最终回答
- Retrieval Challenges:Selection of misaligned or irrelevant chunks
- Generation Difficulties:Hallucination;Produces content not supported by the retrieved context
- Augmentation Hurdles:Integrating retrieved information with the different task
2. Advanced RAG
- Tackle the indexing issues;Streamline the retrieval process——Pre-retrieval and post-retrieval strategies
- Pre-retrieval process:Enhancing data granularity, optimizing index structures, adding metadata, alignment optimization, and mixed retrieval(增强数据粒度,优化索引结构,添加元数据,对齐优化和混合检索)
- Post-retrieval process:Rerank chunks and context compressing
3. Modular RAG
模块化RAG架构通过引入新模块(搜索模块、RAGFusion、内存模块、路由模块、预测模块、任务适配器模块)和新模式(如Rewrite-Retrieve-Read、Generate-Read、ReciteRead、混合检索策略、子查询和HyDE),提升了检索和生成的灵活性与质量。模块化设计允许根据具体需求替换或重配置模块,并支持与其他技术(如微调和强化学习)的整合。相比Naive RAG和Advanced RAG,模块化RAG在适应性、多功能性和处理复杂任务的能力上实现了质的飞跃,成为RAG体系的重要进步

4. Prompt Engineering vs RAG vs Fine-tuning
|
外部知识需求
|
模型适应需求
|
|
|
Prompt Engineering
|
低
|
低
|
|
RAG
|
高
|
中等
|
|
Fine-tuning
|
中等
|
高
|
Prompt Engineering:轻量、快速,适合简单任务,无需外部知识或深度调整
RAG:动态、实时,适合需要外部知识和精确检索的场景,但延迟较高
Fine-tuning:深度定制,适合特定风格或结构的静态任务,但资源需求大
RETRIEVAL
- A. 检索源(Retrieval Source)
- 1. 数据结构(Data Structure)
- 非结构化数据(Unstructured Data)
- 半结构化数据(Semi-structured Data)
- 结构化数据(Structured Data)
- LLM生成的内容(LLMs-Generated Content)
- 2. 检索粒度(Retrieval Granularity)
- 粗粒度检索(如文档级)
- 细粒度检索(如句子或短语级)
- 优化方法:DenseX提出使用“命题”(Proposition)作为检索单位,即文本中的原子表达式,既简洁又独立,旨在提高检索的精确度和相关性。在不同数据源中,检索粒度有所不同:文本:从Token到Document。知识图谱:从Entity到sub-Graph。选择合适的粒度是提升检索性能的有效策略。
- 1. 数据结构(Data Structure)
- B. 索引优化(Indexing Optimization)
- 1. 分块策略(Chunking Strategy)
- 2. 元数据附件(Metadata Attachments)
- 3. 结构化索引(Structural Index)
- 层次化索引:建立文档的父子关系,存储数据摘要,加速检索并减少幻觉。
- 知识图谱索引:利用KG构建层次结构,维护概念和实体的一致性,提高检索准确性并增强生成内容的连贯性。
- KGP:通过KG在多文档间建立索引,解决多文档环境下的知识检索和推理问题。
- C. 查询优化(Query Optimization)
- 1. 查询扩展(Query Expansion)
- 多查询(Multi-Query):通过LLM生成多个查询并行执行,丰富查询内容。
- 子查询(Sub-Query):将复杂问题分解为简单子问题,逐步回答。
- 验证链(CoVe):LLM验证扩展后的查询,减少幻觉。
- 2. 查询转换(Query Transformation)
- 查询重写(Query Rewrite):通过LLM或小模型重写查询,例如淘宝的BEQUE提升了长尾查询的效果。
- HyDE:生成假设性答案,通过答案间的嵌入相似度检索。
- Step-back Prompting:将查询抽象为高层概念问题,同时使用原始和抽象问题检索。
- 3. 查询路由(Query Routing)
- 元数据路由/过滤:根据关键词和元数据缩小范围。
- 语义路由:根据查询的语义选择合适的RAG管道。
- 混合路由:结合语义和元数据方法。
- 1. 查询扩展(Query Expansion)
- D. 嵌入模型(Embedding Model)选择和优化模型以提高检索准确性
- 1. 混合检索(Mix/Hybrid Retrieval)
- 2. 微调嵌入模型(Fine-tuning Embedding Model)
- E. 适配器(Adapter)
- 提示选择(UPRISE):动态选择任务提示
- 通用适配(AAR):支持多任务
- 奖励驱动(PRCA):针对特定任务优化
- 桥接模型(BGM):转化信息格式,提升兼容性
- 指令微调(PKG):直接生成相关文档
GENERATION
- A. 上下文整理(Context Curation)
- 1. 重新排序(Reranking)【基于规则or基于模型】
- 2. 上下文选择/压缩(Context Selection/Compression)
- 提示压缩:如(Long) LLMLingua使用小型语言模型(SLM,如GPT-2 Small或LLaMA-7B)检测并移除不重要的 token,将上下文转化为人类难以理解但LLM易于处理的形式。这种方法无需额外训练LLM,平衡了语言完整性和压缩比例。
- 信息提取与压缩:PRCA通过训练一个信息提取器来解决冗余问题;RECOMP则通过对比学习训练一个信息压缩器,使用一个正样本和五个负样本,结合对比损失进行优化。
- 文档数量减少:减少无关文档有助于提升模型答案的准确性。
- LLM自我评估:在生成最终答案前,让LLM评估检索内容的质量。
- B. LLM微调(LLM Fine-tuning)
- 补充领域知识
- 调整输入输出格式
- 结构化数据处理
- 偏好对齐【强化学习】
- 模型蒸馏
- 检索器与生成器协同微调【RA-DIT方法】
AUGMENTATION PROCESS IN RAG
- A. 迭代检索(Iterative Retrieval)
- 通过反复查询知识库,根据初始查询和当前生成的文本动态调整检索内容,提供更全面的知识
- B. 递归检索(Recursive Retrieval)
- 通过基于先前检索结果逐步优化查询,深入挖掘更相关的信息,类似于通过反馈循环逐步逼近目标
- IRCoT(Information Retrieval Chain-of-Thought):使用思维链(Chain-of-Thought, CoT)指导检索过程,并根据检索结果进一步优化CoT
- ToC(Tree of Clarifications):通过构建“澄清树”,系统性地优化查询中模糊的部分,逐步明确用户需求
- 结合多跳检索(Multi-hop Retrieval):递归检索常与多跳检索结合使用。
- 递归检索:通过分层索引处理数据(例如先总结文档或PDF的段落,再基于总结进行检索,然后在文档内二次检索)
- 多跳检索:针对图结构数据,挖掘相互关联的信息
- 通过基于先前检索结果逐步优化查询,深入挖掘更相关的信息,类似于通过反馈循环逐步逼近目标
- C. 适应性检索(Adaptive Retrieval)
- 适应性检索让大语言模型主动判断何时以及检索什么内容,从而提高检索效率和相关性。
- Flare:通过监控生成置信度自动触发检索,优化信息获取时机
- Self-RAG:利用反思令牌自主决定检索时机,通过束搜索和批评评分提升生成连贯性
- WebGPT:结合强化学习和特殊令牌,训练模型自主使用搜索引擎增强生成能力
- Graph-Toolformer:分步主动检索,结合自问技术和少样本提示动态生成查询
- 适应性检索让大语言模型主动判断何时以及检索什么内容,从而提高检索效率和相关性。
迭代检索通过多次查询扩展知识范围,适合需要广泛上下文的任务,但需注意无关信息累积递归检索通过逐步优化查询深入挖掘信息,适合复杂或模糊场景,结合多跳检索可处理图结构数据适应性检索赋予模型主动决策能力,动态优化检索时机与内容,代表了RAG框架向智能化、自主化方向的演进
TASK AND EVALUATION
阐述了RAG模型的评估框架,涵盖了其核心任务(以问答为主,扩展到信息抽取、对话生成等)、评估目标(检索质量和生成质量)、评估维度(质量评分和核心能力)以及支持评估的基准和工具。当前评估主要依赖传统指标(如EM、F1、BLEU、ROUGE、MRR、NDCG等),但缺乏针对RAG独特性的标准化方法。未来的研究需要开发更精细的指标和工具,以全面评估RAG模型在复杂场景中的表现。
DISCUSSION AND FUTURE PROSPECTS
- A. RAG与长上下文的对比(RAG vs Long Context)
- B. RAG的鲁棒性(RAG Robustness)
- C. 混合方法(Hybrid Approaches)
- D. RAG的规模化规律(Scaling laws of RAG)
- E. 生产就绪的RAG(Production-Ready RAG)
- F. 多模态RAG(Multi-modal RAG)
未来研究将聚焦于优化RAG在超长上下文中的应用、提升抗噪声能力、探索RAG与微调的结合、研究规模化规律、解决工程问题以及推动多模态RAG的发展
CONCLUSION
更多推荐



所有评论(0)