简介:本文系统解析检索增强生成(RAG)的技术定义与核心机制,说明如何通过外部知识检索约束大模型输出,避免模型在缺乏依据时编造答案。读者将掌握RAG的关键组成、工作流程、适用场景与选型注意事项,理解其作为知识库问答主流方案的价值与边界。
检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种将信息检索能力与大语言模型生成能力相结合的技术架构。它的核心思想是:在让大语言模型回答问题之前,先从外部知识库中检索出与问题相关的文档片段,再将这些片段作为上下文一并提交给模型,由模型基于这些确凿的材料组织答案。
从技术视角看,RAG是一种推理阶段的上下文注入机制,它不改变模型本身的参数,而是通过动态拼接提示词来约束模型的输出依据。从业务视角看,RAG是让通用大模型快速具备“企业专属知识”的低成本路径——无需重新训练模型,只需把内部文档整理为可检索的知识库即可。从使用视角看,RAG是解决大模型“幻觉”问题的工程手段之一:当模型被要求“只依据给定材料作答”时,它在缺乏材料支撑时更容易表达“无法回答”,而不是凭空编造。
大语言模型的能力来自训练语料中的统计规律。这带来两个固有限制:
其一,知识截止与时效性问题。 模型的参数化知识停留在训练数据的时间点,无法感知之后发生的事件、新发布的制度或内部文档的最新版本。
其二,幻觉问题。 当用户询问模型训练中未覆盖的细分领域、私有资料或高度具体的事实时,模型倾向于生成“看起来合理”但实际错误的答案。这种现象并非模型故意欺骗,而是其生成机制在缺乏依据时的自然表现。
传统解决思路有两种:一是微调,即用专有数据继续训练模型;二是提示词工程,即把资料直接塞进对话上下文中。微调成本高、迭代慢,且难以应对知识频繁变更;提示词工程则受限于上下文窗口长度,无法容纳海量文档。
RAG恰好填补了这两者之间的空白:它以检索为手段,从海量文档中动态选取最相关的少量片段,既突破了上下文长度限制,又无需改动模型参数,同时因为答案建立在检索到的真实文本上,显著降低了幻觉发生的概率。
一个典型的RAG系统由以下部分构成:
文档处理与切分模块:将原始文档(如制度文件、产品手册、技术文档)解析为纯文本,并按语义或固定长度切分为若干片段。切分粒度直接影响检索效果,过大会引入噪声,过小会丢失上下文。
向量化模块(嵌入模型):使用嵌入模型将每个文本片段映射为高维向量,使语义相似的文本在向量空间中距离更近。这是实现“按语义而非关键词检索”的基础。
向量存储与索引模块:将文本向量及其对应的原文存入向量数据库,并建立索引以支持快速相似度检索。常见能力包括近似最近邻搜索、元数据过滤等。
检索模块:接收用户问题,将问题同样向量化,在向量库中查找最相似的若干片段。实际系统常结合关键词检索与向量检索的混合策略,以提升召回率。
生成模块:将检索到的片段与用户问题组装为提示词,提交给大语言模型,并要求模型“仅依据以下材料作答”。这一步是抑制幻觉的关键约束点。
编排与管控模块:负责整个流程的调度、提示词模板管理、引用溯源、超时与降级处理等。
RAG的运行可以分为离线与在线两个阶段。
离线阶段(知识库构建):
在线阶段(问答推理):
示意性伪代码如下:
def rag_query(question, vector_store, llm):q_vec = embed(question)passages = vector_store.search(q_vec, top_k=5)context = "\n\n".join(passages)prompt = f"仅依据以下材料回答问题,材料中没有的信息请回答'无法确定'。\n\n材料:\n{context}\n\n问题:{question}"return llm.generate(prompt)
这个流程中,抑制幻觉的关键在于提示词中的约束语句,以及检索片段本身是否覆盖了问题的答案。如果检索不到相关内容,模型应被引导为拒绝作答,而不是自由发挥。
RAG适用于以下场景:
RAG与微调:微调改变模型参数,将知识“内化”到模型中,适合风格与能力对齐;RAG不改变模型,通过外部检索注入知识,适合知识频繁变更且要求可溯源的场景。两者可以结合使用。
RAG与提示词工程:提示词工程是把内容直接写进提示词,受上下文长度限制;RAG是先检索再注入,可扩展至海量文档。
RAG与语义搜索:语义搜索只返回相关文档片段;RAG在检索之后还增加了生成环节,输出的是自然语言答案。
检索增强生成(RAG)是一种通过外部知识检索来约束大语言模型输出的技术架构。它不改变模型参数,而是在推理时动态注入与问题相关的文档片段,使模型基于真实材料组织答案,从而显著降低幻觉发生的概率。其核心价值在于:低成本接入专属知识、支持知识快速更新、答案可溯源。理解RAG的定义、组成、流程与边界,有助于在构建大模型知识库问答系统时做出合理的架构选择,并在切分、检索、提示词约束等环节采取针对性措施,真正实现“有据可依”的问答体验。