文章针对大模型在生成文本时面临的幻觉、知识过时和推理不透明等问题,提出并系统回顾了检索增强生成(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。选择合适的粒度是提升检索性能的有效策略。
  • 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管道。
      • 混合路由:结合语义和元数据方法。
  • 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

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐