RAG基础

RAG(检索增强生成)通过结合外部知识库与LLM,有效解决大模型幻觉和知识过时问题。

共 3 篇文章·阅读时间:约25分钟

01什么是RAG

RAG通过检索外部知识来增强大语言模型的生成能力,是一种高效解决知识受限问题的方法。

RAG的定义

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索系统与语言模型结合的技术框架。 当LLM需要回答问题时,先从外部知识库检索相关信息,再结合这些信息生成答案。

为什么需要RAG?

  • 知识截止:LLM的知识有截止日期,无法获取最新信息
  • 幻觉问题:LLM可能生成看似合理但错误的内容
  • 知识盲区:LLM在特定垂直领域知识不足
  • 可追溯性:RAG生成的答案可以追溯到具体来源

RAG工作流程

  1. 索引阶段:将文档切分为chunk,通过Embedding模型编码存入向量数据库
  2. 检索阶段:用户提问 → 编码为向量 → 从向量库检索Top-K相关chunk
  3. 生成阶段:将检索到的chunk作为上下文,结合用户问题发送给LLM生成答案
  4. 输出:返回带有引用来源的答案

RAG的核心价值

  • 让LLM"知道"训练数据之外的知识
  • 答案可以提供出处,增强可信度
  • 知识库可随时更新,无需重新训练模型
  • 成本远低于模型微调

02RAG vs 微调

RAG和微调是两种主流的LLM定制化方法,各有优劣,适用场景不同。

对比分析

维度RAG微调 (Fine-tuning)
知识更新实时更新知识库即可需要重新训练
成本较低(向量数据库+检索)较高(GPU+训练时间)
可解释性高(可追溯来源)低(隐含在权重中)
适合场景知识问答、事实性查询风格迁移、任务定制
数据需求文档形式的知识库高质量问答对/指令数据
幻觉问题可显著减少可能减少但无法根治

选择指南

选择RAG的场景

需要最新知识、需要可追溯来源、频繁更新知识库、 知识以文档形式存在、数据量较大。

选择微调的场景

需要改变模型输出风格、需要特定任务模式、 交互格式固定、知识相对稳定。

两者结合

对于复杂场景,可以同时使用RAG和微调: RAG提供知识,微调优化交互风格和任务适配。

03RAG架构

RAG系统由多个核心组件构成,不同组件的组合形成不同的架构方案。

核心组件

  • 文档加载器 (Document Loader):从多种来源(PDF、网页、数据库)加载文档
  • 文本分割器 (Text Splitter):将长文档切分为适合的chunk
  • 向量化模型 (Embedding Model):将文本编码为向量
  • 向量数据库 (Vector Store):存储和检索向量
  • 检索器 (Retriever):根据查询找到相关文档
  • 生成器 (Generator):LLM根据上下文生成答案

架构变体

Naive RAG(基础RAG)

最简单的架构:检索Top-K chunk → 直接拼接到prompt → LLM生成。
优点:简单直接;缺点:检索质量直接影响效果。

Retrieve-Read-Retrieve(迭代RAG)

迭代检索:在生成过程中发现问题可以回头再检索。
适用于复杂问题,单次检索无法获取足够信息。

RAG + Post-processing(后处理RAG)

在检索后增加重排序、摘要、过滤等处理步骤, 提升检索结果的质量和多样性。

RAG + Fine-tuning(融合RAG)

结合微调技术,训练专门的检索器或生成器, 进一步提升系统在特定领域的性能。

架构选择建议

  • 简单问答:从Naive RAG开始
  • 复杂推理:考虑迭代RAG或后处理RAG
  • 垂直领域:融合RAG可能效果更好
----