Advanced RAG
在 Naive RAG 阶段,我们完成了“加载-索引-检索-生成”的基础闭环。然而,面对大规模、高专业性的技术文档(如学术论文、企业文档)时,Naive RAG 常面临召回噪声多、上下文割裂、专业术语偏差及生成幻觉等性能瓶颈。 本篇文档将带你实施 Advanced RAG 优化策略。通过这套深度调优组合拳,我们在 DeepSeek 论文数据集的测试中,取得了突破性的性能表现:
性能评估对比 (RAGAS)
| 评估指标 | Naive RAG | Advanced RAG | 提升幅度 (Delta) |
|---|---|---|---|
| Context Recall (召回率) | 0.78 | 1.00 | 22% |
| Faithfulness (忠实度) | 0.70 | 1.00 | 30% |
| Answer Relevancy (回答相关度) | 0.83 | 0.89 | 6% |
一、框架概览
- 数据层:
- 内置示例数据集:平台在内置路径中预置了 “DeepSeek ” 论文数据集。用户无需繁琐的数据准备,即可通过调用内置库实现 “一键上手”,快速验证 RAG 流程的闭环性。
- 私有数据接入:系统具备高度的灵活性,支持用户通过数据通道自行上传 PDF、Markdown 等私有文档。通过简单的路径配置,即可实现从公共知识到行业私有知识的无缝切换。
- 推理层:
- 核心引擎:采用 vLLM 作为推理后端,利用其 PagedAttention 技术提升并发处理能力。
- 启动策略:执行显存割让策略(如 60% 显存用于 LLM),为后续的 Embedding(向量化) 和 Rerank(精排) 预留充足的计算余裕,确保单卡环境下多模型的稳定运行。
- 数据存储与检索层:
- 本地向量库:集成 Milvus Lite。不同于集群版,Lite 版作为嵌入式库运行,仅通过 Python 加载即可操作本地 .db 文件,无需部署额外的数据库服务或维护复杂的容器集群,即可在单机实现百万级检索。
- 嵌入模型:调用内置库加载 Qwen3-Embedding 系列模型,将 PDF/文本等非结构化数据转化为高维语义向量。
- 逻辑编排层:
- 工作流管理:基于 LlamaIndex 构建,深度定制文档解析(SimpleDirectoryReader)与查询引擎。
- Advanced RAG 范式:
- 分层索引策略:采用层级化切片,确保检索小块(精准度)与提供大块背景(语境感)的平衡。
- 多路混合检索:结合向量语义检索与 BM25 关键词检索,攻克专业术语缩写识别难题。
- 重排序 (Rerank):引入跨编码器模型对初筛结果进行精排,彻底剔除检索噪声,确保喂给 LLM 的知识点“百发百中”。
- 评估与性能量化层:
- 评估框架:集成 RAGAS ,将 RAG 系统的优化从“感性调优”推向“数据驱动”的科学演进。
- 核心量化维度:
- Faithfulness (忠实度):利用“LLM 裁判”自动化检测回答中的事实断言是否均能从参考资料中找到依据,严控幻觉率。
- Answer Relevancy (答案相关度):通过向量空间建模,量化 AI 回答与用户原始意图的契合程度,确保回答精准有力。
- Context Recall (上下文召回率):对比“标准答案”与“检索片段”,验证检索系统是否成功捕捉到了解决问题所需的全部关键事实点,精准定位召回漏洞。
- 持续优化闭环:通过 RAGAS 提供的多维评分报告,实现针对性的参数微调与迭代。
- 流程图:
-
文档:

-
代码:

-
二、优化步骤:构建进阶检索链路
为了彻底解决 Naive RAG 在处理 DeepSeek 论文时出现的知识割裂与召回偏差,我们在代码中实施了以下三大进阶策略:
1:数据层级化处理
传统的 Naive RAG 采用固定尺寸切片,往往会导致“语义断层”:切片太小则丢失语境,切片太大则检索噪声过高。
- 代码实现逻辑:
- 多级切分:利用 HierarchicalNodeParser 构建了 [1536, 512, 256] 的三层金字塔结构。
- 叶子节点:负责极细粒度的语义捕捉,提升关键词命中精度。
- 父节点:作为叶子节点的“背景库”,在生成阶段提供完整的段落语境。
- 深度数据清洗:在构建索引前,执行严格的类型检查与编码规范化(isinstance(str) 及 surrogates 过滤),彻底规避了非结构化 PDF 中常见的空块(NaN)导致的 Embedding 崩溃问题。
- 多级切分:利用 HierarchicalNodeParser 构建了 [1536, 512, 256] 的三层金字塔结构。