一、RAG 核心定义

RAG 是 Retrieval-Augmented Generation 的缩写,中文译为检索增强生成,是一种结合信息检索大语言模型(LLM)生成的人工智能技术。

它的核心目标是解决大语言模型的两大痛点

  1. 知识时效性差:大模型的训练数据有时间截止点,无法知晓训练之后的新信息(比如 2025 年后的行业动态、企业内部最新文档)。
  2. 事实性错误(幻觉) :大模型可能会生成看似合理但与事实不符的内容,尤其在专业领域(如医疗、法律、技术文档)风险较高。

简单来说,RAG 的逻辑是:先检索,再生成—— 在让大模型回答问题前,先从外部知识库中找到与问题相关的权威资料,再让模型基于这些资料进行回答,从而保证回答的准确性和时效性。

二、RAG 的核心工作流程

一个完整的 RAG 系统通常分为 两大阶段离线构建知识库在线问答推理,具体步骤如下:

阶段 1:离线构建知识库(数据准备阶段)

这一步是 RAG 的基础,目的是将海量非结构化数据(文档、PDF、网页、对话记录等)转化为可高效检索的格式。

  1. 文档加载:导入各类数据源,比如本地 PDF、Word、TXT 文件,在线网页、数据库数据,甚至企业内部的 Confluence 文档、Notion 笔记。

  2. 文档分割:将长文档切分成短文本片段(称为 “Chunk”)。因为大模型的上下文窗口长度有限,过长的文本无法全部输入,且分割后能提高检索精度。常见的分割策略有:按固定长度分割、按段落 / 章节分割、按语义分割(基于 Sentence-BERT 等模型)。

  3. 向量化(Embedding) :将每个文本 Chunk 转化为计算机能理解的向量(Embedding Vector)。这一步需要用到嵌入模型(如 OpenAI 的 text-embedding-ada-002、开源的 BGE、Cohere Embedding),向量的核心作用是用数学方式表示文本的语义—— 语义相似的文本,向量距离也更近。

  4. 向量存储:将生成的文本向量和对应的原始 Chunk 存储到向量数据库中。常见的向量数据库有:

    • 开源方案:Milvus、Chroma、FAISS、Pinecone(有免费层)
    • 云服务:阿里云向量数据库、腾讯云向量数据库、AWS Bedrock 向量存储

阶段 2:在线问答推理(用户交互阶段)

当用户提出问题时,系统会执行以下步骤生成回答:

  1. 问题向量化:将用户的问题转化为和知识库中相同维度的向量。

  2. 相似性检索:在向量数据库中,计算问题向量与所有文本 Chunk 向量的相似度(常用余弦相似度、欧氏距离),找出最相关的 Top-K 个 Chunk(比如 Top-3、Top-5)。

  3. 构建提示词(Prompt) :将用户问题 + 检索到的相关 Chunk 内容,按照一定的格式组合成 Prompt,输入到大语言模型中。

    示例 Prompt 格式:

    plaintext

    请基于以下参考资料回答用户问题,不要编造信息。
    参考资料:
    1. [检索到的 Chunk1 内容]
    2. [检索到的 Chunk2 内容]
    用户问题:[用户的问题]
    回答:
    
  4. 模型生成回答:大语言模型基于 Prompt 中的参考资料,生成准确、有依据的回答。

三、RAG 的核心价值

优势 具体说明 适用场景
知识时效性可控 无需重新训练大模型,只需更新知识库,就能让模型掌握最新信息 新闻资讯问答、企业内部文档查询、行业政策解读
降低幻觉风险 回答完全基于检索到的权威资料,可追溯来源 医疗诊断辅助、法律条文解释、技术文档答疑
低成本落地 相比大模型微调(Fine-tuning),RAG 无需大量标注数据和高额算力成本 中小企业知识库、个人助手、垂直领域问答机器人
个性化定制 可针对特定领域构建专属知识库,实现 “领域专家级” 回答 高校科研文献问答、电商产品客服、金融财报分析

四、RAG 的分类与进阶方向

根据技术复杂度和效果,RAG 可分为 基础 RAG高级 RAG

  1. 基础 RAG即上述的 “检索 + 生成” 流程,核心依赖关键词匹配简单的相似性检索,优点是实现简单、部署快,缺点是在复杂问题场景下检索精度不足。适合场景:简单的文档问答、个人知识库助手。

  2. 高级 RAG(增强 RAG) 为了解决基础 RAG 的不足,研究者和工程师提出了多种优化策略,常见的有:

    • 多轮检索:先进行粗检索(快速筛选候选 Chunk),再进行精检索(基于语义深度匹配)。
    • 查询重写:当用户问题表述模糊时,先让大模型将问题改写为更精准的检索词(比如将 “怎么用 Python 做 RAG” 改写为 “Python 实现 RAG 的步骤 向量数据库 嵌入模型”)。
    • Hybrid 检索:结合向量检索(语义相似)和关键词检索(如 BM25 算法),兼顾语义理解和关键词匹配的优势。
    • 知识图谱增强:将结构化的知识图谱与非结构化的文本知识库结合,解决复杂的逻辑推理问题(比如 “某疾病的治疗药物有哪些副作用”)。

五、RAG 的典型应用场景

  1. 企业内部知识库:员工可通过自然语言查询公司制度、产品手册、技术文档,替代传统的关键词搜索(如 Confluence 搜索)。
  2. 智能客服机器人:电商、金融、政务领域的客服,可基于产品说明书、政策条文,快速回答用户的常见问题,减少人工客服压力。
  3. 科研文献助手:高校科研人员可输入论文标题或研究问题,检索相关文献并生成综述、提炼核心观点,辅助科研工作。
  4. 医疗辅助诊断:基于最新的医学指南、病例数据,为医生提供疾病诊断建议、用药参考(需结合专业医疗资质)。
  5. 个性化学习助手:学生可上传教材、课件,向助手提问知识点,助手基于教材内容进行讲解,实现 “一对一” 辅导。

六、RAG 与大模型微调(Fine-tuning)的区别

很多人会混淆 RAG 和 Fine-tuning,两者的核心差异如下:

维度 RAG 大模型微调
核心逻辑 外部检索,动态引用知识 内部训练,将知识固化到模型权重中
更新成本 低,直接更新知识库即可 高,需要重新训练模型,消耗大量算力
数据要求 无需标注数据,原始文档即可 需要高质量的标注数据(问题 - 答案对)
适用场景 知识频繁更新、长尾知识、低成本落地 知识相对固定、需要模型深度掌握某领域知识

简单总结:短期快速落地用 RAG,长期深度优化用微调,很多场景下也会采用 “RAG + 微调” 的组合方案。

七、RAG 技术栈与入门实践建议

1. 核心技术栈

  • 嵌入模型:开源优先选 BGE、m3e;闭源选 OpenAI Embedding、阿里云通义 Embedding。
  • 向量数据库:入门选 Chroma(轻量级,无需部署);生产环境选 Milvus、Pinecone。
  • 大语言模型:开源选 Llama 3、Qwen;闭源选 GPT-4o、通义千问、文心一言。
  • 框架工具:LangChain、LlamaIndex(可大幅简化 RAG 开发流程,无需从零写代码)。

2. 入门实践步骤

  1. LangChain 加载本地 PDF 文档,进行文档分割。
  2. BGE 模型 生成文本向量。
  3. 将向量存储到 Chroma 数据库。
  4. 对接 GPT-3.5Qwen,实现简单的问答功能。
  5. 优化检索策略(比如调整 Top-K 数量、尝试 Hybrid 检索),提升回答准确率。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐