RAG发展时间线
RAG工作发展时间线(2020年至今)。展示了RAG相关研究的三个主要领域:基础(包括RAG学习和RAG框架)、进阶和评估。关键的语言模型(GPT-3、GPT-4等)发展节点标注在时间线上。
在人工智能发展的历程中,我们一直在追寻一个目标:让AI系统能够像人类一样,灵活地获取、理解和运用知识。传统的大语言模型(LLM)虽然强大,但它们的知识都是静态的,被锁在训练时的参数里。而检索增强生成(Retrieval-Augmented Generation,RAG)技术的出现,让AI获得了"随时查阅资料"的能力。这就像是把一个"死记硬背"的学生,变成了一个"会查资料"的研究者。本文(arXiv:2503.10677v2)将带你深入了解RAG技术的核心机制和具体方法,帮助你在实际开发中更好地运用这项革命性的技术。
RAG框架概述。包含三个主要组件:(1)查询由LLM处理及其内部知识;(2)基于查询检索外部知识;(3)知识集成将内部和外部知识结合生成最终答案。
知识检索模型对比
知识检索模型对比。包括稀疏检索、密集检索、混合检索等不同策略,以及相应的模型实现和是否使用深度学习。
检索是RAG系统的第一道关卡,它决定了系统能否找到真正相关的信息。不同于简单的关键词匹配,现代RAG系统采用了多种先进的检索策略,主要包括以下几类:
稀疏检索以关键词和词频为基础,使用如BM25等经典算法计算文档与查询的相似度。其特点是计算速度快,不需要大量标注数据训练,但语义理解能力有限。在工程实践中,开发者常用Elasticsearch或Solr这类成熟的搜索引擎来实现稀疏检索。这种方法特别适合处理专业术语或罕见词汇,因为它们往往在文档中只出现少数几次,但权重却很高。
密集检索使用神经网络将文本映射到低维向量空间,通过计算向量相似度来判断文本相关性。代表性的模型包括DPR(Dense Passage Retriever)和REALM等。在工程实践中,这一过程通常分为两步:首先使用双塔结构(Bi-Encoder)快速筛选出候选文档,然后使用交叉编码器(Cross-Encoder)进行更精确的重排序。密集检索的关键在于向量表示的质量,现代系统通常采用对比学习或监督微调来优化表示。
混合检索结合了稀疏检索和密集检索的优势,例如ColBERT模型引入了后期交互机制,在保持效率的同时提升了检索的精确度。其技术创新包括:
多阶段检索采用"粗检索+精排序"的策略,例如RocketQA使用了多阶段训练和负样本挖掘技术。具体包括:
RAG使用的答案生成策略,包括显式去噪、基于判别的去噪、自反思和自适应去噪、上下文过滤等方法,以及结构化知识推理、多文档推理等技术。
生成是RAG系统的第二个关键组件,不同的RAG方法采用了不同的生成策略。根据生成控制的紧密程度,我们可以将其分为以下几类:
最直接的方法是将检索结果作为上下文直接拼接到输入中,让语言模型基于此生成回答。经典模型如RAG-Sequence和REALM采用了这种方法。它的优点是实现简单,可以直接使用现有的语言模型架构,但缺点是可能因为输入长度限制而丢失重要信息。
引导式生成使用特殊的提示词或示例来引导模型如何使用检索到的知识。例如,Chain-of-Thought RAG通过多步思考过程引导模型进行推理;Self-RAG则让模型自行判断何时需要检索知识。引导式生成的关键是设计有效的提示策略,使模型能够正确地整合和应用检索到的知识。
降噪式生成会过滤检索结果中的噪声信息,主要包括四种机制:
推理式生成能够基于检索到的信息进行复杂的推理,例如:
RAG训练方法包括静态训练、单向引导训练和协作训练。图示展示了检索器和生成器之间的不同交互方式。
知识集成是RAG系统最具技术挑战性的部分,根据集成的深度和方式,可以分为以下几种方法:
输入层集成是最直接的方式,将检索到的文本直接作为模型的输入。典型实现如RAG-Sequence和REALM,它们将检索结果与原始查询拼接后输入语言模型。这种方式的特点是:
中间层集成在模型的内部层进行知识融合,例如RETRO和FiD模型。它们的主要特点是:
输出层集成在生成过程中动态使用检索知识,如Atlas和REALM-Doc模型。其特点包括:
根据检索器和生成器之间的交互方式,RAG的训练策略可以分为三种主要类型:
1. 静态训练(Static Training):
2. 单向引导训练(Unidirectional Guided Training):
3. 协作训练(Collaborative Training):
RAG的基本目标和组成,包括精确的用户意图理解、准确的知识检索、无缝的知识集成、优质的答案生成和全面的RAG评估。
随着研究的深入,RAG技术已发展出多种高级架构。这些架构代表了RAG技术的不同发展方向,各有侧重点。
基本RAG方法,包括多源知识处理、嵌入、索引、检索和生成等核心流程。展示了从查询理解到最终答案生成的完整技术链路。
基础检索增强范式是RAG技术的基石,通过将检索系统与生成模型紧密结合,实现了知识驱动的生成能力。其核心架构包括:
基础检索增强范式的代表模型包括原始的RAG-Sequence、RAG-Token和后来的REALM、DPR等,它们奠定了检索增强生成的理论基础。
记忆增强范式通过引入外部记忆组件,突破了传统RAG系统在知识持久化方面的限制。这一范式特别关注如何有效地存储、更新和利用历史知识,使系统能够在多轮交互中保持知识的连贯性和一致性。
代表模型包括RETRO、Memorizing Transformer和RecurrentGPT,它们通过引入外部记忆组件,大幅提高了模型处理长文本和多轮对话的能力。
多模态融合范式打破了传统RAG主要处理文本的局限,扩展到图像、音频、视频等多种模态。这种范式特别适合处理需要跨模态理解的复杂任务。
代表工作包括CLIP-as-service、PaLM-E和Flamingo等,它们实现了文本、图像甚至视频之间的无缝融合,大幅拓展了RAG的应用场景。
知识增强范式通过引入结构化知识,如知识图谱、本体和规则库等,增强了RAG系统的推理能力和知识理解深度。
代表工作包括KG-BART、ERNIE和K-BERT等,它们通过整合结构化知识,实现了更深层次的语义理解和推理能力。
自适应RAG范式代表了RAG技术的最新发展方向,它赋予系统自主决策和学习能力,能够根据任务需求动态选择最优的检索和生成策略。
代表工作包括Self-RAG、Active-RAG和ReAct等,它们将RAG系统从被动的知识获取工具提升为具有决策能力的智能代理。
虽然通用RAG系统已经表现出色,但在专业领域中,RAG需要特殊的适配才能发挥最佳性能。下面介绍几个重要的垂直领域适配方法:
专业领域通常有其特有的术语、概念和知识体系,需要针对性地优化RAG系统。
代表性工作包括医疗领域的Med-PALM、法律领域的LegalRAG和金融领域的FinRAG等,它们通过深度领域适配,大幅提升了在垂直领域的表现。
RAG利用的多样化知识类型,包括结构化知识(知识图谱、表格)、半结构化知识(网页)、非结构化知识(PDF、文本)和多模态知识(音频、视频、图像)。
实际应用中,知识往往分散在多种不同的源中,需要有效的融合策略。
这种多源融合技术在企业内部知识管理、智能客服和综合信息系统中应用广泛,显著提升了系统的全面性和准确性。
评估RAG系统的性能是一个复杂的任务,需要从多个维度进行综合考量。
高质量的RAG系统需要在多个方面表现出色,主要评估维度包括:
为了全面评估RAG系统,研究者开发了多种评估方法:
目前业界广泛使用的评估基准包括KILT、LAMA、T-REx等,它们提供了标准化的测试集合和评估流程,便于不同系统间的公平比较。
RAG技术正在重新定义AI系统与知识交互的方式,从早期的简单拼接发展到今天的多模态融合和自适应学习。本文详细介绍了RAG的各种核心技术和方法,希望能为你在实际开发中提供参考。
文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。
【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。
项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file
本地安装:https://www.deepbi.com/
【开源免费】airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。
项目地址:https://github.com/hitsz-ids/airda
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】MindSearch是一个模仿人类思考方式的AI搜索引擎框架,其性能可与 Perplexity和ChatGPT-Web相媲美。
项目地址:https://github.com/InternLM/MindSearch
在线使用:https://mindsearch.openxlab.org.cn/
【开源免费】Morphic是一个由AI驱动的搜索引擎。该项目开源免费,搜索结果包含文本,图片,视频等各种AI搜索所需要的必备功能。相对于其他开源AI搜索项目,测试搜索结果最好。
项目地址:https://github.com/miurla/morphic/tree/main
在线使用:https://www.morphic.sh/
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0