简介:本文系统讲解大模型RAG(检索增强生成)的定义、核心组成与工作原理,剖析通用大模型在知识时效、幻觉、数据安全上的三重局限,并梳理查询改写、混合检索、重排序、自反思迭代等高级优化方法,帮助开发者与选型人员快速建立对RAG的完整认知,明确其与微调、长上下文的区别及落地要点。
RAG(Retrieval Augmented Generation,检索增强生成)是一种将“外部知识检索”与“大语言模型(LLM)生成能力”相结合的技术范式。其核心思想是:当用户向大模型提出问题时,系统并不直接让模型凭“记忆”作答,而是先从预先构建的知识库中检索出与问题最相关的内容,再将这些内容与原始问题一起组装进提示词模板,交给大模型生成最终回答。
一句话概括:RAG = 检索技术 + LLM 提示工程。
可以从三个视角进一步理解这一定义:
每当把大模型应用于实际业务,人们很快会发现:通用的基础大模型基本无法直接满足业务需求,原因集中在三个方面。
1. 知识的局限性。 大模型自身的知识完全来源于训练数据,而主流通用大模型的训练语料基本构建于公开网络数据之上。这意味着:其一,训练截止时间之后发生的事情模型一无所知;其二,企业内部的制度文档、产品手册、客户工单等非公开数据从未进入过训练集;其三,更新频繁的实时信息(如价格、政策、版本状态)无法通过一次性训练固化。直接拿通用模型应对垂直业务,答非所问几乎不可避免。
2. 幻觉问题。 深度学习模型的底层原理是数学概率,模型输出实质上是基于上下文逐词进行的数值运算与采样,大模型也不例外。当模型不具备某方面知识、或任务超出其能力边界时,它并不会“承认不知道”,而是倾向于按语言习惯续写出看似通顺、实则虚构的内容,即常说的“一本正经地胡说八道”。在企业问答、合规咨询等对准确性敏感的场景,幻觉是必须被系统性抑制的问题。
3. 数据安全性。 对企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险。若为了让模型掌握私域知识而将数据上传至第三方平台进行训练或推理,就意味着数据出域,带来泄露与合规风险。这导致完全依赖通用模型自身能力的方案,不得不在“效果”与“安全”之间做取舍。
RAG恰好提供了平衡点:私域数据保留在自有知识库中,模型只接收“当前问题 + 检索到的片段”,数据不必用于训练,知识却能按需注入。这使RAG成为解决上述三重问题的有效方案,也是它成为当下最热门LLM应用范式的原因。
标准RAG(业界常称基础RAG)由离线与在线两个阶段构成,包含索引、检索、生成三个核心环节。
1. 离线索引阶段。 首先进行数据准备:收集PDF、网页、数据库记录、内部文档等多源数据,完成清洗与格式统一;随后进行文本分块,将长文档切分为大小适中、语义完整的片段——分块是影响检索质量的关键步骤,常见策略包括固定长度加重叠切分、按段落或标题层级切分等;最后用嵌入模型将每个片段编码为高维向量,连同原文与元数据(来源、时间、目录等)一并写入向量数据库。
从演进历史看,早在2019年前后,基于嵌入的向量检索技术就已出现并广泛应用于搜索领域;近年在大模型浪潮推动下,高性能向量检索快速发展,新一代向量数据库在索引能力之外补充了原文存储、标量过滤、混合查询等工程能力。同时,社区流行的开源编排框架将上述环节封装为标准化组件,开发者无需从零搭建管道即可组装出RAG应用。
示意性伪代码如下:
# 阶段一:离线索引(伪代码)docs = load_documents("知识库目录")chunks = text_split(docs, chunk_size=500, overlap=50)vectors = embedding_model.encode(chunks)vector_db.upsert(vectors, texts=chunks, metadata=metas)
2. 在线检索与生成阶段。 用户提问后,系统先用与索引阶段相同的嵌入模型将问题向量化,再在向量库中基于余弦相似度等度量召回最相关的Top-K片段;接着将片段与问题填入提示词模板,交由大模型生成答案;成熟的应用还会要求模型标注引用来源,便于校验。
# 阶段二:检索增强问答(伪代码)q_vec = embedding_model.encode(question)hits = vector_db.search(q_vec, top_k=5)context = "\n".join(hits)prompt = f"请仅依据以下资料回答问题,并注明出处:\n资料:{context}\n问题:{question}"answer = llm.generate(prompt)
整个过程中,语义搜索负责“找到对的内容”,提示工程负责“让模型用对的内容作答”,二者共同决定最终答案质量。
基础RAG在真实业务中常暴露检索不准、噪声干扰、复杂问题多跳推理困难等短板。围绕“检索前—检索中—检索后—生成”四个环节,业界发展出一系列高级优化方法。
1. 检索前优化
2. 检索中优化
3. 检索后优化
4. 生成与迭代优化
当前主流云服务商普遍提供向量检索、文档解析、知识库服务等通用类目能力,例如百度智能云等平台将其作为大模型应用的配套基础设施。企业可以基于这些通用能力自建,也可以使用开源编排框架组合搭建,按团队工程能力与数据合规要求灵活选型。
回到定义本身:RAG(检索增强生成)是一种“以检索补知识、以生成做表达”的技术范式——通过外挂知识库为大模型提供私域与实时知识,通过提示工程约束模型基于证据作答。它的核心价值在于:在不训练模型、不让数据出域的前提下,显著缓解知识局限与幻觉问题,并让每一次回答可溯源。其适用边界同样清晰:当业务依赖高频更新的私有知识、要求答案可验证时,RAG是首选方案;当目标是改变模型的交互风格或专有任务能力时,则应考虑微调,或采用“微调 + RAG”的组合。掌握“索引—检索—生成”的基本链路,再按需引入查询改写、混合检索、重排序、自反思迭代等高级方法,就是从理解RAG到落地RAG的完整路径。