复旦大学发布最佳RAG方案详解
系统评估检索增强生成(RAG)工作流各模块,包括查询分类、片段划分、嵌入模型、向量数据库、检索与重排序方法等,通过大量实验确定最佳实践,并提出性能最大化和平衡效率两种实施策略。研究还展示了多模态检索在视觉问答与生成中的显著效果。
检索增强生成(RAG)技术,在整合最新信息、缓解模型幻觉以及提升回答质量方面,确实展现出了不俗的实力,尤其是在一些专业领域。虽说市面上已经有不少RAG方法被提出来,希望通过“查资料”的方式来增强大语言模型,但它们往往面临着实现复杂、响应时间过长的问题。说白了,一个典型的RAG工作流里藏着好几个处理步骤,而每个步骤又可以用不同的方式去实现。这篇文章就是想把这些现有的RAG方法以及它们可能的组合方式摸个透,看看究竟哪种搭配才是最优解。通过大量的实验,我们总结出了一些部署RAG的策略,能在性能和效率之间找到平衡点。另外,文章还展示了多模态检索技术是如何显著提升视觉输入相关的问答能力,以及如何通过“检索即生成”的策略来给多模态内容的生成加速。

RAG工作流
这部分,我们来拆解一下RAG工作流的各个组件。针对每一个模块,我们会回顾一下主流方法,并为最终的管道选择默认方案和备选方案。下一章再具体聊聊最佳实践。下面的图把这些模块的工作流和方法都梳理清楚了。至于详细的实验设置,包括数据集、超参数和结果,都在附录A里。
查询分类
其实,并不是所有问题都需要搬出RAG这套流程,因为大语言模型自身就有一定的知识储备。RAG能提高信息准确性、减少幻觉,但频繁地去检索也会拖慢响应速度。所以,第一步得先给查询分个类,判断它是否需要检索。需要检索的,就交给RAG模块处理;其他的,让大模型自己来就行。通常来说,当问题涉及模型参数之外的知识时,就建议检索。但这个“必要性”也得看具体任务。比如,一个训练数据截止到2023年的大模型,处理“Sora是OpenAI开发的”这种翻译请求,完全不用检索。但如果是让你介绍一下Sora,那就得靠检索来提供相关信息了。我们针对15个任务,根据它们是否提供了足够信息来分类(具体任务和示例看下图)。那些完全基于用户提供信息的任务,我们就标记为“足够”,不需要检索;反之则标记为“不足”,可能需要检索。为了自动化这个决策过程,我们还专门训练了一个分类器。实验细节在附录A.1里。后续章节会探讨查询分类对工作流的影响,并比较一下有分类和没分类的场景。
片段划分
把文档切成更小的段落,对于提高检索精度、避免模型处理超长文本时出问题,至关重要。这个过程可以在不同的粒度级别进行,比如词级、句级和语义级。语义级划分会动用大语言模型来确定切分点,能更好地保存上下文,但比较耗时。句级划分则在保留语义和简洁性之间找到了一个平衡点。本研究采用的正是句级片段划分。我们从四个维度来研究这个划分过程。
片段大小
片段大小对性能影响很大。大片段能提供更多上下文,增强理解,但会增加处理时间。小片段能提高检索的召回率,处理也更快,但可能上下文不够。找到最佳片段大小,需要在“忠实性”和“相关性”这些指标之间权衡。忠实性衡量的是模型生成的回答是否忠实于检索到的文本、有没有产生幻觉;相关性则评估检索到的文本和最终回答跟查询是否匹配。我们用的是Llamalndex的评估模块来计算这些指标。嵌入模型选的是支持长输入长度的text-embedding-ada-002。生成模型和评估模型分别用了zephyr-7b-alpha和gpt-3.5-turbo。片段重叠大小设为20个标记。我们用文档lyft_2021的前60页作为语料库,然后提示模型生成了大约170个查询,专门用来研究不同片段大小的影响。
片段划分技术
一些先进的技术,比如“小到大”和滑动窗口,通过组织片段块之间的关系,能显著提升检索质量。简单来说,就是用小块去匹配查询,但把包含小块以及上下文信息的大块返回给模型。为了展示这些先进技术的效果,我们采用LLM-Embedder作为嵌入模型。小的片段块大小设为175个标记,大的设为512个标记,重叠部分还是20个标记。这类技术的核心优势在于,既能保持上下文,又能确保检索到相关信息。详细结果可以看表4。
嵌入模型选择
选对嵌入模型,对于查询和片段块的有效语义匹配至关重要。我们借助FlagEmbedding的评估模块,以及数据集namespace-Pt/msmarco和namespace-Pt/msmarco-corpus,来挑选合适的开源嵌入模型。从结果来看,LLM-Embedder和BAAI/bge-large-en的表现不相上下,但前者的模型尺寸只有后者的三分之一。所以,我们最终选了LLM-Embedder,在性能和尺寸之间取得了一个很好的平衡。
元数据添加
通过给片段块添加一些元数据,比如标题、关键词,甚至是假设问题,可以改进检索效果。这能为检索后的文本提供更多处理方式,也能帮助模型更好地理解检索到的信息。我们会在未来的研究中,对这个方向进行更深入的探讨。
向量数据库
向量数据库负责存储嵌入向量和它们的元数据,它利用各种索引和最近邻搜索方法,来实现高效的文档检索。在选择时,我们主要看它的灵活性、可扩展性,以及在现代云基础设施里的部署难度。不同的索引类型针对不同的数据特性和使用场景提供了优化搜索的能力。面对处理大数据集的大模型应用,支持亿级向量是关键能力。混合搜索结合了向量搜索和传统关键词搜索,能增强检索的准确性。最后,云原生能力则确保了在云环境中的无缝集成、扩展和管理。表5详细对比了五个开源向量数据库:Wea viate、Faiss、Chroma、Qdrant和Milvus。评估下来,Milvus在各数据库里表现最佳,满足了所有关键标准,优于其他开源选项。
检索方法
给定一个用户查询,检索模块会根据查询和文档之间的相似性,从建好的语料库里选出最相关的文档。然后,生成模型再利用这些文档来生成回答。但问题是,那些表达不佳、缺乏语义信息的查询,可能会影响检索效果。我们使用第3.2节提到的LLM-Embedder作为查询和文档的编码器,评估了三种查询转换方法:查询重写、查询分解和伪文档生成。
查询重写:通过改写查询,让它更好地匹配相关文档,从而提升性能。
查询分解:基于原始查询中提出的子问题来检索文档。
伪文档生成:根据用户查询先生成一个假设文档,然后用这个假设答案的嵌入向量去检索类似的文档。
最近的研究表明,把词汇搜索和向量搜索结合起来,能显著提升性能。本研究以BM25作为稀疏检索的代表,Contriever作为密集检索的代表,作为两个强有力的基线。我们在TREC DL 2019和2020的通道排名数据集上评估了不同的检索方法。结果表明,有监督的方法明显优于无监督的。综合来看,我们推荐将HyDE(即伪文档生成)和混合搜索结合使用,作为默认的检索方法。为了提升效率,混合搜索结合了稀疏检索(BM25)和密集检索(原始嵌入),在较低延迟下也取得了突出的性能。
重排序方法
在初次检索之后,加入一个重排序的阶段,能有效提升检索文档的相关性,确保最相关的信息能排在列表最前面。这里我们用的是更精确但稍微耗时的方法,来有效重排文档,增加查询和排在前面的文档之间的相似性。在我们的重排序模块里,主要考虑了两种方法:DLM重排序和TILDE重排序。前者更偏向性能优化,后者则更看重效率。
DLM重排序:利用深度语言模型进行重排序,这个模型会被微调成一个分类器,来判断文档的相关性是真还是假。
TILDE重排序:通过预测模型词汇表里每个查询词的可能性来计算一个分数,以此进行重排序。
文档重新包装
文档提供的顺序也会影响后续处理的性能。为了解决这个问题,我们在重排序之后集成了一个简单的重新包装模块,提供了三种方法:前向、反向和边缘。受Liu等人研究的启发,实验证明,把相关信息放在输入的头部或尾部时,性能最好,所以我们也加入了“边缘”这个选项。由于重新包装方法主要影响后续模块,我们会通过测试来选择最佳的包装方法,并在后续章节中进行讨论。
摘要
检索结果里可能包含冗余或不必要的信息,这些信息会阻碍模型准确地生成回答。另外,长提示也会拖慢推理过程。因此,在RAG管道中,利用高效的方法对检索到的文档进行摘要,就变得非常关键。摘要任务可以分为抽取式和生成式两种。抽取式方法把文本切成句子,然后根据重要性给它们打分排序。生成式方法则从多个文档中综合信息。本文中,因为RAG检索的是与查询相关的信息,所以我们主要关注基于查询的摘要方法。我们在三个基准数据集(NQ、TriviaQA和HotpotQA)上评估了这些方法。摘要方法的对比结果在表10里。我们推荐使用Recomp工具,它能实现出色的性能。虽然LongLLMLingua表现稍逊一筹,但它在非训练数据集上表现不错,所以可以作为一个备选方案。附录里提供了非基于查询的摘要方法的更多实现细节和讨论。
生成器的微调
这部分我们专注于对生成器进行微调,而检索器的微调就留到未来再探索了。我们想研究微调,特别是相关或不相关背景信息,对生成器性能的影响。微调的损失就是生成器输出的真实结果的对数负似然。为了研究这个影响,特别是相关和不相关背景的作用,我们定义了dgold作为与查询相关的背景,drandom作为随机检索到的背景。我们通过以下几种方式调整背景的组成:
Dg: 由与查询相关的文档组成的增强型背景。Dr: 包含一个随机采样的文档作为背景。Dgr: 由一个相关文档和一个随机选择的文档组成的增强型背景。Dgg: 包含两个与查询相关文档副本的增强型背景。
我们把未微调的基础生成器标记为Mb,把根据相应D微调后的模型分别标记为Mg、Mr、Mgr、Mgg。然后在多个问答和阅读理解数据集上微调模型。基础模型选用Llama-2-7B,在验证集上进行评估时,会使用Dg、Dr、Dgr以及不检索的D。如图所示,用混合相关和随机文档训练的模型Mgr,在提供高质量背景或混合背景时表现最佳。这说明,在训练时混合相关和随机背景,可以增强生成器对不相关信息的鲁棒性,同时也确保它能有效利用相关的背景信息。
寻找最佳RAG实践
现在,我们来探讨一下实施RAG的最佳实践。首先,我们采用第3节里为每个模块确定的默认做法。然后,按照图1所示的工作流,逐步优化各个模块,最终为整个总结模块选择一个最有效的实现方案。基于第3.8节的研究,我们使用微调过的Llama2-7B-Chat模型作为生成器,并且每个查询都由少量随机选择的文档和相关文档进行增强。我们用Milvus构建了一个向量数据库,里面包含了1000万条英文维基百科文本和400万条医学数据。我们还研究了移除查询分类、重排序和总结模块会带来什么影响,以此评估它们各自的贡献。
综合评估
我们在各种NLP任务和数据集上进行了广泛的实验,来评估RAG系统的性能。这些任务包括:常识推理、事实核查、开放域问答、多跳问答、医学问答。评估指标用的是RAGAs推荐的,包括忠实性、背景相关性、答案相关性和答案正确性。此外,我们还通过计算检索到的文档与标准文档之间的余弦相似度,来衡量检索的相似性。对于常识推理、事实核查和医学问答,我们使用准确率作为评估指标。对于开放域问答和多跳问答,我们使用词级别的F1分数和完全匹配分数。最终的RAG得分,是通过计算上述五个RAG能力的平均值来确定的。
结果与分析
实验结果清晰地揭示了以下几点:
查询分类模块确实能提升准确性并减少延迟。
检索模块里,“Hybrid with HyDE”这个方法虽然能拿到最高的RAG分数,但计算成本也高。所以更推荐使用“Hybrid”或“Original”方法,在性能和成本间取得平衡。
重排序模块的重要性不言而喻——一旦缺失,性能就明显下降。其中,MonoT5方法表现最佳,说明它在增强检索文档相关性方面确实很有效。
重新包装模块里,“反向”配置表现突出。这表明,把更相关的背景信息放在更靠近查询的位置,能产生最佳结果。
摘要模块方面,虽然直接删掉它能获得更低的延迟,但考虑到生成器有最大长度限制,Recomp仍然是首选。
每个模块都对RAG系统的整体性能做出了独特的贡献。查询分类模块提高了准确性和速度;检索和重排序模块显著增强了系统处理多样化查询的能力;重新包装和总结模块则进一步优化了系统的输出,确保了高质量的回答。
实施RAG的最佳实践
根据实验结果,我们整理了两套分别针对不同需求的RAG系统实施建议:一套专注于性能最大化,另一套则在效率和效能之间寻求最佳平衡。
最佳性能实践: 建议包含查询分类模块,检索采用“Hybrid with HyDE”方法,重排序使用monoT5,重新包装选择反向方式,并用Recomp进行总结。
平衡效率实践: 建议包含查询分类模块,检索采用Hybrid方法,重排序选用TILDEv2,重新包装选择反向方式,并用Recomp进行总结。
多模态扩展
将RAG扩展到多模态应用,我们集成了文本到图像和图像到文本的检索能力,使用大量配对的图像和文本描述作为检索来源。这种多模态RAG能力带来的好处显而易见:基于检索的方法能提供经过验证的多模态信息,确保了信息的真实性和详细程度,而且通常效率更高。下一步,我们计划将这个策略扩展到视频和语音等其他模态,同时探索更高效、更有效的跨模态检索技术。

结论
这项研究的目标,就是识别出实施检索增强生成的最佳实践,从而提高大语言模型生成内容的质量和可靠性。我们系统地评估了RAG框架中每个模块的多种潜在解决方案,并为每个模块推荐了最有效的方法。此外,我们还提出了一个综合评价基准来评估RAG系统,并通过大量实验,在各种备选方案中确定了最佳实践。这份研究成果,不仅有助于更深入地理解检索增强生成系统,也为未来的研究奠定了基础。
局限性
在本研究中,我们评估了不同微调方法对大语言模型生成器的影响。以往的研究已经证明了同时训练检索器和生成器的可行性,我们未来也打算探索这个方向。本研究采用模块化设计原则,简化了对最佳RAG实现的搜索过程,降低了复杂性。由于构建向量数据库和开展实验的成本高昂,我们对片段划分模块的评估,仅限于调查了部分代表性技术的有效性和影响。进一步探索不同片段划分技术对整个RAG系统的影响,将是一个很有意思的研究方向。同时,虽然我们讨论了将RAG扩展到语音、视频等其他模态的应用,但未来的探索可以将这项研究扩展到更多模态上。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:复旦大学发布最佳RAG方案详解要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点“训练数据的质量,直接影响大模型的最终表现,这一观点绝非夸张”决定大模型最终质量的关键因素,除了模型架构设计,更重要的其实是训练数据。从某种意义上讲,数据的质量几乎直接决定了模型能力的上限。那么,面对海量且杂乱无章的原始信息,如何才能梳理出真正适用于大模型训练的高质量数据集?这无疑是值得深入探讨的问
基于WordEmbedding与LSTM构建编码器-解码器架构,实现新闻正文到短标题的序列生成。预处理包括分词、词表截断及长度统一,双向LSTM编码正文,单向LSTM解码并加入注意力机制,采用TeacherForcing训练及AdamW优化,最终导出ONNX部署。
(文章来源:润建股份) 2025年5月28日,润建股份有限公司与环江毛南族自治县人民政府正式签署战略合作协议。此次政企合作聚焦于城市AI生态建设,致力于借助人工智能技术为县域数字化高质量发展注入全新动能。 签约仪式现场,环江毛南族自治县党委副书记吴履伟、党委常委副县长聂云鹏,县发改局、大数据局、文旅
多模态大模型在处理单张图像时已经表现得相当出色,但一旦涉及长序列图片的理解,挑战便接踵而至——计算成本急剧上升,信息丢失也几乎难以避免。那么,如何突破这一瓶颈?近期,阿里开源的mPLUG-Owl3提出了一种颇具巧思的解决方案。它不仅擅长单图任务,更重要的是,在面对长图文序列、混合图文内容乃至长视频场
- 日榜
- 周榜
- 月榜
热点快看
