RAG,可以说是大模型时代最成功的落地模式之一,通过检索-生成的方式,极大的拓展了大模型的应用边界, 但是,RAG 在落地实践上却没有那么简单。相信做过 RAG 系统的小伙伴都碰到过如下的问题:
什么场景或问题下需要检索?1+2=?的计算题好像不需要,但为什么 1+2=3 好像就需要。
检索到的信息是否有用?是否正确?
检索到的信息怎么用?直接与用户的问题拼接还是需要进行信息压缩后拼接?
以什么逻辑进行召回?召回信息是否需要排序?
……
这些问题没有“放之四海皆准”的答案,在不同的场景、数据下,解决方案各不相同。
从 23 年 RAG 火爆以来,各类 RAG 框架或解决方案没有上百也有几十个了,AnythingLLM、RAGFlow、Ollama 等,每一个都能搭建出一个完整基于 RAG 的知识库,但是通用 ≠ 好用。每一个场景、甚至每一个人的数据都是独特的,这对于 RAG 系统的效果带来了巨大的挑战。但这也带来了 RAG 领域研究的百花齐放。
今天,和各位小伙伴,一起看下最近的几篇关于 RAG 的文章,了解下学术界在 RAG 上探索。
简短总结版
可以看出以下几个趋势:
专业化趋势:许多 RAG 变体都针对特定领域进行了优化,如医疗、金融、材料科学等
多模态融合:越来越多的 RAG 技术开始处理多模态数据,如视频、图像、文本的结合
安全性考虑:随着 RAG 技术的普及,安全性问题(如 RAG-Thief 所研究的)也开始受到关注
效率优化:新的 RAG 变体都在尝试通过各种方式提升处理效率,降低计算成本
可解释性提升:许多新方法都强调了可解释性的重要性,试图让模型决策过程更透明
基础架构的创新
你有没有遇到过这样的情况,让 RAG 回答一个问题,它要么给出一大堆相关但不够准确的信息,要么干脆答非所问。这就像一个初入职场的新人,虽然知识储备不错,但不太懂得“抓重点”。
针对这些基础问题,研究者们提出了一系列创新性的解决方案。比如中科院提出的 AutoRAG,它不再是简单地“给什么找什么”,而是让 RAG 系统学会自主判断。
假设你问“谁是《怪物史莱克》中驴子的配音演员?”,普通的 RAG 系统可能会傻乎乎地去搜索所有包含“驴子”和“配音”的资料。但 AutoRAG 会这样思考:
看到区别了吧,AutoRAG 就像一个会自主思考的助手,知道该怎么一步步找到最准确的答案。同时,它还可以用自然语言解释自己的思考过程,让你明白它为什么这样做。这种透明度在实际应用中特别重要。
CORAG 则从另一个角度提出了解决方案。现有的 RAG 系统在选择文本块时往往独立考虑,忽视了文本块之间的相关性。这就像是在解答一个复杂问题时,只看到了各个零散的知识点,却没有将它们有机地联系起来。
CORAG 的核心创新在于使用蒙特卡洛树搜索(MCTS)来探索文本块的最优组合顺序,同时引入配置代理来动态调整系统参数。它就像是在玩一个高级版的拼图游戏:
不过,这种方法也有其局限性:构建和遍历策略树需要较多计算资源,参数的调整也需要仔细权衡。
我们都知道大模型是有上下文长度限制的,过长的上下文内容会显著的降低大模型的效果。在 RAG 中尤为明显,为了让 RAG 能够“记住”和“理解”知识,研究者们提出了一些非常有意思的解决方案。
FastRAG 制定了一个“两步走”的策略,先用简单的关键词匹配快速划定范围,再用更复杂的语义分析找出最相关的内容,就像你在找一本书,先看书架的分类标签找到大致区域,再根据书名和目录找到具体的那本。这不就是传统搜索引擎的召回-粗排-精排的逻辑嘛。
可能 AssistantRAG 的作者出发点是想借鉴 Adapter 的思想,提出了一个很类似的设计:既然一个大模型的记忆能力有限,那么给主模型配备一个“专业秘书”模型。
秘书模型负责记忆管理和知识管理,它会记录历史问答信息,评估这些记忆对当前问题的帮助程度;还会将复杂问题分解成简单的子问题,针对每个子问题检索外部知识库,主模型负责生成最终的输出。这种方法的优势在于灵活性强,在不同的场景,通过更换秘书模型达到快速适配的目的。
MemoryRAG 引入了一个“记忆模块”,就像是一个经验丰富的图书管理员,不仅懂得找书,还能理解读者的潜在需求。就像是你要找一本关于爱情主题的书籍的时候,可能书名根本不包括爱情。
MemoryRAG 采用了双重架构,一个负责处理长文本形成整体印象,另一个负责最终的回答生成。这种设计特别适合处理需要全局理解的复杂查询,比如分析文学作品中的人物关系、总结长篇报告等任务。
为了更好的利用外部的知识,RuAG 通过规则增强的方式来提升模型的理解能力。比如在天气预测场景中,与其让模型记住大量天气数据,不如教会它理解“如果温度超过 30 度且湿度低于 50%,那么天气晴朗”这样的规则。这种方法更容易理解和记忆,计算成本也较低。
复杂数据的处理
随着 RAG 应用场景的不断增多,我们可能会遇到各种各样的数据,网页、PDF、文本、时序、音频、视频等等,每种数据类型都带来了独特的挑战。
在网页数据处理方面,HtmlRAG 提供了一个很巧妙的解决方案。它不是简单地把网页转换成纯文本,而是尝试保留那些传达重要含义的 HTML 标签。它首先会清理掉网页中的广告代码、样式表等“干扰信息”,但会保留那些传达重要含义的 HTML 标签。
比如说,“<h1>Windows 安装教程</h1>”这样的标签就会被保留,因为它告诉我们这是一个重要的标题。相比纯文本的方式,基于这样的结构化信息, HtmlRAG 能够更加高效的利用网页信息。
时间序列预测是个老生常谈的问题,比如预测明天的天气、股票走势、电力消耗等。传统方法往往把这些预测看作是独立的任务。但想想看,如果我们能找到历史上相似的情况作为参考,预测效果会不会更好呢?
举个简单的例子:假设你在预测某个城市明天的温度。如果你能找到历史上天气条件非常相似的那几天,看看那之后温度是怎么变化的,这样的预测显然会更准确。
这就是论文提出检索增强预测(RAF)的核心思想。它会先在历史数据中找到类似的模式片段,看看那个历史数据之后模式是怎么变化的,再将这些历史经验作为预测的参考。
除了文本之外,有没有想过,RAG 的思想也是可以应用到视频理解场景的,但你知道现在的大语言模型处理长视频时会遇到什么问题吗?最主要的就是“记不住” - 上下文窗口的限制让它们难以处理长视频。
有的团队试图通过微调来扩展模型的处理能力,有的则尝试使用更大的模型。但这些方法要么需要大量训练数据,要么成本太高。
VideoRAG 提出了一个很独特的方法。它从不同角度来理解视频:
从多个维度去理解视频确实能够得到更好的效果,但不同信息之间的对齐可能是一个需要考虑的问题。
垂直领域的创新
RAG 技术在各个垂直领域都展现出了强大的应用潜力,研究者们针对不同领域的特点,提出了一系列创新性的解决方案。
我们知道,在医疗领域,精确和可靠的诊断信息处理至关重要。LabRAG 模仿了医生看片的过程,先识别关键的医学发现,再基于这些发现写报告。PathRAG 专门针对病理切片图像进行了优化,它结合了关键区域识别和大语言模型,在准确率上提高了将近 10 个百分点。
MMedRAG 解决了医疗视觉语言模型在生成回答时经常产生幻觉的问题,它引入了领域感知的检索机制、自适应的上下文选择方法和基于 RAG 的偏好微调策略,显著提高了生成内容的原创性和可靠性。
在材料科学领域,G-RAG 提供了一个非常创新的解决方案。它将图数据库整合到检索过程中,通过实体提取与关联、智能文档解析、图谱增强检索等技术,在准确性评分上远高于传统 RAG 系统。这种提升在材料科学这样需要精确信息的领域特别重要。
RAGDiffusion 为时尚电商领域提供了一个实用的解决方案。它像一个经验丰富的摄影师,通过分析输入的服装照片,在标准服装图片数据库中寻找相似的参考样本,再采用多层次的生成对齐策略,确保生成图片的高质量。
比较让人意外的是,这个系统的泛化性也非常的好,通过简单更新检索数据库,就能够处理全新的服装款式,这种灵活性在快速变化的时尚行业特别重要。
金融分析师每天要阅读大量的财报、公告、研究报告,而且时效性要求特别高。针对这种情况,研究者们开发了 MultiReranker 系统。它的工作方式如下:
首先,它会对用户的问题进行多维度的拆解和改写,比如当你问“Q3 的 ROE 是多少”时,系统会先理解:
然后,它采用了一个“多级筛选”的策略,就像是组建了一个金融分析师团队:
通过多级的检索机制实现对信息对高效利用。特别是,当输入文本太长时,系统会把文档分成两半分别处理,然后再把生成的答案合并起来,既保证了准确性,又提高了效率。
RAG 的双刃剑
没有绝对安全的系统,也没有绝对安全的技术。
随着 RAG 技术在医疗、金融、法律等敏感领域的广泛应用,安全性问题日益凸显。RAG-Thief 的研究让我们清晰地看到了当前 RAG 系统中存在的安全隐患。
很多人可能会觉得疑惑:RAG 系统不是只会返回相关信息吗,怎么会有安全问题呢?但研究者通过巧妙设计的实验揭示了其中的风险。
想象一下,如果一家医院使用 RAG 系统来回答医疗咨询,当有人问“感冒有什么症状”时,系统会正常地返回一般性的医学知识。
但如果有人用特殊的方式提问,比如巧妙地设计问题来套取原始病例信息,系统可能就会不经意间泄露病人的隐私数据。论文发现,在没有特殊防护措施的情况下,攻击者能够提取出超过 70% 的知识库内容。
针对这些问题,也有一些可以探索的措施。例如,在系统层面,需要建立严格的访问控制机制,对检索内容进行脱敏处理,并建立完善的安全审计系统。在算法层面,可以引入噪声扰动和差分隐私技术,降低信息泄露的风险。在日常运营中,定期的安全评估和及时的漏洞修复也是不可或缺的。
总结
最后,来一个小小的总结吧。RAG 的范式是简单可理解的,但真正落地实践的过程中,会有许许多多的问题和痛点。上面提到的 RAG 方法或框架,也只是给出了优化探索的方向,真正在自己的场景中发挥 RAG 的效果,还是有一段路需要摸索。
在实际中应用 RAG 的时候,可以进行综合的考虑,效果不佳的情况下可以尝试进行各种组合,在效果不达标的情况下,不要过度的考虑性能,毕竟,抛开效果谈性能也是耍流氓!
[1] https://arxiv.org/pdf/2411.02959
[2] https://arxiv.org/pdf/2411.13773
[3] https://arxiv.org/pdf/2411.19443
[4]https://arxiv.org/pdf/2411.00744
[5]https://arxiv.org/pdf/2409.05591
[6]https://arxiv.org/pdf/2411.14110
[7]https://arxiv.org/pdf/2411.06805
[8]https://arxiv.org/pdf/2411.16523
[9]https://arxiv.org/pdf/2411.13093
[10]https://arxiv.org/pdf/2411.08249
[11]https://arxiv.org/pdf/2411.03349
[12]https://arxiv.org/pdf/2410.13085
[13]https://arxiv.org/pdf/2411.17073
[14]https://arxiv.org/pdf/2411.16732
[15]https://arxiv.org/pdf/2411.14592
[16]https://arxiv.org/pdf/2411.19528
扫描二维码添加小助手微信