RAG核心概念框架

📚** 《RAG 整体流程概念》核心框架**
一、RAG 是什么?为什么需要它?
-
定义 :RAG = Retrieval(检索) + Augmented(增强) + Generation(生成),即通过检索外部知识来增强大语言模型(LLM)的回复。
-
**解决 LLM ** 的三大缺陷 :
- 专业领域知识不足 (训练数据为通用语料);
- 信息过时 (虽部分模型已支持联网,但企业场景需私有知识);
- 幻觉问题 (胡说八道)——RAG 用真实文档约束生成。
-
核心思想 :不把全部知识塞给 LLM,而是“按需检索 + 注入上下文”。
✅ RAG 主要针对 专业领域知识不足 这一痛点。
二、**为什么不能直接把所有知识喂给 ** LLM ?
- Token 长度限制 :即使支持百万 token(如 Gemini),也无法承载整个企业知识库;
- 成本高 :输入越长,推理费用越高;
- 效果差 **:实验证明,**检索单个相关片段 比输入整篇文档效果更好。
三、RAG 完整流程五步法
-
数据清洗(ETL)
- **Extract:从 PDF/Word/数据库等抽取原始数据; **
- **Transform:去广告、空行、HTML 标签,规范化文本; **
- Load:加载到处理管道(如 LangChain 的 Loader)。
-
Chunk 分块(文本切片)
- 块大小 **:小(200–400 token,适合 FAQ)、中(400–800,最常用)、大(800–1500,需上下文); **
- 重叠(Overlap) **:10%–20%,防止语义断裂; **
- 分块策略 :
- 固定大小(简单但可能切断句子);
- **递归分块(按 **
<span class="ne-text">\n\n</span>→<span class="ne-text">\n</span>→<span class="ne-text">.</span>优先级切分,保留语义); - Q&A 分段(每对问答作为一个 chunk);
- 父子分段(子块检索 + 父块提供上下文)。
-
Embedding 嵌入
- **将文本 chunk 转为向量(使用 embedding 模型如 text-embedding-ada-002); **
- 存入 向量数据库 (如 FAISS、Chroma、Milvus)。
-
检索(Retrieval)
- **用户提问 → 向量化 → 在向量库中找 Top-K 相似 chunk; **
- 检索方式演进 :
- 全文检索(关键词匹配);
- 向量检索(语义相似);
- 混合检索 (关键词初筛 + 向量精排);
- 重排序(Re-rank) :在 Top-K 结果上用 Cross-Encoder 精排,提升相关性。
- 生成(Generation)
- **将“用户问题 + 检索到的知识”拼接成 Prompt; **
- 输入 LLM 生成最终回答。
四、关键优化点
- 重排序(Re-rank)必要性 :向量相似度 ≠ 任务相关性,需二次精排;
- 多路召回 :结合关键词、向量、规则等多种召回策略;
- 评估指标 :关注 Recall@K、MRR、答案准确率,而非仅 embedding 相似度。
💡** 文章核心结论**
RAG 不是简单“检索+生成”,而是一套 端到端的知识增强系统工程 ,涉及数据治理、分块策略、向量检索、重排序、Prompt 工程等多个环节,需根据业务场景精细调优。