RAG 概念详解:检索增强生成

RAG 的全称是 Retrieval-Augmented Generation,中文译为检索增强生成,是一种结合信息检索大语言模型(LLM)生成的 AI 技术方案,核心目标是解决 LLM 的“幻觉”问题、补充实时/私有知识,让模型生成的回答更准确、更可控、更具时效性。

一、RAG 诞生的核心背景

大语言模型(如 GPT-3.5、Llama 3、Qwen 2)存在两个致命痛点:

  1. 知识时效性差:模型的训练数据有时间截止点(比如 GPT-4 截止到 2023 年 4 月),无法回答训练后出现的新事件、新数据。
  2. “幻觉”问题突出:模型会凭空生成看似合理但错误的内容,尤其在处理专业领域、企业私有数据时,准确性无法保证。
  3. 无法访问私有数据:模型预训练时没有学习企业内部文档、个人知识库等私有信息,无法直接基于这些内容回答问题。

RAG 的本质就是为 LLM 加装一个“外部知识外挂”:在生成回答前,先从外部知识库中检索与用户问题相关的信息,再将这些信息作为“参考资料”传给 LLM,让模型基于参考资料生成回答。

二、RAG 的核心工作流程

RAG 的流程可以分为 3 个核心阶段,完整链路如下:

用户提问 → 检索阶段 → 增强阶段 → 生成阶段 → 最终回答

1. 检索阶段:从知识库找“参考资料”

这是 RAG 的核心步骤,目的是精准匹配与用户问题语义相关的信息片段

  • 前置准备(离线流程)
    1. 知识库构建:收集需要的知识(如企业文档、PDF、网页、数据库数据)。
    2. 文本分片:将长文本拆分成短片段(比如 200-500 字符),避免超出 LLM 上下文长度限制,同时保证片段语义完整。
    3. 文本向量化:通过嵌入模型(如 Sentence-BERT、OpenAI Embeddings)将每个文本片段转换成数值向量。
    4. 向量存储:将向量和对应的文本片段存入向量数据库(如 Chroma、Milvus、Redis)。
  • 实时检索(在线流程)
    1. 用户提出问题后,先将问题向量化
    2. 在向量数据库中,通过相似度算法(如余弦相似度)检索与问题向量最匹配的 Top N 文本片段(比如 Top3、Top5)。

2. 增强阶段:拼接“带参考资料的 Prompt”

用户问题检索到的文本片段拼接成一个新的 Prompt,传递给 LLM。
示例 Prompt 格式:

参考资料:
1. LangChain4j 是 JVM 生态的 LLM 应用开发框架,支持 Java 和 Kotlin。
2. RAG 是 LangChain4j 的核心场景,通过文本向量化和向量检索提升回答准确性。

请基于以上参考资料回答问题:LangChain4j 的核心应用场景是什么?

这个步骤的关键是约束 LLM 只能基于参考资料生成回答,杜绝“幻觉”。

3. 生成阶段:LLM 基于参考资料输出回答

LLM 接收增强后的 Prompt,结合参考资料的信息生成回答,最终返回给用户。
此时的回答不再依赖模型的预训练知识,而是基于外部真实、准确的资料,既解决了幻觉问题,又能覆盖私有/实时知识。

三、RAG 的核心优势

优势 详细说明
解决幻觉问题 回答基于检索到的真实资料,而非模型臆想,准确性大幅提升
知识实时更新 无需重新训练 LLM,只需更新知识库,就能让模型掌握最新信息(如新闻、政策)
支持私有知识 企业内部文档、机密数据可存入私有知识库,避免上传至公有云 LLM,保障数据隐私
降低训练成本 相比微调 LLM,RAG 无需大量算力和数据标注,成本更低、落地更快
可解释性强 回答可以追溯到具体的参考资料片段,方便验证和纠错

四、RAG 的分类

根据复杂度和能力,RAG 可分为 基础版 RAG进阶版 RAG 两类:

1. 基础 RAG(Naive RAG)

  • 特点:流程简单,仅包含“文本分片→向量化→向量检索→Prompt 增强→生成”的基础链路。
  • 局限:检索精度依赖文本分片质量和向量相似度算法,可能出现“检索到无关信息”或“漏检关键信息”的问题。
  • 适用场景:小型知识库、简单问答场景(如个人文档问答)。

2. 进阶 RAG(Advanced RAG)

在基础 RAG 之上增加了优化步骤,提升检索和生成效果,常见优化手段:

  • 检索优化
    • 混合检索(Hybrid Search):结合向量检索(语义匹配)和关键词检索(如 BM25),兼顾语义和字面匹配。
    • 重排序(Re-ranking):先用向量检索得到 Top20 片段,再用重排序模型(如 Cross-BERT)筛选出 Top5 最相关的片段。
    • 多轮检索:根据用户的追问,调整检索条件,补充更精准的资料。
  • 生成优化
    • 提示词工程:优化 Prompt 格式,明确约束 LLM 的回答范围和风格。
    • 记忆机制:结合对话历史,让检索和生成更贴合上下文。
  • 适用场景:企业级知识库、复杂问答场景(如智能客服、医疗/法律咨询)。

五、RAG 的关键组件

RAG 系统的落地依赖以下核心组件,这也是我们之前聊到的 LangChain4j、Ollama、向量数据库的用武之地:

  1. 知识库:存储结构化/非结构化知识的数据源(文档、数据库、API 等)。
  2. 文本处理工具:文本分片器(如 LangChain4j 的 DocumentSplitters)。
  3. 嵌入模型:负责文本向量化(如 Sentence-BERT、Ollama 本地嵌入模型)。
  4. 向量数据库:存储和检索向量(如 Chroma、Milvus)。
  5. 检索器:执行相似度检索的模块(如 LangChain4j 的 EmbeddingStore)。
  6. 大语言模型:生成最终回答(如 GPT-4、Llama 3、Qwen 2,可通过 Ollama 本地部署)。
  7. 框架工具:串联所有组件的开发框架(如 LangChain4j、Spring AI)。

六、RAG 的典型应用场景

  1. 企业知识库问答:员工查询内部文档、产品手册、规章制度,无需人工整理。
  2. 智能客服:基于企业的客服话术、售后案例,自动回答用户问题,替代人工坐席。
  3. 实时资讯问答:结合新闻、财报等实时数据,回答最新事件相关问题。
  4. 医疗/法律咨询:基于专业文献、法规条文,生成准确的咨询建议(需结合人工审核)。
  5. 代码助手:基于企业内部代码库、开发文档,辅助程序员编写代码、解决问题。

七、RAG 与 LLM 微调的区别

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

维度 RAG LLM 微调
核心原理 检索外部知识辅助生成 用新数据调整模型权重,让模型记住知识
知识更新 实时更新知识库即可,成本低 需重新微调模型,成本高、周期长
数据隐私 数据存储在私有知识库,安全 微调数据可能需要上传至训练平台,有泄露风险
适用场景 知识频繁更新、私有数据、低成本落地 知识固定、需要模型深度掌握(如特定领域对话)
算力要求 低(无需训练) 高(需 GPU 集群训练)

简单来说:短期快速落地选 RAG,长期深度适配选微调

总结

RAG 是连接 LLM 与外部知识的桥梁,通过“检索+生成”的模式,既保留了 LLM 生成自然语言的能力,又解决了其知识过时、易产生幻觉、无法访问私有数据的痛点。它是当前企业落地 AI 应用的主流方案,结合 LangChain4j 框架和 Ollama 本地模型,可快速搭建私有化、低成本的 RAG 系统。

Logo

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

更多推荐