问题: 什么是RAG检索增强生成及其核心运作流程

👇 点击展开/折叠 面试背诵模板(建议先背这个) RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型生成能力相结合的技术框架。其核心运作流程分为索引和查询两个阶段:索引阶段将外部知识库(文档、网页等)切分、向量化后存入向量数据库;查询阶段将用户问题向量化后在数据库中进行相似性检索,将检索到的相关上下文与原始问题拼接为增强提示,交由LLM生成最终答案。该框架有效解决了LLM的幻觉问题、知识时效性不足和缺乏私有领域知识等局限性。
---

一、RAG产生的背景与核心价值

为什么需要RAG? 大语言模型存在三个固有限制:① 知识截止于训练数据时间点,无法回答最新问题;② 训练数据不含企业私有文档或专业领域知识;③ 容易产生事实性幻觉(hallucination)。RAG通过实时检索外部知识库注入相关上下文,让模型基于检索到的事实而非仅凭参数化记忆生成答案,从而提升准确性、可控性和可解释性。

二、核心运作流程(两阶段详解)

阶段一:离线索引(数据准备)

  1. 文档加载与解析:从多种数据源(PDF、Word、网页、数据库)读取原始文档。
  2. 文本分块(Chunking):将长文档切分为语义完整的短文本块(通常256-512 tokens),便于精准检索。
  3. 向量化嵌入:使用嵌入模型(如OpenAI text-embedding-3-small、BGE等)将文本块转换为高维向量。
  4. 存储索引:将向量及对应的原始文本存入向量数据库(如Milvus、Pinecone、Chroma等),并构建索引加速相似度搜索。

阶段二:在线查询(检索与生成)

  1. 问题向量化:将用户输入的问题用与索引阶段相同的嵌入模型转换为向量。
  2. 相似性检索:在向量数据库中进行ANN(近似最近邻)搜索,返回与问题语义最相似的Top-k个文本块。
  3. 上下文注入:将检索到的文本块作为上下文,与用户问题一起组合成结构化提示词。
  4. LLM生成:将增强后的提示词输入大语言模型,生成基于检索事实的最终答案。

三、技术选型要点

组件 常见选择 考量因素
嵌入模型 OpenAI text-embedding-ada-002、BGE、M3E 语言支持、维度大小、推理成本
向量数据库 Milvus、Pinecone、Weaviate、Chroma 云原生/本地部署、规模、查询延迟
分块策略 固定长度、语义分割、段落边界 过长影响检索精度,过短丢失上下文
检索策略 稠密检索(向量)、稀疏检索(BM25)、混合检索 精度与召回率的权衡

四、RAG vs 微调(Fine-tuning)的对比

维度 RAG 微调
知识更新 实时(更新向量库即可) 需重新训练,周期长
可解释性 高(可溯源到具体文档片段) 低(知识隐含在模型参数中)
成本 中(需向量数据库 + LLM调用) 高(需标注数据 + GPU训练资源)
适用场景 动态知识库、开放域问答 固定风格、特定领域能力固化
组合使用 先检索增强,必要时对特定领域微调 微调后仍可搭配RAG实现动态更新

五、RAG的进阶变体(拓展)

  • Self-RAG:模型主动决定是否检索,以及检索后自我反思校准答案质量。
  • Graph-RAG:利用知识图谱构建实体关系,实现多跳推理和更复杂的上下文关联。
  • 多模态RAG:检索图像、视频、音频等多种模态数据,支持更丰富的问答场景。