核心定义:RAG (Retrieval-Augmented Generation) 是一种让大模型拥有"外挂大脑"的技术架构。
心智模型 :开卷考试。
- 传统 LLM = 闭卷考试(靠训练时的内隐记忆,知识易过期,易产生幻觉)。
- RAG = 先翻书(检索),再回答(生成)。
一、 核心架构全景 (The Architecture)
RAG 系统由两条核心数据流组成:
<math xmlns="http://www.w3.org/1998/Math/MathML"> R A G = 离线数据链路 (索引) + 在线服务链路 (检索与生成) RAG = \text{离线数据链路 (索引)} + \text{在线服务链路 (检索与生成)} </math>RAG=离线数据链路 (索引)+在线服务链路 (检索与生成)
1. 离线链路 (Offline Pipeline)
目标:将非结构化文档(PDF)转化为高质量的、机器可读的向量索引。
- 动作 :提取 (Extract) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 清洗 (Clean) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 切分 (Chunk) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 向量化 (Embed) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 存储 (Store)。
2. 在线链路 (Online Pipeline)
目标:理解用户问题,精准召回知识,生成可靠答案。
- 动作 :Query 理解 <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 路由/检索 (Retrieve) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 重排序 (Rerank) <math xmlns="http://www.w3.org/1998/Math/MathML"> → \rightarrow </math>→ 生成 (Generate)。
二、 关键概念辨析 (Key Concepts)
| 概念 | 别名/解释 | 作用与比喻 |
|---|---|---|
| Embedding | 向量化 | 把文字变成数字数组(坐标),是计算机理解语义的基础。 |
| Dense Vector | 稠密向量 | 懂语义。适合模糊搜索(如"如何让车停下"匹配"摩擦力")。 |
| Sparse Vector | 稀疏向量/关键词 | 懂符号 。适合精确匹配(如 " <math xmlns="http://www.w3.org/1998/Math/MathML"> F = m a F=ma </math>F=ma", "牛顿")。 |
| Bi-Encoder | 双塔模型 (如 bge-m3) | 海选。看图不看人,速度快,用于初次检索 (Retrieval)。 |
| Cross-Encoder | 交叉模型 (如 bge-reranker) | 精选。面对面面试,精度极高但慢,用于重排序 (Rerank)。 |
| LlamaIndex | 框架 (Framework) | 包工头/骨架。负责流程调度,不生产向量。 |
| Chunking | 切片 | 切书。把长文章切成小块,便于检索。 |
| Small-to-Big | 父子索引 | 索引小块,返回大块。既能精准定位,又能提供完整上下文。 |
三、 详细流程与技术选型 (Step-by-Step)
阶段 1:离线数据准备 (Data Preparation)
针对 PDF 物理教材 的特化方案:
1. 数据提取 (Extraction)
- 挑战:PDF 乱码、公式丢失、图片丢失。
- 技术栈 :Magic-PDF (MinerU) (首选) 或 PyMuPDF。
- 核心动作 :
- 公式还原 :必须将数学公式识别为 LaTeX 格式 ( <math xmlns="http://www.w3.org/1998/Math/MathML"> E = m c 2 E=mc^2 </math>E=mc2)。
- 去噪:剔除页眉、页脚、页码(避免检索到"第12页"这种无效信息)。
- 版面分析:区分正文、侧边栏、表格。
2. 多模态增强 (Enhancement)
- 挑战:物理教材包含大量受力分析图、电路图。
- 策略 :
- 分类:区分"核心图表"(Type A,需详述)和"装饰配图"(Type B,略过)。
- VLM 描述 :使用 Qwen-VL 或 GPT-4o 生成详细 Caption。
- Prompt: "详细描述电路连接方式、受力方向..."
- 锚点绑定:将图片 Caption + AI 描述 + 原文段落强绑定为一个 Chunk。
3. 切分策略 (Chunking)
- 策略 :Structure-Aware (结构化切分)。优先按 Markdown 标题切分。
- Small-to-Big (父子索引) :
- Child Chunk (200字):用于计算向量,语义聚焦,检索更准。
- Parent Chunk (1000字):包含完整的推导上下文,送给 LLM 阅读。
4. 向量化与索引 (Indexing)
- 技术栈 :BAAI/bge-m3。
- 优化技巧 :
- 混合表征:同时存储 Dense + Sparse 向量(物理符号极其重要)。
- 公式自然语言化 :将 LaTeX 翻译为中文拼接到文本后(如
$v=at$-> "速度时间公式")。 - 假设性问题 (Reverse HyDE):预生成"这个片段能回答什么问题"并存入索引。
阶段 2:在线检索与生成 (Online Serving)
1. Query 理解 (Query Understanding)
- 目标:让系统听懂"人话"。
- 技术手段 :
- Step-back Prompting (物理必杀技):先问宏观原理("牛顿定律是什么"),再问具体题目。
- Query Rewrite:将口语"滑块那个题"改写为"斜面滑块受力分析"。
- HyDE:针对概念性问题,先生成"幻觉答案"去检索。
2. 混合检索 (Hybrid Retrieval)
- 动作 :
Vector DB.search() - 策略 :
- 语义 (Dense):找原理。
- 关键词 (Sparse):找公式符号、专有名词。
- 元数据过滤 :
filter="grade=='必修一'"。
- 注意 :这一步只做数学计算,不调用 GPT-4。
3. 重排序 (Reranking) ------ 关键提分点
- 技术栈 :BAAI/bge-reranker-v2-m3。
- 动作 :
- 检索召回 Top 50。
- Reranker 模型逐一精读打分。
- 剔除逻辑不通的干扰项(如仅仅包含关键词但内容无关的习题背景),选出 Top 5。
4. 生成 (Generation)
- 技术栈 :GPT-4o / DeepSeek。
- Prompt 优化 :
- CoT (思维链):强制要求"先列公式 -> 再代入数据 -> 最后计算"。
- Lost in the Middle:核心公式片段放 Prompt 开头或结尾。
- 引用标注 :要求输出
(来源:必修一 P32)。
四、 物理教材 RAG 实战 CheckList
在动手写代码前,请检查以下要点:
- PDF 解析器选对了吗? (能否识别 LaTeX 公式?)
- Chunking 是否断章取义? (表格和解释分开了吗?建议用 Small-to-Big)
- 有没有做混合检索? (搜 <math xmlns="http://www.w3.org/1998/Math/MathML"> F = m a F=ma </math>F=ma 能搜到吗?需要 Sparse 向量)
- 有没有加 Rerank? (这是从 60 分到 90 分的关键步骤)
- 在线链路是否理解了 Query? (用户问得模糊时是否有改写机制?)
- 向量库是否存了元数据? (章节、年级、图片类型)
五、 推荐技术栈清单 (Tech Stack)
| 模块 | 推荐工具 | 作用与理由 |
|---|---|---|
| Orchestration | LlamaIndex | 专为 RAG 设计,接口丰富 (NodeParser, Retriever)。 |
| ETL / PDF | Magic-PDF (MinerU) | 中文、公式支持最好的开源工具。 |
| Embedding | BAAI/bge-m3 | 支持长文本、多语言、混合检索 (Dense+Sparse)。 |
| Rerank | BAAI/bge-reranker | 中文语义理解强,过滤噪声能力强。 |
| Vector DB | Milvus / Elasticsearch | 生产级标准,支持混合检索。 |
| LLM | OpenAI (GPT-4o) | 逻辑推理强,物理题解题能力最佳。 |
六、 总结语
做 RAG 就像做菜,数据质量是核心:
- Magic-PDF 是净水器,确保水源干净。
- BGE-M3 是采购员,买到对的食材。
- Rerank 是质检员,把烂叶子挑出去。
- LLM 是大厨,最后根据食材炒出一盘好菜。
切记:Garbage In, Garbage Out (垃圾进,垃圾出)。离线数据处理的质量决定了你系统的上限。