少数派-AI 08月20日
AI产品经理必修课:RAG(1)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

检索增强生成(RAG)是一种将外部知识检索与大语言模型(LLM)生成步骤相结合的技术范式。其核心在于,在模型回答问题前,先从可控知识库中检索相关资料,并与用户问题一同构建上下文,再由模型基于这些材料生成答案。这有效降低了模型“幻觉”的概率,并使知识更新与溯源更加灵活透明。RAG通过将知识获取与语言输出解耦,实现了知识层与模型参数层的独立优化,能够“高频改知识,低频改模型”,显著提升了LLM在回答准确性、深度和时效性方面的表现,是解决LLM固有技术问题的有效途径。

📦 **解耦与重编排:RAG的技术核心** RAG将“知识获取(检索)”与“语言组织输出(生成)”这两个过程从大模型内部耦合的状态中分离出来,形成两个可独立优化的模块。知识的更新和检索策略的改进可以单独进行,无需重新训练整个大模型。同时,RAG并非简单地将检索结果拼接进Prompt,而是通过一个“加工流水线”,对检索到的原始材料进行收集、打分、筛选、排序、重组、去重和精简,最终形成结构化、高信息密度的上下文,再注入给LLM。这种“重新编排”确保了模型接收到的信息更准确、更完整、更易于理解。

💡 **弥补LLM固有缺陷,提升回答质量** 传统大语言模型存在信息深度不足、易产生误差、生成依赖概率以及知识无法实时更新等问题。RAG通过引入外部知识库,能够为模型提供更深入、更准确、更实时的信息,从而克服这些局限。例如,模型可以访问最新的政策、市场动态或专业数据库,生成更具专业性和时效性的回答,有效减少“幻觉”和事实性错误。

🚀 **高效的知识库构建与检索流程** RAG的工作流程分为离线的数据准备和在线的检索生成两个阶段。离线阶段包括数据提取、分块(Chunking)、向量化(Embedding)以及将向量化后的数据存入支持向量检索的数据库。在线阶段则包括问题向量化、根据问题查询匹配数据、获取索引数据、将检索到的信息注入Prompt,最后由LLM生成答案。整个流程强调数据质量、检索效率与生成质量的协同优化。

🌐 **灵活的数据源与严谨的排查机制** RAG系统可以接入多种数据源,包括文档集合、结构化知识库以及网络资源,极大地扩展了模型的知识边界。在面对问答结果不理想时,RAG提供了一套“从后往前”的逆向排查思路:首先检查生成环节的Prompt拼接结果,再查看排序环节,最后是召回环节,层层定位问题所在。解决方案则涵盖业务策略调整、分层级知识库绑定以及工程链路和算法的优化调优。

RAG 的全拼是 Retrieval-Augmented Generation,中文常称“检索增强生成”。它是一种把外部知识检索步骤与大语言模型的生成步骤解耦再重新编排的技术范式。核心思想是:在模型回答用户问题之前,先从外部可控的知识库中寻找相关资料,把这些资料与用户原始问题一起构造成上下文,再让模型基于“所给材料”进行回答。这样不仅降低凭空臆造(幻觉)的概率,也让知识更新与溯源变得更加灵活与透明。

解耦再重新编排是什么意思?

第一,所谓解耦,根本指的是把“知识的获取(检索)”与“语言的组织输出(生成)”从一个不可分的、隐含在同一大模型参数内部的过程,拆分为两个各自可独立优化的模块。传统纯参数化大模型回答问题时,问题向量一路向前传播,最终在解码端直接生成答案;知识查找、事实关联和语言输出全部混杂在同一巨大的权重空间里,既不可观察也不可局部替换。RAG 将“找到相关材料”这件事外移:用独立的文档切分、向量嵌入、索引结构与相似度/重排算法来完成。这意味着如果知识更新、召回策略或排序算法需要改进,可以单独迭代,不必动模型主参数。

第二,被解开的耦合不仅是功能职责的拆分,更关键在于时间尺度与演化节奏的主动分离。现实里,知识层的变动频率远高于模型参数层:政策条款、价格库存、内部 SOP、故障告警、财务数据、版本 Changelog、合规红线、热点资讯,这些可能以小时、甚至分钟级在变化;而对大模型做一次参数级训练 / 微调 / 安全审计 通常是天或周级,且伴随计算、风险与合规成本。若二者耦合,你会被迫高频触发“大动作”(再训练、重新安全评估、重新回归测试)。不仅昂贵,还会人为放大新数据中的偶然噪声、扩大潜在回归面。

通过结构化地把知识“外置”到一个可迭代的检索层,你是在建立两个不同节奏的演化轨:快速轨(知识采集→清洗→切分→嵌入→写入 / 更新索引 / 失效淘汰)与慢速轨(模型核心推理与语言风格参数);二者之间以“上下文注入协议”(Prompt 模板 + 片段选择规则 + 引用格式)为接口,从而做到“高频改知识,低频改模型”。

第三,“重新编排”不是把检索到的段落粗暴拼接进 Prompt,而是为“问题 + 候选材料”走一条加工流水线(检索结果收集-相关性打分-筛选-排序与重组-去重与精简-格式化)。因为原料进入时往往是噪声多、表达不统一、覆盖可能残缺的混合体,输出时则应成为覆盖充分、要点高密、冲突已裁决且语义角色清晰的结构化上下文。

2. RAG 的优势

虽然大型语言模型功能强大,但它也存在一些固有的技术问题,比如容易产生“幻觉”(生成不真实或不准确的信息),以及可能犯事实性错误。

这些问题和模型的底层逻辑有关——LLM 是通过大量数据训练后,基于概率最高的选项生成答案。这种生成机制使得模型存在以下四个问题:

1,信息缺乏深度:公开数据库中的内容往往缺乏真正有价值的深度信息,大语言模型从中学到的知识通常比较浅显,因此生成的答案往往只能停留在表面,缺乏深入的分析和专业性。

2,信息存在误差:如果模型在训练过程中接触到不准确或有偏差的数据,这些错误信息会直接影响模型生成答案的质量,导致输出结果出现偏差甚至误导。

3,生成基于概率:大语言模型的答案是基于概率分布生成的。即使是“1加1等于几”这样看似简单的问题,模型也是通过训练时发现“1+1后面出现2”的概率最高才得出答案。因此,对于像“1+1=2”这样的基础事实,模型通常不会出错,但对于复杂或开放性问题,模型无法保证答案始终正确。

4,无法实时更新:大语言模型无法实时更新知识库。以ChatGPT 3.5为例,它的训练数据仅覆盖到2021年9月之前的信息,因此对于之后发生的事件或最新的知识,模型无法提供准确的答案。

RAG 的核心思路是通过从外部知识库中检索与用户查询相关的信息,将这些信息作为参考输入到LLM中,帮助模型生成更有依据、更贴近实际的回答。

这种技术的最大价值在于扩展了LLM的知识范围。相比于单纯依赖模型内部的预训练知识,RAG让模型能够动态访问外部数据,包括专属知识库实时更新的信息。这意味着,模型不仅可以回答基于通用知识的问题,还能处理那些需要专业领域知识或最新动态的查询。比如,当面对一个涉及最新政策、市场动态或行业趋势的问题时,RAG可以检索到相关的最新资料并辅助生成更精准的回答。

优势:RAG 能确保回答的准确性和时效性。它可以让模型的输出内容始终与当前情况保持同步。这种能力在需要高频更新的场景中尤为重要,例如新闻摘要、金融分析或技术支持。

总的来说,RAG不仅提升了LLM的内容质量,还解决了模型知识固化的问题,为实际应用场景提供了更灵活、更可靠的解决方案。在实际业务中,合理利用这项技术,可以显著提高用户体验和信息服务的质量。

3. RAG 的工作流程

RAG与传统语言模型的最大区别就在于, RAG通过访问外部知识增强上下文意识,提供更准确详实的响应,而传统语言模型(GPT-4)则无法从外部源检索信息。RAG 的完整流程可以分为两个主要阶段:数据准备阶段和检索生成阶段。

1,数据准备阶段(离线):

(A)数据提取–> (B)分块(Chunking)–> (C)向量化(embedding)–> (D)数据入库

2,检索生成阶段(在线):

(1)问题向量化–> (2)根据问题查询匹配数据–> (3)获取索引数据 --> (4)将数据注入Prompt–> (5)LLM生成答案

接下来展开具体的技术细节和操作步骤:

一、数据准备阶段(离线处理)

这一阶段的核心任务是构建一个高效的知识库,以便后续能够快速检索相关信息。

1. 数据提取

首先,需要从各种数据源中获取原始内容。数据源可以是文档、网页、数据库或其他结构化、非结构化的数据。提取过程可能需要进行格式转换、去重以及基础清理,确保内容质量和一致性。

2. 分块(Chunking)

提取后的数据通常较为庞大且不均匀,为了提高检索效率,需将数据划分为小块。分块的粒度需要根据实际场景设计,既要保证每块数据足够完整提供上下文,又不能过大导致向量表示不精准。

3. 向量化(Embedding)

每个分块的数据通过预训练的嵌入模型(例如 OpenAI 的 Embedding API 或其他语义向量模型)转换为高维向量。这些向量能够捕捉文本的语义信息,为后续的相似度匹配提供基础。

4. 数据入库

向量化后的数据需要存储到一个支持向量检索的数据库中,例如 Pinecone、Weaviate 或 Milvus。这类数据库支持高效的向量查询,同时可以存储原始数据块作为检索结果的一部分。

二、检索生成阶段(在线处理)

这一阶段是 RAG 的核心应用场景,通过实时检索和生成回答用户的问题。

5. 问题向量化

用户提出问题后,首先将问题通过嵌入模型转化为语义向量。这个过程与数据分块的向量化类似,目的是将问题转化为可用于向量匹配的形式。

6. 查询匹配

将问题的向量输入到向量数据库中,利用相似度算法(例如余弦相似度或欧几里得距离)检索出与问题相关性最高的数据块。这一步决定了检索结果的质量,因此选择合适的向量搜索算法至关重要。

7. 获取索引数据

检索到的数据块通常包含原始内容及其相关元信息(如来源、时间戳等)。这些内容会被进一步处理,用于生成最终答案。

8. 注入 Prompt

将检索到的数据块与用户问题整合,形成一个完整的 Prompt 输入给大语言模型(LLM)。Prompt 的设计非常关键,需要确保数据块能够自然融入上下文,同时避免信息冗余或冲突。

9. LLM生成答案

最后,大语言模型根据 Prompt 生成回答。这一过程结合了模型本身的语言理解能力与检索到的信息,能够提供准确且具有上下文感的答案。

★ 4. RAG的输入与输出

在RAG系统中,可以使用各种类型的数据源,包括:

(1) 文档集合: RAG系统通常使用文本文档的集合,如书籍、文章和网站,作为数据源,这些集合为生成模型提供了丰富的信息来源,可以检索和利用。

(2) 知识库: RAG系统也可以使用包含事实信息的结构化数据库,如维基百科或百科全书,作为检索特定和事实信息的数据源。

(3) 网络资源: RAG系统也可以通过访问在线数据库、网站或搜索引擎结果从网络中检索信息,以收集生成响应的相关数据。

RAG中容易产出存在偏见或错误的信息。设计者可以配置检索组件,在从文档集合或知识库检索信息时优先考虑可信和权威的来源。同时,他们可以训练生成模型在生成响应之前对检索到的信息进行交叉引用和验证,从而减少偏见或不准确信息的传播。通过优先使用权威数据和交叉引用的机制,提供更可靠和准确的响应。

面对知识问答的结果未达到预期或出现明显问题,排查思路和解决方案:

(1)问题排查的思路:先观察现象再进行定位,最后排查出原因。

(2)知识库的整个问答体系链路较长,其中包含几个主要环节,首先是解析,其次是改写,也就是对输入进行解析后进行改写;接着是召回、排序,最后是生成。所以在每个环节都需要进行一定的定位, 这是一个正向的链路流程 。

(3)排查问题的时候需要“从后往前”进行:按照以下逆向步骤一层一层往前排查,确定是哪个环节出了问题,然后进行解决。

4.1. 排查步骤:逆向排查

a)先查看生成环节的问题排查:先看Prompt,检查其拼接结果中是否召回了正确答案,答案是否有缺失。如果答案没有缺失但答非所问,那就说明是大模型本身在生成环节出现问题。

b)如果在Prompt拼接的召回片段中没有答案,那就说明需要再往前看排序环节是否有问题,答案是否没有排在靠前位置。

c)如果排序正常,那就继续往前查看是否有召回,也许根本就没有召回。

这样一层一层往前排查,确定是哪个环节出了问题,然后进行解决。

4.2. 解决方案

(1)业务策略上制定很多方案:比如进行文档的增删改查,筛选出一些优质的对话示例让大模型学习,区分不同的Agent来处理不同的业务,使单个Agent能力更强、更聚焦

(2)在业务上进行分层,区分不同渠道并绑定不同知识库,使知识更纯粹而不会相互缠绕等。

(3)工程链路优化:如文档解析、检索召回优化、prompt优化

(4)算法调优:改写策略、必要时微调

5. 总结

RAG 的流程通过离线构建知识库与在线实时检索生成答案相结合,实现了知识增强型问答系统。离线阶段注重数据质量和结构化处理,而在线阶段则强调检索效率与生成质量,两者缺一不可。在实际应用中,如何平衡检索速度、嵌入模型性能和数据库容量,是技术落地时需要重点考虑的问题。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

检索增强生成 RAG 大语言模型 AI 知识增强
相关文章