游乐游手机版
首页/AI热点日报/热点详情

检索增强生成工作流深入解析与最佳实践指南

类型:热点整理2026-06-28
最近读到一篇相当扎实的论文,来自复旦大学和智能信息处理上海市重点实验室,专门讨论了检索增强生成(RAG)的最佳实践。这篇文章系统地梳理了RAG工作流的每一个环节,并给出了切实可行的配置建议,可以说是当前把RAG落地做精的一份重要参考。 论文题目:Searching for Best Practice

最近读到一篇相当扎实的论文,来自复旦大学和智能信息处理上海市重点实验室,专门讨论了检索增强生成(RAG)的最佳实践。这篇文章系统地梳理了RAG工作流的每一个环节,并给出了切实可行的配置建议,可以说是当前把RAG落地做精的一份重要参考。

深入RAG工作流:检索生成的最佳实践

论文题目:Searching for Best Practices in Retrieval-Augmented Generation
论文链接:https://arxiv.org/pdf/2407.01219
代码地址:https://github.com/FudanDNN-NLP/RAG?tab=readme-ov-file


论文概述

RAG技术的好处在哪儿呢?它能把最新的信息整合进来,显著减少模型“编造”内容的可能,尤其是在一些专业领域里,效果提升非常明显。一个完整的RAG系统,其实跟一条精密的生产线差不多,通常包含好几个关键的链条步骤:先判断某个问题需不需要去外部资料库里查一查(查询分类);如果需要,就去检索相关的文档;然后把这些结果按相关性排个序(重排序);排序之后,还得把材料整理成更适合生成答案的格式(重组);最后,从整理好的文档里提炼出关键信息,生成最终答复,同时还得把多余重复的内容去掉(摘要)。

当然,要把这个东西真正跑通,还有不少细节要琢磨。比如文档怎么切分最合适、用什么嵌入模型来理解文档意思、选哪种向量数据库能又快又准地干活,以及怎么微调模型效果更好。这篇论文正是冲着这些“最佳实践”来的,把现有的各种方法组合起来做了系统的对比,还展示了多模态检索在视觉问答上的潜力,以及用“检索即生成”策略加速多模态内容生成的效果。


RAG工作流

查询分类

不是所有问题都需要走一遍RAG流程的。大模型本身就有相当强的知识储备,如果每个问题都去检索一遍,响应时间会白白增加。所以,第一步是先给查询做个“体检”:需要检索的就走RAG通道,不需要的,直接让模型自己回答。文中选用了 BERT-base-multilingual-cased 作为这个分类器。

分块

把长文档切成合适的段落,是提升检索精度的关键动作,也能避免模型被过长文本“撑到”。分块的粒度可以灵活选:按词来切最直接,但容易把完整句子拆开;按语义来切,上下文完整,但用LLM去判断断点比较耗时;句子级别则在文本语义和效率之间找到了一个不错的平衡点。这篇论文选的就是句子级切分。

块大小

块的大小对系统表现影响很大。大块提供更多上下文,理解更透彻,但处理更慢;小块检索召回率高,速度快,但信息可能不够用。论文专门研究了块大小变化对系统“忠实度”(回答是否忠于检索到的文档)和“相关性”(检索结果和回答是否匹配用户问题)的影响。

分块策略

除了分块大小,还有更高级的玩法。比如“小到大”技术,用小块来匹配查询,但返回包含小块上下文的大块;滑动窗口则保证在切分过程中上下文不掉线。论文用 LLM-Embedder 做嵌入模型,小块设为175个词元,大块512个词元,重叠20个词元。事实证明,这些高级策略对检索质量的提升确实有帮助。

向量数据库

向量数据库是用来存嵌入向量和元数据的。为了快速找到相关文档,它离不开各种索引和近似最近邻(ANN)技术。论文按四个标准——索引类型多样性、十亿级向量支持、混合搜索能力、云原生特性——做了评估,最后选了 Milvus。

检索方法

检索模块的任务,是根据查询和文档的相似度,挑出最相关的前k个结果,交给生成模型。但原始查询常常表达不好,缺语义信息,导致检索效果打折。为此,论文评估了三种查询转写方法:查询重写(改得更准)、查询分解(拆成子问题)、伪文档生成(生成假设答案去查类似文档)。最后推荐的是混合搜索搭配HyDE(Hybrid with HyDE),单假设文档,稀疏检索(BM25)和密集检索(原始嵌入)相结合,α系数设为0.3时效果最佳,延迟也相对可控。

排序方法

为了让最相关的材料排在前面,重排序是必不可少的环节。论文比较了DLM Reranking(把排序变成分类问题,输出概率判断)和TILDE Reranking(按查询词在文档中间出现的似然值求和排序)。结果说明,这一关的不加,性能会明显缩水。

文档打包

大模型生成的答案质量,可能会受输入文档的顺序影响。于是,重排序之后加了一个“重组”模块,有三种玩法:正向(相关性从高到低)、反向(从低到高)、两侧(最相关的放两端)。实验发现,反向配置效果最好。

摘要

检索结果里经常有冗余或无关信息,影响模型准确作答,也会让提示词太长、拖慢速度。摘要模块可以解决这个问题。它分为抽取式和生成式:抽取式是挑出重要句子,生成式则是把多篇信息综合起来重述。论文聚焦于基于查询的摘要方法,重点比较了Recomp(兼具抽取和生成能力)、LongLLMLingua(专注关键信息)和Selective Context(识别并移除冗余)。


RAG最佳实践概述

论文的核心贡献之一,是把每个模块的最佳方案拼装起来,形成一个完整的RAG流程,然后逐个优化、对比,直到确定最终方案。结果如下:

  • 查询分类模块:带来系统性提升,整体得分从0.428升到0.443,同时每个查询的延迟从16.41秒降到了11.58秒。
  • 检索模块:“Hybrid with HyDE”得分最高(0.58),但计算成本较高(11.71秒)。如果对延迟敏感,推荐用“Hybrid”或“Original”,性能相当,但更快。
  • 重排序模块:少了它,性能明显下降。MonoT5拿了最高平均分,证明了重排序在提升检索文档相关性方面的关键作用。
  • 重组模块:反向配置(Reverse)表现最优,RAG得分达到0.560。说明把相关上下文放在查询附近最有效。
  • 摘要模块:虽然去掉摘要可以在降低延迟的同时得到相近结果,但Recomp仍是首选,尤其在处理生成器的长度限制时优势明显。对响应时间敏感的场景,可以去掉摘要模块省时间。

一句话总结:查询分类提了准度、降了延迟;检索和重排序让系统能更好地应对各类查询;重组和摘要则进一步优化了输出,确保回答质量。


论文总结

这篇论文系统性地实现了RAG的最佳实践,在每个模块上都做了充分的方法比较,并给出了推荐配置。它是一份非常接地气的工程指南,非常适合那些希望把RAG真正用好的团队参考。

来源:https://www.53ai.com/news/RAG/2024122359781.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。