检索增强生成(RAG)技术通过引入外部知识库解决大语言模型受限于静态训练数据的问题。RAG系统包含知识库、检索器和生成器三大模块,通过向量化用户问题、检索相关知识、构建Prompt并生成结果,显著提升模型在知识覆盖广度、准确性和时效性方面的表现,有效减少"幻觉"现象,同时避免模型更新带来的高计算成本和灾难性遗忘问题。
随着大语言模型的规模不断扩大,其在生成自然语言与解决复杂任务上的能力取得了显著进步。然而,模型的性能仍然受限于训练期间所接触到的静态数据存在正确性、时效性和完备性不足等问题。这种局限性使其在处理实时信息、 长尾知识以及动态更新的领域时显得力不从心。
训练数据和参数学习上的不足将导致:大语言模型在面对某些问题时无法给出正确答案,甚至出现“幻觉”, 即生成看似合理实则逻辑混乱或违背事实的回答。为了解决这些问题并进一步提 升大语言模型的生成质量,我们可以将相关信息存储在外部数据库中,供大语言模型进行检索和调用。这种从外部数据库中检索出相关信息来辅助改善大语言模型生成质量的系统被称之为检索增强生成(Retrieval-AugmentedGeneration,RAG)。
因此,如何通过外部知识检索来增强大语言模型的能力,成为了当前研究和应用的热点方向。检索增强生成技术通过在推理过程中引入外部知识库 或搜索引擎,使语言模型能够动态获取所需的信息,而不再完全依赖于模型参数。这种方法不仅显著提升了模型在知识覆盖广度、准确性和时效性方面的表现,还在解决模型“幻觉”(Hallucination) 问题上展现出重要作用。
检索增强生成(RAG)旨在通过检索和整合外部知识来增强大语言模型生成 文本的准确性和丰富性,其是一个集成了外部知识库(Corpus )、信息检索器(Retriever)、生成器(Generator,即大语言模型)等多个功能模块的系统。RAG利用信息检索、深度学习等多种技术为大语言模型在生成过程中引入最新的、特定领域的知识,从而克服传统大语言模型的局限性,提供更加精准和可靠的生成内容。
具体而言,给定一个自然语言问题(Query),检索器将问题进行编码,并从知识库(如维基百科)中高效检索出与问题相关的文档。然后,将检索到的知识和原始问题一并传递给大语言模型, 大语言模型根据检索到的知识和原始问题生成最终的输出。
RAG的核心优势在于 不需要对大语言模型的内部知识进行更新,便可改善大语言模型的幻觉现象,提高生成质量。这可以有效避免内部知识更新带来的计算成本和对旧知识的灾难性遗忘(Catastrophic Forgetting)。
一、RAG流程
1.向量化用户问题:将 用户问题 用相同的Embedding 模型转换为向量,用以检索相关知识分片
2.检索(Retrieval):通过向量数据库一系列高效的数学计算 (如余弦相似度、欧氏距离等),检索出语义相似度最高的几个知识分片(Top_k)
3.构建 Prompt:将Prompt + 检索结果+ 用户问题构建成完整的 Prompt
4.生成(Generation):大语言模型再根据这个 Prompt 生成结果
知识库构建
数据收集与准备:从企业内部系统、文档、数据库等渠道收集相关信息。
文本处理:对收集到的数据进行预处理,如清洗、标准化和分割成适合的小段落。
向量化:利用嵌入模型将每个文本片段转换成向量表示,这些向量能够捕捉文本的语义信息,并允许通过计算向量间的距离来衡量内容相似度。
索引创建:建立高效检索机制,例如使用近似最近邻搜索算法,以便快速找到与查询最相关的知识片段。
知识库的应用
过程简而言之就是,根据用户输入问题,在向量知识库中寻找关联信息片段,一起整合生成新的prompt,输入模型,让模型输出结果。
这里有个疑问,为什么检索出来的是知识片段,不是整个文档?
主要有下面3个原因:
1、大模型有上下文长度限制,需要精简prompt
2、成本考虑,越多的信息,消耗的token也越多,成本高
3、避免无用信息干扰模型生成
二、增强架构
仅仅简单地对外部知识库、检索器、大语言模型等功能模块进行连接,无法最大化RAG的效用。
1、增强架构
黑盒增强架构是在闭源模型的背景下提出的,它限制了对模型内部参数的直 接调整。在这种架构下,我们介绍了无微调和检索器微调两种策略。无微调简单实用,它直接利用预训练的语言模型和检索器,不进行任何更新,适合快速部署。然而,这种方法的缺点在于无法对语言模型进行优化以适应新的任务需求。相比之下,检索器微调通过调整检索器来适应语言模型输出,提供了在无法修改语言模 型的情况下提升性能的可能性。这种方法的效果在很大程度上取决于调整后的检 索器的准确性。
白盒增强架构则利用开源模型的优势,允许调整语言模型结构和参数,可以 更好的协调减速器和大语言模型。在这种架构中,我们介绍了两种微调形式:仅微调语言模型和检索器和语言模型协同微调。仅微调语言模型专注于优化语言模型, 根据检索到的信息仅调整语言模型结构和参数,以提升特定任务上的性能。检索器和语言模型协同微调是一种更为动态的策略,它通过同步更新检索器和语言模型,使得两者能够在训练过程中相互适应,从而提高整体系统的性能。尽管白盒增强架构可以有效改善RAG的性能,但也存在明显缺点。这种架构通常需要大量计算资源和时间来训练,特别是协同微调策略,需要大量的运算资源来实现语言模 型和检索器的同步更新。
三、知识检索
3.1知识库构建
知识库构成了RAG系统的根基。知识库构建主要涉及数据采集及预处理与知识库增强两个步骤。
数据采集与预处理为构建知识库提供“原材料”。在构建文本型知识库的数据 采集过程中,来自不同渠道的数据被整合、转换为统一的文档对象。这些文档对象 不仅包含原始的文本信息,还携带有关文档的元信息(Metadata)。元信息可以用于后续的检索和过滤。以维基百科语料库的构建为例,数据采集主要通过提取维 基百科网站页面内容来实现。这些内容不仅包括正文描述的内容,还包括一系列 的元信息,例如文章标题,分类信息,时间信息,关键词等。
在采集到相应的数据后,还需通过数据预处理来提升数据质量和可用性。在构 建文本型知识库时,数据预处理主要包括数据清洗和文本分块两个过程。数据清洗旨在清除文本中的干扰元素,如特殊字符、异常编码和无用的HTML标签,以 及删除重复或高度相似的冗余文档,从而提高数据的清晰度和可用性。文本分块 是将长文本分割成较小文本块的过程,例如把一篇长文章分为多个短段落。对长 文本进行分块有两个好处:一是为了适应检索模型的上下文窗口长度限制,避免 超出其处理能力;二是通过分块可以减少长文本中的不相关内容,降低噪音,从而 提高检索的效率和准确性。
文本分块的效果直接影响后续检索结果的质量。如果分块处理不当,可能 会破坏内容的连贯性。因此,制定合适的分块策略至关重要,包括确定切分方法 (如按句子或段落切分)、设定块大小,以及是否允许块之间有重叠。文本分块的具 体实施流程通常开始于将长文本拆解为较小的语义单元,如句子或段落。随后,这 些单元被逐步组合成更大的块,直到达到预设的块大小,构建出独立的文本片段。 为了保持语义连贯性,通常还会在相邻的文本片段之间设置一定的重叠区域。
知识库增强是通过改进和丰富知识库的内容和结构,以提升其质量和实用性。 这一过程通常涉及查询生成与标题生成等多个步骤,以此为文档建立语义“锚 点”,方便检索时准确定位到相应文本。
查询生成指的是利用大语言模型生成与文档内容紧密相关的伪查询。这些伪 查询从查询的角度来表达文档的语义,可以作为相关文档的“键”,供检索时与用 户查询进行匹配。通过这种方式,可以增强文档与用户查询的匹配度。例如,对于 一篇介绍考拉和树袋熊关系的文档,生成的查询“考拉和树袋熊之间的关系是什 么?”不仅准确反映了文档的主题,还能有效引导检索器更精确的检索到与用户提 问相关的信息。
标题生成指的是利用大语言模型为没有标题的文档生成合适的标题。这些生 成的标题提供了文档的关键词和上下文信息,能来用来帮助快速理解文档内容,并在检索时更准确地定位到与用户提问相关的信息。对于那些原始文档中缺乏标题的情况,通过语言模型生成标题显得尤为重要。
3.2查询增强
知识库涵盖的知识表达形式是有限的,但用户的提问方式却是千人千面的。用 户遣词造句的方式以及描述问题的角度可能会与知识库中的存储的文本间存在差 异,这可能导致用户查询和知识库之间不能很好匹配,从而降低检索效果。为了解 决此问题,我们可以对用户查询的语义和内容进行扩展,即查询增强,以更好的匹 配知识库中的文本。
查询语义增强旨在通过同义改写和多视角分解等方法来扩展、丰富用户查询的语义,以提高检索的准确性和全面性。接下来分别对同义改写和多视角分解进行简要介绍。
查询内容增强旨在通过生成与原始查询相关的背景信息和上下文,从而丰富 查询内容,提高检索的准确性和全面性与传统的仅依赖于检索的方式相比, 查询内容增强方法通过引入大语言模型生成的辅助文档,为原始查询提供更多维 度的信息支持。
生成背景文档是一种查询内容增强的方法。它指的是在原始查询的基础上,利用大语言模型生成与查询内容相关的背景文档。
3.3检索器选择
给定知识库和用户查询,检索器旨在找到知识库中与用户查询相关的知识文 本。检索器可分为判别式检索器和生成式检索器两类。
判别式检索器通过判别模型对查询和文档是否相关进行打分。判别式检索器 通常分为两大类:稀疏检索器和稠密检索器。稀疏检索器利用离散的、基于词频的 文档编码向量进行检索,而稠密检索器则利用神经网络生成的连续的、稠密向量 对文档进行检索。
稀疏检索器(SparseRetriever)是指使用稀疏表示方法来匹配文本的模型。这 类检索器通过统计文档中特定词项出现的统计特征来对文档进行编码,然后基于 此编码计算查询与知识库中的文档的相似度来进行检索。典型的稀疏检索技术包括TF-IDF 和 BM25等,它们通过分析词项的分布和频率来评估文档与查询 的相关性。
稠密检索器一般利用预训练语言模型对文本生成低维、密集的向量表示,通 过计算向量间的相似度进行检索。
生成式检索器通过生成模型对输入查询直接生成相关文档的标识符。与判别式检索器不断地从知识库中去匹配相关文档不同,生成式检索器直接将知识库中的文档信息记忆在模型参数中。然后,在接收到查询请求时,能够直接生成 相关文档的标识符(即DocID),以完成检索。生成式检索器通常采用基于 Encoder-Decoder 架构的生成模型,如T5、BART等。生成式检索器的训练过程通常分为两个阶段。在第一阶段,模型通过序列到序列的学习方法,学习如何将查询映射到相关的文档标识符。这一阶段主要通过最大似然估计(MLE)来 优化模型,确保生成的文档标识符尽可能准确。在第二阶段,通过数据增强和排名优化进一步提高检索效率和准确性。数据增强主要通过生成伪查询或使用文档片段作为查询输入,以增加训练数据的多样性和覆盖面。排名优化则涉及 使用特定的损失函数,如对比损失或排名损失,来调整模型生成文档标识符的顺序和相关性,从而更好地匹配查询的需求。
在生成式检索器中,DocID的设计至关重要。其需要在语义信息的丰富性与标 识符的简洁性之间取得平衡。常用的DocID形式分为两类:基于数字的DocID和 基于词的DocID。基于数字的DocID方法使用唯一的数字值或整数字符串来表示 文档,虽然构建简单,但在处理大量文档时可能导致标识符数量激增,增加计算和 存储负担。相比之下,基于词的DocID方法直接从文档的标题、URL或N-gram中 提取表示,能更自然地传达文档的语义信息。通常,标题是最佳选择,因为它 提供了文档的宏观概述。但在缺乏高质量标题时,URL或N-gram也可作为有效的 替代方案。
尽管生成式检索器在性能上取得了一定的进步,但与稠密检索器相比,其效果仍稍逊一筹。此外,生成式检索器还面临着一系列挑战,包括如何突破模型输入长度的限制、如何有效处理大规模文档以及动态新增文档的表示学习等,这些都是亟待解决的问题。
3.4检索效率增强
知识库中通常包含海量的文本,对知识库中文本进行逐一检索缓慢而低效。为 提升检索效率,可以引入向量数据库来实现检索中的高效向量存储和查询。向量数据库的核心是设计高效的相似度索引算法。
相似度索引算法:在向量检索中,常用的索引技术主要分成三大类:基于空间划分的方法、基于 量化方法和基于图的方法。
向量数据库:
3.5检索结果重排
检索器可能检索到与查询相关性不高的文档。这些文档如果直接输入给大语 言模型,可能会引发生成质量的下降。为此,在将其输入给大语言模型之前,我们 还需要对其进行进一步的精选。精选的主要途径是对检索到的文档进行重新排序, 简称重排,然后从中选择出排序靠前的文档。重排方法主要分为两类:基于交叉编码的方法和基于上下文学习的方法。
基于交叉编码的重排方法基于交叉编码的重排方法利用交叉编码器(Cross-Encoders)来评估文档与查询之间的语义相关性。MiniLM-L5是应用最为广泛的基于交叉编码的重排开源模型之一。该模型通过减少层数和隐层单元数来降低参数数量,同时采用知识蒸馏技术从大型、高性能的语言模型中继承学习,以此来提高模型性能。
基于上下文学习的重排方法基于上下文学习的方法是指通过设计精巧的Prompt,使用大语言模型来执行重排任务。这种方法可以利用大语言模型优良的深层语义理解能力,从而取得了良好的表现。RankGPT是基于上下文学习的重排方法中的代表性方法。在重排任务中,输入文档长度有时会超过上下文窗 口长度的限制。为了解决该问题,RankGPT采用了滑动窗口技术来优化排序过程。 该技术将所有待排序的文档分割成多个连续的小部分,每个部分作为一个窗口。整个排序过程从文档集的末尾开始:首先,对最后一个窗口内的文档进行排序,并将 排序后的结果替换原始顺序。然后,窗口按照预设的步长向前移动,重复排序和替 换的过程。这个过程将持续进行,直到所有文档都被处理和排序完毕。通过这种分 步处理的方法,RankGPT能够有效地对整个文档集合进行排序,而不受限于单一 窗口所能处理的文档数量。
四、生成增强
4.1何时增强
大语言模型在训练过程中掌握了大量知识,这些知识被称为内部知识(Self Knowledge)。对于内部知识可以解决的问题,我们可以不对该问题进行增强。不对 是否需要增强进行判断而盲目增强,不仅不会改善生成性能,还可能“画蛇添足” 引起生成效率和生成质量上的双下降。
对生成效率而言,增强文本的引入会增加 输入Token的数量,增加大语言模型的推理计算成本。另外,检索过程也涉及大量 的计算资源。对生成质量而言,因为检索到的外部知识有时可能存在噪音,将其输 入给大语言模型不仅不会改善大语言模型的生成质量,反而可能会生成错误内容。
判断是否需要增强的核心在于判断大语言模型是否具有内部知识。如果我们 判断大模型对一个问题具备内部知识,那么我们就可以避免检索增强的过程,不 仅降低了计算成本,而且还可以避免错误增强。判断模型是否具有内部知识的方 法可以分为两类:(1)外部观测法,通过Prompt直接询问模型是否具备内部知识, 或应用统计方法对是否具备内部知识进行估计,这种方法无需感知模型参数;(2) 内部观测法,通过检测模型内部神经元的状态信息来判断模型是否存在内部知识, 这种方法需要对模型参数进行侵入式的探测。
4.2何处增强
在确定大语言模型需要外部知识后,我们需要考虑在何处利用检索到的外部 知识,即何处增强的问题。得益于大语言模型的上下文学习能力、注意力机制的可 扩展性以及自回归生成能力,其输入端、中间层和输出端都可以进行知识融合操 作。在输入端,可以将问题和检索到的外部知识拼接在Prompt中,然后输入给大 语言模型;在中间层,可以采用交叉注意力将外部知识直接编码到模型的隐藏状态中;在输出端,可以利用外部知识对生成的文本进行后矫正。
(1)在输入端增强
在输入端增强的方法直接将检索到的外部知识文本与用户查询拼接到Prompt 中,然后输入给大语言模型。其是当前主流的增强方法。此方式的重点在于Prompt 设计以及检索到的外部知识的排序。良好的Prompt设计和外部知识排序,可以使 模型更好地理解、利用外部知识。
在输入端增强的方法直观且易于实现。模型可以直接从输入的上下文中提取 到所需信息,无需复杂的处理或转换。然而,当检索到的文本过长时,可能导致输 入序列过长,甚至超出模型的最大序列长度限制。这给模型的上下文理解带来挑 战,并且还会增加模型推理计算成本、增加其计算负担。这种方法对大语言模型的 长文本处理能力和上下文理解能力要求较高。
(2)在中间层增强
在中间层增强增强的方法利用注意力机制的灵活性,先将检索到的外部知识 转换为向量表示,然后将这些向量插入通过交叉注意力融合到模型的隐藏状态中。
这种方法能够 更深入地影响模型的内部表示,可能有助于模型更好地理解和利用外部知识。同 时,由于向量表示通常比原始文本更为紧凑,这种方法可以减少对模型输入长度 的依赖。然而,这种方法需要对模型的结构进行复杂的设计和调整,无法应用于黑盒模型。
(3)在输出端增强
在输出端增强的方法利用检索到的外部知识对大语言模型生成的文本进行校 准,是一种后处理的方法。在此类方法中,模型首先在无外部知识的情况下生成一 个初步回答,然后再利用检索到的外部知识来验证或校准这一答案。校验过程基 于生成文本与检索文本的知识一致性对输出进行矫正。矫正可以通过将初步回答 与检索到的信息提供给大模型,让大模型检查并调整生成的回答来完成。
这种方法的优点是可以确保相关,则会导致错误的校准结果。生成的文本与外部知识保持一致,提高答案的准确性和可靠性。然而,其效果在很大程度上依赖于检索到的外部知识的质量和相关性。若检索到的文档不准确或不相关,则会导致错误的校准结果。
上述三种方案是相互独立的,它们也可 以组合使用,以实现更优的增强效果
4.3多次增强
在实际应用中,用户对大语言模型的提问可能是复杂或模糊的。复杂问题往往 涉及多个知识点,需要多跳(multi-hop)的理解;而模糊问题往往指代范围不明, 难以一次就理解问题的含义。对于复杂问题和模糊问题,我们难以通过一次检索增 强就确保生成正确,多次迭代检索增强在所难免。处理复杂问题时,常采用分解式增强的方案。该方案将复杂问题分解为多个子问题,子问题间进行迭代检索增强, 最终得到正确答案。处理模糊问题时,常采用渐进式增强的方案。该方案将问题的 不断细化,然后分别对细化的问题进行检索增强,力求给出全面的答案,以覆盖用 户需要的答案。
4.4降本增效
检索出的外部知识通常包含大量原始文本。将其通过Prompt输入给大语言模 型时,会大幅度增加输入Token的数量,从而增加了大语言模型的推理计算成本。 此问题可从去除冗余文本与复用计算结果两个角度进行解决。
在RAG中,检索出的原始文本通常包含大量的无益于增强生成的冗余信息。 这些冗余信息不仅增加了输入Token的长度,而且还有可能对大模型产生干扰, 导致生成错误答案。去除冗余文本的方法通过对检索出的原始文本的词句进行过滤,从中选择出部分有益于增强生成的部分。去除冗余文本的方法主要分为三类: Token 级别的方法,子文本级别的方法以及全文本级别的方法。
五、RAG总结
RAG 不是单一技术,而是 Embedding(语义理解) + 向量数据库(高效检索) + 召回 / 精排(筛选优化) + 混合策略(场景适配) 的技术协同网络。通过让 “语义表征、快速检索、精准筛选、策略适配” 环环相扣,最终实现 “大模型用外部知识精准回答” 的核心目标,是解决大模型 “知识局限” 的关键技术底座。
AI时代,未来的就业机会在哪里?
答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具,到自然语言处理、计算机视觉、多模态等核心领域,技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。
掌握大模型技能,就是把握高薪未来。
那么,普通人如何抓住大模型风口?
AI技术的普及对个人能力提出了新的要求,在AI时代,持续学习和适应新技术变得尤为重要。无论是企业还是个人,都需要不断更新知识体系,提升与AI协作的能力,以适应不断变化的工作环境。
因此,这里给大家整理了一份《2026最新大模型全套学习资源》,包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等,带你从零基础入门到精通,快速掌握大模型技术!
由于篇幅有限,有需要的小伙伴可以扫码获取!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
为什么大家都在学AI大模型?
随着AI技术的发展,企业对人才的需求从“单一技术”转向 “AI+行业”双背景。企业对人才的需求从“单一技术”转向 “AI+行业”双背景。金融+AI、制造+AI、医疗+AI等跨界岗位薪资涨幅达30%-50%。
同时很多人面临优化裁员,近期科技巨头英特尔裁员2万人,传统岗位不断缩减,因此转行AI势在必行!
这些资料有用吗?
这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
大模型全套学习资料已整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】