【AI】RAG 全解析:从概念到完整 Pipeline

一、开篇:RAG 是什么

RAG 全称 Retrieval-Augmented Generation,检索增强生成。简单说,就是检索 + 大模型生成的一套架构。

二、RAG 的工作流程

RAG 的完整流程可以拆成四步:

  1. 提前把外部文档做切片、向量化,存入向量数据库。
  2. 用户提问时,把问题也转为向量,去向量库检索出和问题最相关的文档片段。
  3. 把检索出来的片段,连同用户问题一起拼进 Prompt 喂给大模型。
  4. 大模型参考给到的参考资料,基于资料生成答案。

关键点:不修改大模型本身权重,不改模型,只是给模型临时喂外部资料。

三、RAG 主要解决大模型的几个痛点

  • ① 知识截止问题:大模型知识库是训练时固定的,不知道最新数据、新业务资料。RAG 可以接入实时/新增文档。
  • ② 幻觉问题:让模型基于检索到的真实文档作答,减少一本正经编造内容,答案可以溯源到原文。
  • ③ 私有知识库使用:企业内部文档、业务手册,不需要重新训练模型,直接拿来用。
  • ④ 绕开上下文窗口限制:不需要把全部文档塞进去,只检索相关片段送入模型,避免超长文本超限。

四、RAG 的局限

RAG 不会提升模型本身能力,不会改变模型输出风格。如果检索召回的内容不对,模型就会基于错误资料给出错误答案;效果依赖文档质量、切片质量、检索效果。

五、RAG vs LoRA

  • RAG:给模型”看什么资料”,解决事实知识、私有文档;不改模型权重。
  • LoRA 微调:改模型”怎么说”,解决输出格式、风格、任务行为;少量更新模型参数。
  • 两者可以组合使用。

六、RAG 完整 Pipeline

完整工作链路分为离线构建与在线推理两个阶段。

6.1 文档解析

拿到原始文件(PDF、Word、网页等),做解析,提取出里面的文本内容,过滤页眉页脚、表格乱码、无效格式,输出干净文本。目标:把各类格式文档转为可用纯文本。

6.2 文本切片(Chunk 切分)

把长文本切为多个 chunk 片段。不能切太碎丢失上下文,也不能太大(否则噪声多、token 消耗高)。常用固定大小切分、语义切分。目标:产出适合检索的文本片段。

6.3 向量化(Embedding)

调用 Embedding 嵌入模型,把每一个文本 chunk 转换成高密度数值向量。语义相近的文本,向量在空间上距离更近。目标:文字变成向量,用来做相似度匹配。

6.4 向量存储

把生成好的向量连同原始文本 chunk 一起存入向量数据库,建立索引,为后续快速检索做准备。

6.5 混合检索

用户提问,问题同样做 Embedding。混合检索一般是向量检索 + 关键词检索:向量检索靠语义相似度召回;关键词检索靠关键词字面匹配(如 BM25)。两者结果合并,拿到一批候选文档片段。

只靠向量检索容易出现语义相似但字面不匹配,混合检索提升召回全面性。

6.6 重排序(Rerank)

混合检索返回一批候选,数量偏多,部分相关性不高。Rerank 重排模型对候选片段和用户问题做相关性打分,重新排序,过滤掉低分无关片段,只保留 Top-N 最相关的内容。Rerank 是 RAG 效果提升非常关键的一步,提纯检索结果。

6.7 Prompt 工程

把用户原始问题 + Rerank 筛选后的参考上下文,组装成 Prompt 提示词。提示词约束模型:严格基于给出的参考资料回答,资料没有就如实说不知道,不要编造。

6.8 大模型调用

将组装好的 Prompt 送入大模型,大模型参考上下文生成最终答案返回给用户。

七、幻觉缓解(贯穿全链路)

幻觉不是单一环节解决,整套链路共同缓解:

  • 上游:文档质量、合理切片、混合检索 + Rerank,保证给到模型的资料准确相关。
  • Prompt 约束:要求不编造,不知道就说明。
  • 输出层:支持引用原文片段溯源。
  • 即便如此,幻觉也无法 100% 根除。

八、总结

  • 离线构建阶段:检索阶段(解析-切片-向量化-入库)。
  • 在线推理阶段:用户来了之后(混合检索-Rerank-Prompt-LLM 调用)。
Tags:

发表回复

Your email address will not be published. Required fields are marked *.

*
*