微软新综述:大模型RAG系统的4层境界! 精华
今天分享这篇很干的文章!通过对RAG系统的用户Query进行难度区分,进而可以将系统划分为4个等级。
Retrieval Augmented Generation (RAG) and Beyond: A Comprehensive Survey on How to Make your LLMs use External Data More Wisely
使用外部数据增强的大型语言模型 ( LLMs ) 在完成现实世界任务方面表现出了卓越的能力。外部数据不仅增强了模型的特定领域专业知识和时间相关性,而且还减少了幻觉的发生率,从而增强了输出的可控性和可解释性。将外部数据集成到LLMs中的技术,例如检索增强生成(RAG)和微调,正在获得越来越多的关注和广泛应用。尽管如此,在各个专业领域有效部署数据增强LLMs仍面临着巨大的挑战。这些挑战涵盖了广泛的问题,从检索相关数据和准确解释用户意图到充分利用LLMs的推理能力来完成复杂的任务。我们相信,对于数据增强LLM应用程序来说,没有一种万能的解决方案。在实践中,效果不佳通常是由于未能正确识别任务的核心焦点,或者因为该任务本质上需要混合多种功能,必须将这些功能分解以获得更好的解决方案。在本次调查中,我们提出了一种 RAG 任务分类方法,根据所需的外部数据类型和任务的主要关注点将用户查询分为四个级别:显式事实查询、隐式事实查询、可解释的基本原理查询和隐藏的基本原理查询。我们定义这些级别的查询,提供相关数据集,并总结关键挑战和应对这些挑战的最有效技术。最后,我们讨论了将外部数据集成到LLMs中的三种主要形式:上下文、小模型和微调,强调了它们各自的优势、局限性以及它们适合解决的问题类型。本文旨在帮助读者深入理解和分解构建LLM应用程序的数据需求和关键瓶颈,为不同的挑战提供解决方案,并作为系统开发此类应用程序的指南。
LLMs在各个专业领域较容易遇到一些问题,如模型幻觉、与特定领域知识的不一致等。所以整合特定领域的数据对于满足特定行业需求是非常重要的。通过RAG和微调等技术,基于RAG的LLM应用在多个方面显示出比仅基于通用LLM的应用的优势。
通常,基于RAG的LLM应用可以表述为一个映射过程,即基于给定数据D,将用户输入(查询Q)映射到预期响应(答案A)。
根据与外部数据D的交互程度和所需的认知处理水平,我们可以将查询分为不同层次。
- 显式事实查询 (Level-1 Explicit Facts), 最简单的数据增强查询形式,示例:
- "2024年夏季奥运会将在哪里举行?"(给定一系列关于奥运会的文档)
- "公司X的AI战略是什么?"(给定关于公司X的最新新闻和文章系列)
- 隐式事实查询 (Level-2 Implicit Facts),涉及需要一些常识推理或基本逻辑推理的查询,示例:
- "样本大小大于1000的实验有多少个?"(给定一系列实验记录)
- "最常提及的前3个症状是什么?"(给定一系列医疗记录)
- "公司X和公司Y的AI战略有什么区别?"(给定关于公司X和Y的最新新闻和文章系列)
- 解释性理由查询 (Level-3 Interpretable Rationales),不仅需要掌握事实内容,还要能够理解领域数据,示例:
- "根据胸痛管理指南,应该如何诊断和治疗有特定症状描述的胸痛患者?"
- "在现实场景中应如何回应用户的问题?"(给定客户服务工作流程)
- 隐藏理由查询 (Level-4 Hidden Rationales),最具挑战性的查询类型,需要从外部数据中推断出未明确记录的推理规则。
- "经济形势将如何影响公司未来的发展?"(给定一系列财务报告,需要经济和财务理由)
- "使用数字5、5、5和1如何得到24点?"(给定一系列24点游戏的示例和相应答案)
- "阿富汗是否允许父母将其国籍传给在国外出生的孩子?"(给定GLOBALCIT公民法数据集)
上述文字对应了下图
L1 显式事实查询
挑战:
- 外部数据通常是高度非结构化的,并且包含多模态组件,如表格、图像、视频等。此外,将这些数据分割或“块化”处理时,保持原始上下文和意义是一个挑战。
- 数据检索困难:从大型非结构化数据集中检索相关数据段可能计算密集且容易出错。
- 评估困难:评估RAG系统(特别是组件级别)的性能是一项复杂任务,需要开发能够准确评估数据检索和响应生成质量的健壮指标。
解决方案:(介绍了非常多的高级RAG技巧)
- 多模态文档解析 (表格转文本、图片/视频内容转换成文本)
- 块大小优化:固定大小、文档结构递归切分、滑动窗口、基于语义
- 索引:bm25、香莲、hybird
- query、doc 文档对齐:传统对齐,hyde文档域对齐,query域对齐
- rerank修正:rerank
- 递归检索,迭代解锁:通过多次检索来逐步解决查询中的不明确问题。
- 生成:确定检索到的信息是否足够,或者是否需要额外的外部数据;处理检索到的知识与模型内部先验知识之间的冲突。
- 微调:通过设计训练数据来提高RAG系统在生成响应时的性能。
- 联合训练:在训练阶段同时训练检索器和生成器,以提高两者在RAG系统中的协同性能。
L2 隐式事实查询
挑战:
- 自适应:不同问题可能需要不同数量的检索上下文。固定数量的检索可能导致信息噪声过多或信息不足。
- 推理检索间的协调:推理可以指导需要检索的内容,而检索到的信息又可以迭代地细化推理策略。
解决方案:
- 迭代RAG:通过多步骤RAG过程动态控制,迭代地收集或纠正信息,直到达到正确答案。
- 基于图/树的RAG:使用图或树结构来自然地表达文本之间的关系,适合处理需要综合多参考信息的查询。
- NL2SQL:当处理结构化数据时,将自然语言查询转换为SQL查询可以有效地检索信息。
剩下2种不做更多介绍了,有点扯远了,一张图表示如下:
本文转载自 探索AGI,作者: 猕猴桃