【自然语言处理与大模型】RAG发展过程中的三个范式

近年来,随着大语言模型(LLM)在自然语言处理领域的广泛应用,检索增强生成(RAG) 成为解决模型幻觉问题、提升回答准确性和事实一致性的重要技术手段。RAG通过结合外部知识库的检索能力与生成模型的强大表达能力,实现了信息获取与内容生成的深度融合。

RAG系统经历了三个主要发展阶段:

  1. 初级 RAG(Naive RAG)
  2. 高级 RAG(Advanced RAG)
  3. 模块化 RAG(Modular RAG)

一、Naive RAG

初级 RAG 采用了一个传统过程,包括索引建立、文档检索和内容生成。简单来说,系统根据用户的输入查询相关文档,然后将这些文档和一个提示语结合起来,交给模型生成最终的回答。如果涉及到多轮对话,还可以将对话历史整合到提示语中。初级 RAG 是最基础的实现方式,其工作流程如下:

  1. 索引:将文档切分为片段并生成嵌入向量,存储于向量数据库中。
  2. 检索:根据用户查询,在向量空间中查找语义相似的文档片段。
  3. 增强:将检索结果拼接至提示模板中,形成输入。
  4. 生成:大语言模型基于提示生成最终答案。

优点:结构简单、易于部署,适用于静态知识问答场景。

缺点 描述
低精确度 检索返回的内容可能不完全相关,导致生成错误信息。
低召回率 难以覆盖所有相关信息,尤其当查询复杂或多义时。
信息过时风险 若知识库未及时更新,模型可能引用陈旧数据。
幻觉 模型可能基于不完整或无关信息虚构答案。
冗余与重复 多个相似文档被同时检索,造成内容重复。
风格不一致 不同来源的文档风格差异大,影响输出连贯性。

二、Advanced RAG

为克服初级 RAG 的缺陷,高级 RAG 引入了一系列端到端优化策略,聚焦于检索前(Pre-retrieval)、检索中(During retrieval)和检索后(Post-retrieval) 的全流程改进。

(1)检索前优化

  • Query Routing(查询路由):判断查询类型,选择合适的数据源或子系统。
  • Query Rewriting(查询改写):将原始查询转化为更具体、语义更明确的形式。
  • Query Expansion(查询扩展):添加同义词、相关概念等,提高召回率。

(2)检索过程优化

  • 嵌入模型微调(Fine-tuned Embedding Models):使用领域特定数据训练嵌入模型,提升语义匹配精度。
  • 动态嵌入(Dynamic Embeddings) :如 OpenAI 的 embeddings-ada-02 支持上下文感知的编码。
  • 混合检索(Hybrid Search):结合关键词搜索(BM25)与语义搜索(向量检索),兼顾准确性与召回率

(3)检索后优化

  • 重排序(Re-ranking):对初步检索结果按相关性重新排序,常用方法包括 Cross-Encoder、ColBERT。
  • 摘要融合(Summary & Fusion)
    • 使用 LLM 对多个文档进行摘要合并;
    • 或采用 Maximal Marginal Relevance (MMR) 实现多样性与相关性的平衡。
  • 提示压缩(Prompt Compression):去除冗余文本,避免上下文窗口溢出。

三、Modular RAG

模块化 RAG 是当前 RAG 架构发展的前沿方向,它将整个系统解耦为一系列可插拔、可组合的功能模块,从而实现高度灵活的任务适配。其核心理念是允许开发者根据任务需求自由组合不同功能模块,支持多种执行路径(patterns),满足多样化应用场景,各模块独立开发、测试与迭代。上图中的关键模块分类的解释如下表:

模块 功能说明
Search 执行实际的检索操作,支持多种检索算法。
Retrieve 从数据库中提取候选文档片段。
Rewrite 改写查询或文档以增强匹配效果。
Rerank 对检索结果进行再排序。
Read 解析文档内容,提取关键信息。
Fusion 合并多个来源的信息,避免重复。
Memory 存储对话历史或长期记忆,支持多轮交互。
Routing 判断查询应由哪个子系统处理。
Predict 基于已有信息预测答案或引导推理路径。
Demonstrate 提供示例或思维链,辅助模型推理。

典型模式(patterns)

模式 流程 应用场景
Naive RAG Retrieve → Read 简单问答系统
Advanced RAG Rewrite → Retrieve → Rerank → Read 高精度知识检索
DSP(Demonstration-based Prompting) Demonstrate → Search → Predict 推理类任务
ITER-RETGEN Retrieve → Read → Retrieve → Read 复杂问题分步求解
相关推荐
霍格沃兹测试开发学社测试人社区31 分钟前
新手指南:通过 Playwright MCP Server 为 AI Agent 实现浏览器自动化能力
运维·人工智能·自动化
JJJJ_iii35 分钟前
【机器学习01】监督学习、无监督学习、线性回归、代价函数
人工智能·笔记·python·学习·机器学习·jupyter·线性回归
qq_416276423 小时前
LOFAR物理频谱特征提取及实现
人工智能
余俊晖3 小时前
如何构造一个文档解析的多模态大模型?MinerU2.5架构、数据、训练方法
人工智能·文档解析
Akamai中国5 小时前
Linebreak赋能实时化企业转型:专业系统集成商携手Akamai以实时智能革新企业运营
人工智能·云计算·云服务
LiJieNiub6 小时前
读懂目标检测:从基础概念到主流算法
人工智能·计算机视觉·目标跟踪
weixin_519535776 小时前
从ChatGPT到新质生产力:一份数据驱动的AI研究方向指南
人工智能·深度学习·机器学习·ai·chatgpt·数据分析·aigc
爱喝白开水a7 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
takashi_void7 小时前
如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
linux·人工智能·windows·macos·语言模型·nlp
OpenCSG7 小时前
【活动预告】2025斗拱开发者大会,共探支付与AI未来
人工智能·ai·开源·大模型·支付安全