Back to Blog

RAG强化

RAG(Retrieval-Augmented Generation,检索增强生成)是解决大模型三大软肋(知识过时、缺乏私有数据、幻觉问题)的核心方案。即使在200K上下文窗口时代,RAG仍不可或缺——以10万份文档(每份5000字)为例,200K窗口仅能容纳15万字(千分之三),且每次查询携带15万字的API成...

RAG(Retrieval-Augmented Generation,检索增强生成)是解决大模型三大软肋(知识过时、缺乏私有数据、幻觉问题)的核心方案。即使在200K上下文窗口时代,RAG仍不可或缺——以10万份文档(每份5000字)为例,200K窗口仅能容纳15万字(千分之三),且每次查询携带15万字的API成本极高(日查询1万次可达数万美元)。

朴素RAG在Demo中可能表现良好(10问8对),但生产环境准确率常暴跌至40%。以下从七层架构出发,系统性解决RAG的7个致命问题,实现准确率从40%到92%的提升。


一、朴素RAG的7个致命缺陷

  1. 文档解析丢结构:PDF中的表格、公式、图片说明被解析为乱码或直接跳过,模型获取的是残缺信息。
  2. 切片粗暴:固定长度(如500字)一刀切,可能将关键语义(如”本政策适用于”和”2024年1月1日之后入职的员工”)切成两块,导致检索丢失上下文。
  3. Embedding模型选错:使用英文模型(如text-embedding-ada-002)处理中文文档,导致”新年快乐”和”I leave”语义匹配混乱。
  4. 只用向量检索:向量检索对专有名词、精确数字、代码片段(如error 4013)盲区严重,可能返回接口设计原则而非具体错误码文档。
  5. 无Rerank(精排):检索返回10条结果中可能仅2-3条相关,7条噪声直接塞给模型导致答案质量暴跌。
  6. Prompt塞爆:将10条长文本全部拼入Prompt,模型产生”中间遗失”(Lost in the Middle),仅关注开头和结尾。
  7. 无评估集:凭感觉优化,无法量化改动效果,导致修好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年主流切片策略(三剑客)

  1. 语义切片(Semantic Chunking)

    • 原理:计算相邻句子的Embedding相似度,相似度骤降处即为语义边界(话题转换点)。
    • 效果:比固定长度切片提升15-25个百分点。
  2. 父子切片(Parent-Child Chunking)

    • 结构:两层架构。小块(Child)用于检索,检索到后取其所属的大块(Parent)上下文送给模型。
    • 优势:解决”小块检索精确但上下文不足,大块上下文足但检索不精确”的矛盾。
    • 类比:像查书索引找到第83页,不会只看那一行,而是阅读整页内容。
  3. 命题切片(Proposition Chunking)

    • 原理:用大模型将文档拆解为独立命题(自包含的事实陈述),如”2024年公司营收增长30%”。
    • 特点:检索精确度最高,但需大模型处理,成本高,适合高价值文档。

Layer 4: Indexing(索引)

不仅是向量索引,应采用多索引并行

  • 向量索引:语义匹配
  • BM25索引:关键词精确匹配
  • 知识图谱索引(可选):关系推理

Embedding模型选型(中文场景2024)

  • BGE-M3:BAAI出品,中文开源最强之一
  • Jina Embeddings V3:多语言能力突出
  • 维度选择反直觉:512维在特定业务数据上可能优于3072维,需在自有数据上评测,勿只看排行榜。

Layer 5: Retrieval(检索)

核心认知:只做向量检索是”自废武功”。

混合检索(Hybrid Search)架构

  1. 向量检索与BM25并行执行
  2. 使用**RRF(Reciprocal Rank Fusion)**算法融合结果
  3. 互补原理:向量检索像”理解能力强但记性一般的人”,BM25像”记忆力惊人但不太理解语境的人”,组队互补盲区。

Query改写(Query Transformation)5种技术: 用户原始问题通常模糊、口语化,直接检索效果差。改写可提升召回率20-50个百分点

  1. Multi-query:将一个问题改写为5个不同表述,分别检索后合并,覆盖多角度。
  2. HyDE(Hypothetical Document Embeddings):先让大模型生成假答案,用假答案去检索(答案与文档的语义相似度高于问题与文档)。
  3. Step-back:退一步问更抽象的问题。如用户问”Python 3.12有什么新特性”,退一步问”Python版本更新一般包含哪些内容”。
  4. Query Decomposition:将复杂问题拆分为子问题分别检索。
  5. Query Expansion:自动补充同义词和相关词。

Layer 6: Reranking(精排)

性价比最高的优化环节,可使答案准确率平均提升10-20个百分点

技术原理

  • 两段式架构
    1. 第一阶段:使用Bi-encoder(双塔模型)快速召回Top-50(分别编码Query和文档,速度快但粗糙)
    2. 第二阶段:使用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提出)

  • 解决痛点:跨文档关系推理(如”哪些项目组负责人曾在同一所大学读书”)。
  • 流程
    1. 用大模型从文档抽取实体和关系构建知识图谱
    2. 查询时在图谱上遍历相关节点
    3. 将路径上的信息组装给模型
  • 成本:普通索引的10-50倍,仅适用于关系密集的高价值场景。

四、生产级必备实践

1. 引用溯源(Citation)

企业场景无引用的RAG等于不可用。

  • 实现:生成阶段让模型标注每句话的来源编号,后处理验证引用是否真实存在于检索文档中(过滤模型编造)。
  • 体验:系统应支持跳转到原文具体位置(页码、段落、高亮)。

2. 成本控制优化

成本构成:Embedding生成、向量存储、检索计算、大模型生成(最贵)。

优化策略

  • Prefix Caching:缓存不变的System Prompt部分,可省**70%**成本。
  • 模型路由:简单问题路由到小模型(如Haiku),可省**80%**成本。
  • 相似查询缓存:复用历史查询结果。
  • 效果:某企业RAG从每次查询0.1优化到0.1优化到0.01,达一个数量级差距。

五、评估驱动开发(Evaluation-Driven Development)

无评估集的优化是”瞎调”。建立评估集是工程化最重要环节。

评估集构建

  • 4要素:问题、期望答案、相关文档、难度等级。
  • 3大来源
    1. 真实用户日志筛选
    2. 人工构造边界场景
    3. 大模型合成(可节省90%标注成本,需人工审核修正)
  • 规模:100条起步,优质评估集至少500条。

4个核心指标

对应RAG的4个环节:

指标英文定义优化方向
上下文召回率Context Recall相关文档是否被检索到低→优化切片和检索策略
上下文精确率Context Precision检索结果中相关文档占比低→优化Rerank
忠实度Faithfulness生成答案是否忠实于检索上下文(无编造)低→优化生成Prompt
答案相关性Answer Relevance答案是否真正回答用户问题低→优化生成策略

Ablation Study(消融实验)

  • 原则:每次只改一个变量,跑评估集看指标变化。
  • 流程:建立基线→改一个变量→再跑评估集→对比指标→确定优化效果。

六、总结:优化路径 checklist

  1. 解析层:复杂PDF采用AI派工具(如Marker),确保表格/公式不丢。
  2. 切片层:放弃固定长度,采用语义切片/父子切片(生产环境首选)/命题切片(高价值文档)。
  3. 索引层:Embedding模型在自有数据评测,选择合适维度(未必越高越好);必须建立BM25索引。
  4. 检索层:实施混合检索(向量+BM25)+ RRF融合;部署Query改写(至少实施Multi-query和HyDE)。
  5. 精排层:部署Cross-encoder Rerank(性价比最高,必做)。
  6. 生成层:实施引用溯源,控制上下文长度(Top-5而非Top-10)。
  7. 评估层:建立500+条评估集,实施Ablation Study,用数据驱动优化而非感觉。

核心公式混合检索(召回+50%)+ Rerank(准确率+10-20%)+ 评估驱动 = 生产级RAG

商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。本文采用 CC BY-NC-SA 4.0 - 非商业性使用 - 相同方式共享 4.0 国际 进行许可。

Comments

Notes, questions, and follow-ups are welcome here.

Comments are temporarily unavailable because WALINE_SERVER_URL or PUBLIC_WALINE_SERVER_URL is not configured.