RAG 远远不够,外部数据增强的多维策略探索

RAG is far from enough, exploring different solutions for external data augmentation

Posted by Bryan on April 10, 2025

背景介绍

随着大模型技术的发展,RAG(检索增强生成)已成为提升AI应用能力的标配方案。在过去两年中,我从最初的 langchain Demo 实践,到 langchain chatchatQAnythingRagFlow 等项目的探索,见证了检索技术从简单的向量检索发展到知识图谱和 Agentic RAG 的过程。

然而随着实践深入,RAG 方案的局限性逐渐显现。在处理复杂的现实场景时,简单的检索增强往往力不从心。如何更好地利用外部数据成为了一个极具挑战性的课题。最近,微软亚洲研究院发表的论文 Retrieval Augmented Generation (RAG) and Beyond 系统性地探讨了这一问题,本文将结合实践经验,详细解析外部数据增强的不同层级与解决方案。

数据检索层级

现实世界的数据呈现多源、异构、动态变化的特性,如何有效利用这些数据解决实际问题存在多种技术路径,而RAG仅是其中相对基础的通用手段。正是由于RAG方案的普适性,业界常将其视为万能解决方案,但深入产品化实践后,我们不得不面对检索精度不足、上下文理解有限、推理能力受限等一系列挑战,这也导致了”一周Demo演示,一年无法上线”的尴尬局面。

微软亚研院的论文从复杂度递增的角度,将外部数据增强策略划分为四个层级:

levels

  • Level-1:Explicit Facts(显式事实检索):针对可直接从外部数据中提取的明确事实型问题,例如”2024年夏季奥运会在哪里举办?”,模型只需精准定位并提取数据中已存在的答案,无需复杂推理。
  • Level-2:Implicit Facts(隐式事实检索):需要整合多源信息或进行基础逻辑推理的问题,例如”堪培拉所在国家的执政党是什么?”,需综合地理位置与政治信息进行关联分析。
  • Level-3:Interpretable Rationales(可解释性原理增强):依赖外部数据提供的原理框架进行推理,这类查询的辅助数据通常包含解决问题的清晰思维路径和决策依据。典型场景如医疗诊断中基于临床指南文件推理当前病症是否符合特定标准。
  • Level-4:Hidden Rationales(隐式原理挖掘):需从历史数据中挖掘未被明确记录的隐性知识模式,例如从IT运维日志中提取故障处理的最佳实践策略。

论文对这四个层级的技术特征总结如下:

summary

Level-1 显式事实

场景剖析

这是最基础的检索层级,答案可以直接从原始文档中精确定位获取。典型应用场景包括:

  • 产品技术文档中的”如何重置系统密码?”
  • 新闻报道中的”2024年奥运会举办地点在哪里?”
  • API文档中的”如何正确调用特定接口?”

成功实现的关键在于如何从海量非结构化数据中高效定位到最相关的文本片段。

解决方案

在显式事实检索场景下,标准RAG架构已成为业界主流解决方案。建议将RAG的核心流程模块化,并针对各环节进行精细化优化:

  1. 文档预处理优化:实现结构化解析,智能分段、重叠窗口和元数据增强;
  2. 检索策略优化:融合语义检索与关键词检索的混合检索策略,并通过检索检索前后的策略提升信息检索的召回率和精确性;
  3. 提示工程优化:设计结构化提示模板引导模型精准提取信息;

在之前的文章中 RAG 最佳实践 已详细整理过 RAG 核心流程的优化策略,此处不再赘述。

Level-2 隐式事实

场景剖析

这类查询涉及的数据依赖关系不是直接可见的,往往需要一定程度的常识推理或基础逻辑分析。关键信息可能分散在多个文档片段中,需要通过多步检索和信息整合才能获得完整答案。

在这种场景下,核心挑战是如何将原始问题分解为多个检索操作,并将不同检索结果有效聚合为连贯的最终答案。典型应用场景包括:

  • “在这组医疗记录中,最常提及的三种症状是什么?”(需要跨文档统计分析)
  • “X公司和Y公司的AI战略有何本质区别?”(需要从多篇报道中提取并对比关键信息)

这类场景是RAG实践团队最常遇到的挑战,关键在于如何自适应完成问题分解与检索,确保信息完整性的同时避免引入过多无关信息,并在迭代过程中平衡检索深度与推理效率。

解决方案

针对隐式事实检索,研究界已提出多种进阶方案,其中最具代表性的是近期备受关注的Agentic RAG架构。当前论文中提到的主要解决方案包括:

1. 迭代式RAG(Iterative RAG)

通过多轮检索-推理循环,逐步收集所需信息直至形成完整答案。迭代RAG主要包含两种实现模式:

  • 基于规划的迭代检索:在初始阶段制定分步检索计划,按计划逐步执行RAG检索。ReAct框架是这一方向的典型代表,通过”思考-行动-观察”循环实现复杂问题的分解与解决。

  • 增量信息填充:通过迭代的检索-生成过程,先基于已知信息生成初步答案,再持续补充缺失信息,直至获得完整解答。ITRG(Iterative Retrieval-Generation)是这一策略的代表性实现。

2. 层次化知识结构(树/图结构)

隐式事实检索往往需要超越单一文档分片的信息边界,因此基于层次化知识结构的检索方案应运而生:

  • 树形结构检索RAPTOR 采用自底向上的聚类算法,对最细粒度的文本块进行层次化总结,构建完整的树形文本结构。顶层节点提供跨文档的概括内容,而不同层级节点满足不同粒度的信息需求。

  • 知识图谱增强:2024年持续升温的 GraphRAG 通过从原始文本中提取实体关系构建知识图谱,并进行实体聚类生成社区摘要,提供跨文档的关联信息检索能力。我之前整理的 RagFlow 知识图谱检索 文章详细介绍了这一技术的实践方案。

此外,论文还提到了基于NL2SQL的结构化数据查询方案。总体而言,隐式事实检索需要解决跨文档、多轮交互的复杂问题,技术选型需根据具体应用场景和数据特性进行定制。值得注意的是,随着检索复杂度提升,系统资源消耗也会显著增加,如何在准确性和处理效率间取得平衡是一个不容忽视的工程挑战。

Level-3 可解释原理

场景剖析

这一层级的检索需要依赖外部数据提供的原理框架,基于这些原理对当前问题进行结构化推理。典型应用场景包括:

  1. 医疗决策支持:临床指南文件提供了诊断和治疗的原则性框架,医生需要根据这些专业指导原则,结合患者具体情况做出个性化医学决策;

  2. 企业流程执行:企业标准操作手册(SOP)提供了业务流程的规范化描述,员工需要根据这些流程指南确认当前环节的执行要点,并据此做出下一步决策。

这类场景的核心挑战在于如何将抽象的原理性知识与具体问题情境有效对接,实现原则指导下的精准推理。

解决方案

在可解释原理增强场景中,关键任务是如何有效地将外部数据提供的原理框架整合到LLM的推理过程中,确保模型能够准确遵循这些原理并给出合理推断。根据模型能力和应用需求,可采用以下解决方案:

1. Prompt Tuning

在这种方案中,论文中提到了一些示例方案,比如 Text2MDT 以及 MedDM, 这边的方案都是将原理性的指南文本转换为决策树,这样可以提供更加直接的决策路径,便于大模型理解,从而更有可能提供准确的决策结果。例子如下所示:

tree

这种方法本质上是将抽象的原理性描述转化为明确的决策指导路径,显著提升模型遵循专业原则的能力。然而,这种转换过程通常需要领域专家参与,实施成本较高,且需要严格的质量控制机制确保转换准确性。

2. CoT Prompting

CoT 已被广泛验证为提升大模型推理能力的有效技术。通过精心设计的CoT提示模板,可以引导模型按照特定原理进行步骤化思考,显著提高复杂推理任务的准确性。这种方法需要根据具体领域和应用场景定制相应的思考链模板,虽然开发成本不低,但在标准化程度高的专业领域(如医疗、法律、金融等)具有显著优势。

Level-4 隐式原理

场景剖析

这是最具挑战性的检索层级,涉及从历史数据中挖掘未被明确记录的隐性知识模式。典型应用示例如下:

  • 经济形势将如何影响公司未来的发展?(给定一组财务数据报告(需提供经济和财务依据))
  • 如何使用数字 5、5、5 和 1 获得 24 分?(给出一系列 24 分游戏示例和相应的答案)

这类场景的核心挑战在于如何检索到真正相关的历史案例,并从中提取可迁移的隐性知识模式,应用于当前问题。

解决方案

1. 上下文学习(In-Context Learning, ICL)

利用示例进行上下文学习是揭示隐性原理的主流方法。大型语言模型展现出显著的上下文学习能力,通过基于相似性检索的示例增强,可以充分发挥模型的少样本学习潜力。关键技术点包括:

  • 高质量示例检索:开发专门的相似性度量方法,确保检索到的历史案例与当前问题具有本质相似性
  • 示例排序优化:研究表明,示例的呈现顺序会显著影响ICL效果,可通过元学习方法优化示例排序策略
  • 示例多样性控制:在保证相关性的前提下,适当增加示例多样性,有助于模型提取更泛化的隐性模式

2. 领域适应性微调(Domain-Adaptive Fine-tuning)

尽管LLM具备强大的上下文学习能力,但准确识别复杂且长链的隐性逻辑仍然是重大挑战。通过针对性的领域微调,可以显著提升模型在特定领域的知识提取和推理能力。

技术选型与实践建议

论文对外部数据增强各层级解决方案的综合对比如图所示:

solution

基于上述分析和实践经验,我对不同场景下的技术选型提出以下建议:

  1. 需求分层评估:在项目初期,应对用户需求进行分层评估,明确所处理问题主要属于哪个检索层级,避免技术路线选择的盲目性

  2. 渐进式技术演进:从基础RAG开始,根据实际效果评估逐步引入更复杂的技术方案,确保系统复杂度与实际需求相匹配

  3. 混合策略应用:针对复杂应用场景,考虑多层级技术的混合应用,例如对显式事实采用标准RAG,对隐式事实采用Agentic RAG,对原理性问题采用结构化提示等

  4. 持续评估与优化:建立完善的评估体系,通过用户反馈和自动化测试持续优化系统性能,特别关注检索准确性、推理质量和系统响应时间的平衡

总结

外部数据增强是一个涵盖多个技术层级的复杂系统工程,从简单的显式事实检索到复杂的隐性原理挖掘,每个层级都有其独特的挑战和相应的技术解决方案。在实际应用中,需要根据具体场景和需求特点,选择合适的技术策略,并灵活组合多种方法以达到最佳效果。

重要的是避免”拿着锤子找钉子”的思维定式,不要将RAG视为万能解决方案,而应构建多元化的技术工具箱,针对不同复杂度的问题选择最适合的工具。只有深入理解各类技术的适用边界和优化方向,才能真正发挥外部数据增强在AI应用中的最大价值。


Powered By Valine
v1.5.2