简介:RAG(检索增强生成)通过“先检索、后生成”的方式,将外部知识与大型语言模型结合,是解决模型知识滞后、幻觉问题与数据安全挑战的主流方案。本文系统讲解RAG的定义、核心组成与工作原理,重点分析哪些业务场景值得自行开发RAG系统,帮助开发者和选型人员建立完整的认知框架与落地思路。
检索增强生成(Retrieval-Augmented Generation,简称 RAG)是一种将信息检索技术与大语言模型(LLM)提示能力相结合的应用架构。它的核心逻辑可以概括为一句话:在大模型回答问题之前,先从外部知识库中检索出与问题相关的内容,再将检索结果与用户问题一起组织成提示词,交由大模型生成最终回答。用公式化的方式表达,就是:RAG = 检索技术 + LLM 提示。
可以从三个视角进一步理解这个定义:
需要说明的是,RAG 并非伴随大模型才出现的全新技术。早在深度学习尚未与生成式模型结合的年代,基于向量嵌入的语义检索技术就已成熟,可在高维空间中度量文本相似性;近年来随着大模型的普及,向量数据库这一品类迅速发展,各类应用开发框架也日趋完善,RAG 才逐步成为大模型应用最基础的打开方式之一。
当企业尝试将通用大模型直接用于实际业务时,往往会遇到三类典型问题,而 RAG 恰好针对这三类问题提供了有效解法。
1. 知识的局限性。 大模型的知识完全来源于训练数据,而主流通用大模型的训练语料基本构建于网络公开数据之上。这意味着两类知识是模型天然缺失的:一是实时性知识,例如最新的政策、行情、产品版本信息;二是非公开的私域知识,例如企业内部制度、产品手册、工单记录、合同文档等。即使模型在通用任务上表现再好,一旦涉及这些“训练截止日期之后”或“从未见过”的信息,回答质量就会明显下降。RAG 通过外挂检索,让模型在回答时动态获取最新、最相关的资料,从机制上缓解了知识时效性问题。
2. 幻觉问题。 从底层原理看,深度学习模型的输出本质是一系列基于概率的数值运算,大模型也不例外。当模型不具备某一领域的知识或面对不擅长的任务时,它往往不会“承认不知道”,而是倾向于按照语言习惯生成看似合理、实则错误的内容,也就是常说的“一本正经地胡说八道”。这在医疗、法律、金融等高准确性要求场景中是不可接受的风险。RAG 的价值在于为生成过程提供了明确的事实依据:提示词中注入了检索到的真实资料,并可以要求模型“仅依据给定资料回答,无法确定时明确说明”,从而显著约束幻觉的产生,同时让答案可溯源、可核查。
3. 数据安全性。 对企业而言,数据安全至关重要,没有企业愿意为获得更好的问答效果,将核心私域数据上传到第三方平台参与训练或推理。这也导致完全依赖通用模型自身能力的方案,不得不在“效果”与“安全”之间做取舍。RAG 提供了一条兼顾两者的路径:模型推理可以调用百度智能云等主流云平台提供的模型服务,也可以采用私有化部署;而私域知识始终留在企业自有的存储与检索链路中,按需注入提示词,数据不出域即可获得贴合业务的高质量回答。
一个完整的 RAG 系统通常由离线索引与在线检索生成两部分构成。
(一)离线索引阶段,解决“知识如何变成可检索的内容”的问题,一般包括四步:
(二)在线检索生成阶段,用户提问后系统按以下流程工作:先做查询理解与改写(补全省略指代、扩展同义词、拆解复杂问题);然后进行语义检索,实践中常结合关键词检索形成混合检索,并引入重排序模型对候选结果精排;接着将检索到的片段与用户问题填入提示词模板,附加“仅依据资料作答、注明引用来源”等约束;最后由大模型生成答案。
用伪代码示意这一过程:
question = user_input()# 1. 语义检索:在向量库中查找与问题最相关的知识片段contexts = vector_store.search(query = embed(question),top_k = 5,filter = {"acl": user_permission} # 按用户权限过滤,保证数据隔离)# 2. 组装提示词模板prompt = template.format(context = "\n".join(contexts),question = question,instruction = "仅依据给定资料回答;资料不足时明确说明,不要编造")# 3. 调用大模型生成回答answer = llm.generate(prompt)
可以看出,RAG 的技术关键并不在“生成”一端——生成由大模型完成——而主要集中在“检索”一端:检索得准,回答才有可靠依据;检索有偏差,再强的模型也会被带偏。
借助主流应用开发框架,数小时内搭建一个 RAG 原型并不困难,但“能用”与“好用”之间隔着大量工程细节。以下几类场景,通常值得投入力量自行开发 RAG 系统。
反过来,如果需求只是快速验证一个通用问答原型、知识规模小且不敏感,直接用现成框架或云上托管服务组装即可,不必一开始就自研。务实的路径是:先用通用方案验证业务价值,再针对瓶颈环节逐步替换。目前百度智能云等主流云平台普遍提供模型服务、向量检索、应用编排等通用能力组件,团队可以按需组合,把精力集中在业务差异化环节上。
回到定义本身:RAG 是“检索技术 + LLM 提示”的组合架构,它在模型回答之前先从外部知识库检索相关内容,再让大模型基于这些内容作答。其核心价值在于:以较低的成本、可控的数据风险,让通用大模型具备承载私域知识、抑制幻觉、持续更新的能力。但它并非万能方案——检索不到的内容,模型依然无法可靠回答;检索质量的持续优化,才是 RAG 系统真正的工程重心。当业务对数据安全、领域深度、流程集成或效果评估提出更高要求时,自行开发 RAG 就成为必要且值得的投入;而在验证阶段,善用成熟框架与云上通用能力,同样能大幅降低起步门槛。