Back to Blog RAG强化
RAG(Retrieval-Augmented Generation,检索增强生成)是解决大模型三大软肋(知识过时、缺乏私有数据、幻觉问题)的核心方案。即使在200K上下文窗口时代,RAG仍不可或缺——以10万份文档(每份5000字)为例,200K窗口仅能容纳15万字(千分之三),且每次查询携带15万字的API成...
Type RAG
Created May 10, 2026, 22:30:00 / Updated May 10, 2026, 22:30:00
Views
—
/ Comments
—
/ Words 2,429
RAG(Retrieval-Augmented Generation,检索增强生成)是解决大模型三大软肋(知识过时、缺乏私有数据、幻觉问题)的核心方案。即使在200K上下文窗口时代,RAG仍不可或缺——以10万份文档(每份5000字)为例,200K窗口仅能容纳15万字(千分之三),且每次查询携带15万字的API成本极高(日查询1万次可达数万美元)。
朴素RAG在Demo中可能表现良好(10问8对),但生产环境准确率常暴跌至40%。以下从七层架构出发,系统性解决RAG的7个致命问题,实现准确率从40%到92%的提升。
一、朴素RAG的7个致命缺陷
- 文档解析丢结构:PDF中的表格、公式、图片说明被解析为乱码或直接跳过,模型获取的是残缺信息。
- 切片粗暴:固定长度(如500字)一刀切,可能将关键语义(如”本政策适用于”和”2024年1月1日之后入职的员工”)切成两块,导致检索丢失上下文。
- Embedding模型选错:使用英文模型(如
text-embedding-ada-002)处理中文文档,导致”新年快乐”和”I leave”语义匹配混乱。
- 只用向量检索:向量检索对专有名词、精确数字、代码片段(如
error 4013)盲区严重,可能返回接口设计原则而非具体错误码文档。
- 无Rerank(精排):检索返回10条结果中可能仅2-3条相关,7条噪声直接塞给模型导致答案质量暴跌。
- Prompt塞爆:将10条长文本全部拼入Prompt,模型产生”中间遗失”(Lost in the Middle),仅关注开头和结尾。
- 无评估集:凭感觉优化,无法量化改动效果,导致修好Acase却破坏Bcase。
二、RAG七层架构模型
生产级RAG采用七层架构,每层有专门的技术方案:
Layer 1: Ingestion(文档摄入)
建立流水线持续监听多源数据:数据库、网页、文件系统、API。
Layer 2: Parsing(文档解析)
将PDF、Word、HTML转换为干净的结构化文本。此层质量决定后续所有层的上限。
2024年主流方案对比:
| 方案类型 | 代表工具 | 特点 | 适用场景 |
|---|
| 传统派 | PyPDF2, pdfplumber | 速度快,对复杂排版(表格、公式)无能为力 | 简单文本PDF |
| AI派 | Marker | 用AI理解版面布局,表格和公式都能搞定 | 复杂报表、学术论文 |
| 企业派 | Unstructured | 提供完整文档处理流水线,支持增量更新和失败重试 | 企业级生产环境 |
Layer 3: Chunking(切片)
好的切片应保证语义完整性,而非简单字数切割。切片策略对检索质量影响可达30个百分点。
2024年主流切片策略(三剑客):
-
语义切片(Semantic Chunking)
- 原理:计算相邻句子的Embedding相似度,相似度骤降处即为语义边界(话题转换点)。
- 效果:比固定长度切片提升15-25个百分点。
-
父子切片(Parent-Child Chunking)
- 结构:两层架构。小块(Child)用于检索,检索到后取其所属的大块(Parent)上下文送给模型。
- 优势:解决”小块检索精确但上下文不足,大块上下文足但检索不精确”的矛盾。
- 类比:像查书索引找到第83页,不会只看那一行,而是阅读整页内容。
-
命题切片(Proposition Chunking)
- 原理:用大模型将文档拆解为独立命题(自包含的事实陈述),如”2024年公司营收增长30%”。
- 特点:检索精确度最高,但需大模型处理,成本高,适合高价值文档。
Layer 4: Indexing(索引)
不仅是向量索引,应采用多索引并行:
- 向量索引:语义匹配
- BM25索引:关键词精确匹配
- 知识图谱索引(可选):关系推理
Embedding模型选型(中文场景2024):
- BGE-M3:BAAI出品,中文开源最强之一
- Jina Embeddings V3:多语言能力突出
- 维度选择反直觉:512维在特定业务数据上可能优于3072维,需在自有数据上评测,勿只看排行榜。
Layer 5: Retrieval(检索)
核心认知:只做向量检索是”自废武功”。
混合检索(Hybrid Search)架构:
- 向量检索与BM25并行执行
- 使用**RRF(Reciprocal Rank Fusion)**算法融合结果
- 互补原理:向量检索像”理解能力强但记性一般的人”,BM25像”记忆力惊人但不太理解语境的人”,组队互补盲区。
Query改写(Query Transformation)5种技术:
用户原始问题通常模糊、口语化,直接检索效果差。改写可提升召回率20-50个百分点:
- Multi-query:将一个问题改写为5个不同表述,分别检索后合并,覆盖多角度。
- HyDE(Hypothetical Document Embeddings):先让大模型生成假答案,用假答案去检索(答案与文档的语义相似度高于问题与文档)。
- Step-back:退一步问更抽象的问题。如用户问”Python 3.12有什么新特性”,退一步问”Python版本更新一般包含哪些内容”。
- Query Decomposition:将复杂问题拆分为子问题分别检索。
- Query Expansion:自动补充同义词和相关词。
Layer 6: Reranking(精排)
性价比最高的优化环节,可使答案准确率平均提升10-20个百分点。
技术原理:
- 两段式架构:
- 第一阶段:使用Bi-encoder(双塔模型)快速召回Top-50(分别编码Query和文档,速度快但粗糙)
- 第二阶段:使用Cross-encoder(交叉编码器)精排选出Top-5(将Query和候选文档一起送入模型逐一打分,慢但精确)
- 噪声过滤:Top-10结果中通常仅2-3条真正相关,Rerank将相关文档前置,噪声后置。
Layer 7: Generation(生成)
将精排后的上下文组装进Prompt,调用大模型生成答案,并附上引用来源。
三、高阶范式(2024)
1. Agentic RAG
- 核心:让Agent自主决定检索策略,而非固定管道。
- 能力:多轮检索(第一轮发现信息不足,自动换角度再查)、自主选择索引、判断检索次数。
- 成本:标准RAG的5-10倍,适用于复杂研究场景。
2. Graph RAG(Microsoft提出)
- 解决痛点:跨文档关系推理(如”哪些项目组负责人曾在同一所大学读书”)。
- 流程:
- 用大模型从文档抽取实体和关系构建知识图谱
- 查询时在图谱上遍历相关节点
- 将路径上的信息组装给模型
- 成本:普通索引的10-50倍,仅适用于关系密集的高价值场景。
四、生产级必备实践
1. 引用溯源(Citation)
企业场景无引用的RAG等于不可用。
- 实现:生成阶段让模型标注每句话的来源编号,后处理验证引用是否真实存在于检索文档中(过滤模型编造)。
- 体验:系统应支持跳转到原文具体位置(页码、段落、高亮)。
2. 成本控制优化
成本构成:Embedding生成、向量存储、检索计算、大模型生成(最贵)。
优化策略:
- Prefix Caching:缓存不变的System Prompt部分,可省**70%**成本。
- 模型路由:简单问题路由到小模型(如Haiku),可省**80%**成本。
- 相似查询缓存:复用历史查询结果。
- 效果:某企业RAG从每次查询0.1优化到0.01,达一个数量级差距。
五、评估驱动开发(Evaluation-Driven Development)
无评估集的优化是”瞎调”。建立评估集是工程化最重要环节。
评估集构建
- 4要素:问题、期望答案、相关文档、难度等级。
- 3大来源:
- 真实用户日志筛选
- 人工构造边界场景
- 大模型合成(可节省90%标注成本,需人工审核修正)
- 规模:100条起步,优质评估集至少500条。
4个核心指标
对应RAG的4个环节:
| 指标 | 英文 | 定义 | 优化方向 |
|---|
| 上下文召回率 | Context Recall | 相关文档是否被检索到 | 低→优化切片和检索策略 |
| 上下文精确率 | Context Precision | 检索结果中相关文档占比 | 低→优化Rerank |
| 忠实度 | Faithfulness | 生成答案是否忠实于检索上下文(无编造) | 低→优化生成Prompt |
| 答案相关性 | Answer Relevance | 答案是否真正回答用户问题 | 低→优化生成策略 |
Ablation Study(消融实验)
- 原则:每次只改一个变量,跑评估集看指标变化。
- 流程:建立基线→改一个变量→再跑评估集→对比指标→确定优化效果。
六、总结:优化路径 checklist
- 解析层:复杂PDF采用AI派工具(如Marker),确保表格/公式不丢。
- 切片层:放弃固定长度,采用语义切片/父子切片(生产环境首选)/命题切片(高价值文档)。
- 索引层:Embedding模型在自有数据评测,选择合适维度(未必越高越好);必须建立BM25索引。
- 检索层:实施混合检索(向量+BM25)+ RRF融合;部署Query改写(至少实施Multi-query和HyDE)。
- 精排层:部署Cross-encoder Rerank(性价比最高,必做)。
- 生成层:实施引用溯源,控制上下文长度(Top-5而非Top-10)。
- 评估层:建立500+条评估集,实施Ablation Study,用数据驱动优化而非感觉。
核心公式:混合检索(召回+50%)+ Rerank(准确率+10-20%)+ 评估驱动 = 生产级RAG。
Comments are temporarily unavailable because WALINE_SERVER_URL or PUBLIC_WALINE_SERVER_URL is not configured.
Comments
Notes, questions, and follow-ups are welcome here.
Comments are temporarily unavailable because
WALINE_SERVER_URL or PUBLIC_WALINE_SERVER_URLis not configured.