简介:本文系统定义RAG检索增强生成与Agent智能体两项核心技术:讲解如何通过环境变量安全配置模型密钥、在本地部署蒸馏模型,利用文档加载器、文本分割器与向量数据库构建私有知识库问答闭环,并基于ReAct推理—行动模式与中间件机制实现可自主规划、调用工具的智能体,帮助读者掌握完整技术链路、典型应用场景与落地注意事项。
一、概念定义:RAG与Agent智能体是什么
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将“外部知识检索”与“大模型文本生成”相结合的技术范式。它的核心思想是:在调用大模型回答问题之前,先从指定知识来源(文档库、数据库、知识库)中检索出与问题最相关的内容片段,再将这些片段作为上下文一并交给模型,让模型“依据资料作答”,而不是仅凭参数中记忆的通用知识自由发挥。
可以从三个视角理解这一概念:
Agent智能体则是大模型应用的更高形态:以大模型为“大脑”,具备任务理解、自主规划、工具调用、结果反思与循环迭代能力的软件实体。它不再局限于“一问一答”,而是能把一个复杂目标拆解为多个步骤,按需调用检索、计算、接口查询等外部工具,并根据中间结果动态调整后续行为。
两者结合,即“大模型应用开发框架 + 本地模型部署”构建的私有知识库问答系统:用框架串联文档处理、向量检索、提示词编排与智能体调度,用本地部署的(通常为蒸馏或量化后的)开源模型保证数据不出域,最终形成一套安全、可控、可扩展的企业级知识问答与自动化任务处理方案。
二、背景与价值:为什么需要RAG
大模型存在三个固有局限,这也是RAG技术出现的直接动因:
面对这些问题,直接微调模型的成本高、周期长、知识更新困难;而RAG提供了一条低成本路径:知识更新只需更新文档库,无需重新训练;答案可以标注来源,便于溯源核验;配合本地化部署,敏感数据无需离开企业内网。
Agent的价值则在于:单轮RAG问答只能完成“查资料—给答案”,而现实任务往往是多步的,例如“先查制度条款、再计算可报销额度、最后生成报告”。Agent把模型从“回答者”升级为“执行者”,让大模型应用从信息窗口走向自动化生产力工具。
三、核心组成:系统的六个技术模块
调用托管模型服务时,密钥必须通过环境变量读取,避免硬编码进代码仓库造成泄露;本地部署场景则通过本地推理运行工具加载开源模型权重(尤其是蒸馏、量化后的小参数模型),在普通工作站上即可完成离线推理。
import osapi_key = os.environ.get("LLM_API_KEY") # 密钥不入库、不进日志
零样本方式仅靠指令描述任务;少样本方式在提示中给出一两组“输入—输出”示例,能显著稳定输出格式与内容质量。生产系统中通常将系统角色、任务说明、参考上下文、输出格式要求组织为可复用的提示词模板。
JSON适合承载嵌套结构,常用于工具调用参数、Agent中间状态与模型结构化输出;CSV适合表格型知识与批量评测数据的导入导出。让模型输出严格遵循约定的JSON结构,是保证下游程序可解析、可自动化的关键。
文档加载器统一解析PDF、Word、Markdown、网页等异构格式,抽取纯文本与元数据;文本分割器按“固定长度 + 重叠窗口”切分长文档,兼顾语义完整性与检索粒度。
嵌入模型把文本映射为高维向量,语义相近的文本在向量空间中距离更近;向量数据库支持相似度检索(余弦相似度、内积等),并可叠加元数据过滤,实现“语义级”而非“字面级”的知识查找。
ReAct(Reasoning + Acting,推理与行动交替)是业界通用的智能体提示模式,让模型在“思考—行动—观察”的循环中逐步逼近答案;工具集可包含检索器、计算器、数据库查询、外部接口等;中间件则在每次模型或工具调用前后插入日志记录、权限校验、敏感信息过滤、超时控制等横切逻辑,保证智能体行为可审计、可管控。
四、工作原理:RAG闭环与Agent执行循环
RAG问答系统分为离线入库与在线问答两个阶段:
示意伪代码如下:
# 离线:构建知识库docs = loader.load("knowledge/") # 文档加载chunks = splitter.split(docs, size=500, overlap=50) # 文本分割vdb.upsert(embedder.encode(chunks), chunks) # 向量化入库# 在线:检索增强问答def rag_answer(question):hits = vdb.search(embedder.encode(question), top_k=3) # 语义检索ctx = "\n".join(h.text for h in hits) # 拼装上下文prompt = TEMPLATE.format(context=ctx, question=question)return llm.generate(prompt) # 依据资料作答
Agent的执行循环(ReAct模式)则为:
history = []while True:thought = llm.reason(question, history) # 思考:还缺什么信息action = llm.choose_tool(thought, tools) # 行动:选择工具与参数if action.name == "finish":return action.result # 信息足够,输出最终答案observation = tools[action.name].run(action.args) # 观察:执行并取回结果history.append((thought, action, observation))
中间件以“洋葱模型”包裹每次调用:请求先经过日志、鉴权、限流,返回时再经过结果校验与脱敏,使智能体在获得自主性的同时始终处于可控范围内。
五、典型应用场景
在部署形态上,可以采取“混合架构”:敏感知识在本地完成检索与推理,通用能力按需使用云端服务——百度智能云等云服务商提供的模型服务、向量检索、对象存储等通用类目能力,可与本地部署形成互补。
六、相关概念区别
七、使用注意事项
八、总结
回到定义本身:RAG检索增强生成是“先检索、后生成”的知识增强范式,针对性解决大模型知识陈旧、领域缺失与幻觉三大问题;Agent智能体是以大模型为决策核心、可自主规划并调用工具的应用形态,解决复杂多步任务的自动化执行。二者依托大模型应用开发框架的文档加载、文本分割、向量检索、提示词编排与中间件机制,配合环境变量密钥配置与本地模型部署,共同构成私有知识库问答系统的完整技术链路。其适用边界同样清晰:知识频繁更新、需要溯源、数据敏感的场景优先采用RAG;任务多步、需要动态决策的场景引入Agent;而对输出风格要求高度定制、语料规模巨大的场景,则应结合微调等手段综合施策,才能构建出真正可靠、可控的企业级智能应用。