RAG + Agent:知识库增强的智能体

📅 2026/7/5 12:42:33
RAG + Agent:知识库增强的智能体
RAG Agent知识库增强的智能体纯大模型知识有限且会过时加上 RAG检索增强生成的知识库Agent 才能回答企业内部的专业问题。这篇讲 RAG 和 Agent 怎么结合检索工具怎么设计、什么时候检索、怎么提升检索质量、Agent RAG 的典型架构。大家好我是黒漂技术佬。Agent 光靠大模型本身的知识不够用特别是企业场景产品文档、内部手册、客户案例、历史工单……这些模型训练数据里没有。怎么办接上 RAG。RAG检索增强生成就是先从知识库搜相关内容再让模型根据搜到的内容回答。Agent RAG就是让智能体拥有企业专属的知识库。这篇讲 RAG 和 Agent 怎么结合检索工具设计、检索策略、质量优化、典型架构。一、为什么 Agent 需要 RAG大模型的知识局限知识截止训练数据有截止日期之后的事不知道没有私有知识企业内部文档、产品信息、客户数据都没有幻觉问题不知道的容易瞎编知识更新难重新训练成本高跟不上变化RAG 怎么解决用户提问 → 检索知识库 → 拿到相关内容 → 拼到prompt里 → 模型根据资料回答模型照着资料回答就不容易瞎编也能回答私有知识的问题。Agent RAG 有专业知识的智能体普通 Agent 只会调用通用工具加上 RAG 之后能回答公司内部的专业问题回答有依据可溯源知识库更新方便不用重新训练模型二、RAG 基础回顾RAG 工作流程索引阶段离线文档 → 解析 → 分块 → 向量化 → 存入向量数据库查询阶段在线问题 → 向量化 → 向量检索 → 拿到相关片段 → 拼进Prompt → 模型生成回答核心组件组件作用常见方案文档解析读取 PDF/Word/网页提取文本PyPDF、Unstructured、LangChain分块Chunking把长文档切成合适大小的片段固定大小、语义分块Embedding 模型把文本转成向量OpenAI、BGE、M3E、Qwen-Embedding向量数据库存储和检索向量Chroma、Pinecone、Milvus、Qdrant大模型根据检索结果生成回答GPT、Claude、Qwen、DeepSeek三、RAG 作为 Agent 的工具最简单的方式把检索做成一个工具{name:search_knowledge_base,description:从公司知识库中搜索产品文档、FAQ、操作手册等内部资料。 回答产品相关问题、内部流程问题时使用。,parameters:{type:object,properties:{query:{type:string,description:搜索关键词或问题}},required:[query]}}Agent 判断需要查知识库的时候调用这个工具拿到结果继续回答。工具实现defsearch_knowledge_base(query:str)-str:# 1. 问题向量化query_vecembedding_model.encode(query)# 2. 向量检索resultsvector_db.search(query_vec,top_k5)# 3. 整理成文本context\n\n.join([f[文档{i1}]{r[content]}fori,rinenumerate(results)])returncontext跟普通搜索工具的区别普通搜索Google/Bing搜互联网公开信息知识库检索搜企业内部私有资料Agent 可以同时配两个工具内部问题查知识库外部信息搜互联网。四、什么时候检索策略 1每次都检索Always-Retrieve不管什么问题先搜一下再说。优点简单不会漏缺点简单问题也搜浪费时间和钱可能反而干扰策略 2模型自己判断Tool-Call 方式把检索做成工具模型自己判断要不要调用。优点灵活该搜才搜缺点模型可能判断错该搜的不搜瞎回答策略 3分类判断先用一个分类模型/规则判断问题类型寒暄闲聊 → 直接回答常识问题 → 直接回答产品/内部问题 → 检索知识库实时信息 → 搜互联网优点准确效率高缺点多一步要维护分类逻辑策略 4先回答答不上再检索模型先尝试回答回答不了或者不确定再去搜。优点简单问题快缺点慢的问题更慢而且模型可能「以为自己知道」其实答错了推荐企业知识库场景推荐策略2 系统提示词强调做成工具模型自己判断系统提示词里明确「涉及产品、内部流程、客户案例等问题必须先检索知识库再回答禁止仅凭训练知识回答」再加上兜底校验回答里引用的内容必须来自检索结果。五、提升 RAG 质量检索质量直接决定 Agent 回答的准确性。1. 混合检索Hybrid Search向量检索 关键词检索BM25结合召回率更高。向量检索语义相关能搜到同义词关键词检索精确匹配专有名词、编号更准两个结果融合重排序比单用一种好很多。2. 重排序Rerank先粗召回一批比如 20 条再用 reranker 模型精排取最相关的前几条。常用 rerankerBGE-Reranker、Cohere Rerank、ColBERT。加了 rerank 之后相关性提升很明显。3. 查询改写Query Rewriting用户的问题不一定适合检索让模型改写一下再搜原问题这玩意儿咋用 改写后产品使用方法、操作指南、入门教程或者扩展成多个查询多路召回。4. 分块优化块大小一般 200-500 个 token太小没上下文太大噪音多重叠相邻块重叠一部分防止截断关键信息语义分块按段落、标题分比固定大小好父子块大块存原文小块用来检索搜到了返回大块5. 元数据过滤给文档加元数据部门、产品、时间、类型检索时先过滤只搜某个产品的文档只搜最近更新的只搜 FAQ 类型减少无关内容提高精度。6. 多轮对话检索优化多轮对话时不能只拿当前一句去搜要结合上下文用户怎么开通 前面聊的是企业版套餐 检索查询应该是企业版套餐 开通方法用模型把多轮上下文整合成一个完整的检索问题。六、Agent RAG 的典型架构架构 1单工具检索最简单用户问题 → Agent → 判断是否需要检索 ↓ 需要 调用检索工具 → 知识库 → 返回结果 ↓ 生成回答适合简单的知识库问答90% 的场景够用。架构 2检索 反思Self-RAG检索 → 生成回答 → 自我检查 → 答得不好就再检索一次模型自己判断检索到的内容够不够、回答准不准不够就再搜。质量更高但多几轮调用。架构 3专门的检索 Agent一个专门负责检索的 Agent它自己决定搜什么关键词搜几次怎么筛选和整理结果然后把整理好的资料给主 Agent 用。适合知识库比较复杂、检索策略多的场景。架构 4RAG 工具 多 Agent用户问题 ↓ 调度Agent → 判断问题类型 ├── 产品问题 → 知识库检索Agent ├── 技术问题 → 技术文档 代码库检索 ├── 订单问题 → 数据库查询工具 └── 闲聊 → 直接回答 ↓ 汇总生成最终回答企业级复杂场景多种数据源、多种工具。七、回答溯源和可信度引用来源回答里标注信息来自哪篇文档用户可以点进去看原文根据产品手册[1]开通流程如下... [1] 《企业版开通指南 V2.3》好处可验证用户可以查证增加信任减少幻觉模型知道要引用不容易瞎编可追责答错了可以定位是哪份文档的问题无答案检测检索不到相关内容的时候要回答「我不知道」而不是瞎编系统提示词 只能根据检索到的资料回答。如果资料里没有答案 就说抱歉知识库中没有相关信息不要编造。八、常见坑坑 1检索到的内容不相关分块不好、Embedding 不行、查询不对都可能导致搜出来的没用。解决优化分块、换更好的 Embedding、加 rerank、查询改写。坑 2模型不引用检索内容自己瞎编检索到了但模型还是照着训练知识答特别是模型「以为自己知道」的时候。解决系统提示词强调「只能根据检索资料回答」用小一点的模型知识少的反而更愿意照资料答回答后校验检查答案有没有来源支撑坑 3上下文塞太多模型迷失搜了十几条全塞进去太长了模型抓不住重点。解决控制 top_krerank 之后只留最相关的 3-5 条长内容先摘要。坑 4知识库更新不及时文档更新了但向量库里还是旧版本。解决建立更新机制文档变更自动重新索引。坑 5多轮对话检索跑偏只拿当前一句去搜没结合上下文搜出来不相关。解决先做上下文补全把多轮对话整合成完整查询再搜。九、本篇小结Agent RAG让智能体拥有企业私有知识库回答专业问题减少幻觉RAG 流程文档分块向量化存库 → 查询时检索 → 模型根据资料回答最简单的方式把知识库检索做成一个 Function Call 工具Agent 按需调用检索时机模型自己判断、强制检索、分类判断各有优劣质量优化混合检索、rerank 重排序、查询改写、优化分块、元数据过滤典型架构单工具简单场景、Self-RAG带反思、专门检索 Agent、多 Agent 调度回答要带引用来源可验证减少幻觉常见问题检索不相关、模型瞎编、上下文太长、知识库更新不及时下一篇讲Agent 框架对比LangChain、AutoGPT、CrewAI、LlamaIndex 这些框架各有什么特点怎么选。我是黒漂技术佬。