跳到主要内容

检索增强生成(RAG)概述

检索增强生成(Retrieval-Augmented Generation,RAG)是目前企业级 AI 应用最主流的架构模式,通过将外部知识检索与语言模型生成相结合,克服了纯 LLM 方案的固有局限。

RAG 定义

RAG = LLM + 外部知识检索

具体而言,当用户提问时,系统不直接让 LLM 从参数记忆中回答,而是先从外部知识库中检索相关信息,将检索结果作为上下文注入提示词,再由 LLM 基于这些具体信息生成回答。

RAG 解决的核心问题

幻觉(Hallucination)

LLM 有时会自信地给出错误信息。RAG 通过提供具体的参考文档,引导模型基于事实回答,并可要求模型注明来源,降低幻觉概率。

知识截止(Knowledge Cutoff)

LLM 的训练数据有截止日期,无法回答最新事件。RAG 通过检索实时更新的知识库,突破这一限制。

私有数据访问

企业内部文档、数据库、代码仓库等私有信息无法通过微调快速注入模型。RAG 允许在不改变模型参数的情况下,让 LLM 访问私有数据。

可引用性与可审计性

RAG 系统可以追踪每个回答的具体来源文档,支持用户验证信息,满足合规审计需求。

基础 RAG 架构

基础 RAG 分为两个主要阶段:

离线索引阶段

原始文档
↓ 文档加载(PDF/Word/网页等)
↓ 文档分块(Chunking)
↓ Embedding 模型(文本→向量)
↓ 存储到向量数据库
向量索引

在线检索与生成阶段

用户问题
↓ Embedding 模型(问题→查询向量)
↓ 向量相似度检索(Top-K)
相关文档片段
↓ 构建提示(问题 + 检索结果)
↓ LLM 生成
最终回答

高级 RAG

基础 RAG 在实践中常遇到检索质量不佳或生成不相关的问题。高级 RAG 引入预检索和后检索优化:

预检索优化(Pre-Retrieval)

  • 查询改写:将口语化问题转换为更精确的检索查询
  • 查询扩展:生成多个相关子问题,扩大检索覆盖
  • HyDE(假设文档嵌入):先生成假设答案,用假设答案的向量做检索
  • 路由:根据问题类型路由到不同知识库

后检索优化(Post-Retrieval)

  • 重排序(Reranking):用专用重排模型对检索结果重新打分排序
  • 上下文压缩:从检索文档中提取最相关的句子,减少噪声
  • 过滤:剔除相似度过低或不相关的文档
  • 融合排序(RRF):合并多路检索结果

模块化 RAG

模块化 RAG 将整个管道拆解为可插拔的模块,按需组合:

  • 搜索模块(向量/关键词/混合/知识图谱)
  • 记忆模块(短期/长期/实体记忆)
  • 融合模块(多路结果合并)
  • 生成模块(单次/迭代式生成)
  • 任务适配模块(针对不同任务类型)

这种设计使 RAG 系统可以根据具体场景灵活组合,而不必拘泥于固定流程。

RAG vs 微调的权衡

维度RAG微调(Fine-tuning)
知识更新成本低(更新向量库即可)高(需重新训练)
实时性高(实时检索)低(训练数据有截止)
私有数据适合(无需暴露给模型)适合(参数级学习)
风格/格式学习较弱
专业能力增强有限显著
部署复杂度中(需维护向量库)低(模型本身)
幻觉控制较好一般

实践中常将两者结合:微调负责语言风格和专业能力,RAG 负责实时知识注入。

核心指标

评估 RAG 系统质量需关注两个维度的指标:

检索质量

  • 召回率(Recall):相关文档是否被检索到
  • 精确率(Precision):检索到的文档中有多少是真正相关的
  • MRR(平均倒数排名):相关文档在排名中的位置

生成质量

  • 忠实度(Faithfulness):回答是否忠于检索到的文档(RAGAS 框架)
  • 答案相关性(Answer Relevancy):回答是否真正回答了问题
  • 上下文精确率(Context Precision):上下文中有多少是真正有用的
  • 上下文召回率(Context Recall):必要信息是否都被检索到

评估工具

  • RAGAS:专门的 RAG 评估框架,无需人工标注
  • TruLens:RAG 链路追踪与评估
  • LangSmith:完整 RAG 管道的可观测性

本节内容导读