系统讲解 RAG 的原理、与微调的区别,以及生产环境中的最佳实践。
一、大模型为什么需要 RAG?
1.1 大语言模型的三个典型局限
大语言模型(LLM)如 GPT-4、Claude、通义千问等,通过海量文本训练,学会了「像人一样读写」。但它们存在三个根本性局限:
1.2 RAG 解决的核心问题
RAG = 让大模型在回答前,先去「查资料」,再基于查到的资料回答。
这样可以把最新、私有、可溯源的知识注入生成过程,而不是全部塞进模型参数里。
出处:NVIDIA 对 RAG 概念的官方解读。
二、RAG 是什么?
2.1 正式定义
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种将外部非参数化记忆(如文档库、向量索引)与预训练语言模型结合的技术框架,在生成答案前先检索相关文本,再让模型基于检索结果生成回答。
出处:Lewis et al., 2020 — 论文标题即 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,发表于 NeurIPS 2020。
2.2 两个「记忆」的类比
Prompt(提示词) = 发给模型的完整指令,里面包含检索到的资料 + 用户问题。RAG 的核心就是「把对的资料塞进 Prompt」。
2.3 RAG 与「微调」的区别
最佳实践:两者可组合使用——RAG 负责知识,微调负责语气与输出格式。
三、RAG 的工作流程(R-A-G)
RAG 典型流程分为三个阶段:
1. Retrieve(检索)
用户问题 → 向量化 → 在向量数据库中进行相似度搜索 → 返回 Top-K 相关片段。
2. Augment(增强)
把检索到的片段 + 原始问题 + 系统指令拼接成完整的 Prompt。
3. Generate(生成)
把增强后的 Prompt 送给 LLM,生成有据可查的答案。
关键设计点:
● Top-K 的选择(通常 3~8)
● Prompt 模板的设计(系统指令 + 参考资料 + 用户问题)
● 是否加入来源标注
四、生产级 RAG 实践
4.1 Demo 与生产环境技术栈对比
总结:Demo 阶段轻量快速验证;生产阶段核心升级方向是可扩展性、质量控制与可观测性。
4.2 Embedding 搭建使用方式
快速选型建议:
● 快速验证 → 云端 API(Doubao / OpenAI)
● 企业内网 / 强隐私 → 本地部署或 TEI
● 高并发生产 → TEI / vLLM
● 多模态 RAG → Doubao Vision / CLIP
4.3 向量数据库(Vector DB)使用方式
4.4 分块策略(Chunking)
生产环境中固定长度分块容易切断语义,推荐以下三种策略:
实现要点:
● Overlap 始终设置 10–20%(50–150 字符)
● 中文使用 。!? 分句
● 先测试 chunk_size 200/400/800 对 recall 的影响
● 结合标题/列表做结构感知分块
● 优先使用 LangChain / LlamaIndex 的 TextSplitter
4.5 重排序(Rerank)
是什么?
重排序是向量召回后的精排步骤,对候选片段进行更精细的相关性打分,过滤噪声后再交给 LLM。
作用:显著提升答案质量(通常 +5~15% 相关性),降低幻觉风险。
推荐方案:
实现要点:
1. 位置:放在向量检索(Top-K=2050)之后、LLM 生成之前,通常重排到 Top-58。
2. 性能:Cross-Encoder 推理较慢,建议对 20~50 条候选做重排;可加缓存或异步处理。
3. 中文场景:优先 bge-reranker-v2-m3 或 Cohere 多语言版。
4. 集成方式:LangChain 提供 CohereRerank、CrossEncoderReranker 等组件,可一键插入 RAG 链。
4.6 评估与监控
作用:回答「RAG 系统到底好不好用?」并持续发现问题。
生产推荐工具:
核心区别:
实现方式:
● RAGAS:最推荐起步,离线跑测试集即可得到各指标分数。
● LangSmith:生产最推荐,设置环境变量后自动全链路追踪。
● Arize Phoenix:适合需要实时监控和根因定位的场景。
● 最小可行路径:RAGAS 建立 baseline → LangSmith 在线追踪 → Phoenix 根因分析。
五、总结与建议
Demo 阶段:轻量、快速验证、成本低,适合技术分享和原型验证。
生产阶段:核心升级方向是可扩展性、稳定性、质量控制和可观测性。
● 向量库从本地 Chroma 升级到托管/分布式向量数据库
● 增加 Rerank + 更强的文档解析 + 语义分块
● 引入 LangChain/LlamaIndex + 完整评估监控体系
● 前端和部署走工程化路线
一句话总结:
RAG 的本质是「把知识从模型参数里解放出来」,让大模型真正成为「会查资料的助手」。