AI应用架构图解:从直调到RAG与Agent的五层骨架实战

发布时间:2026/10/8 10:46:25
AI应用架构图解:从直调到RAG与Agent的五层骨架实战 有段时间我特别爱收集各家技术团队公开的AI应用架构图拿到手先看三个位置模型的接入方式、上下文的处理链路、以及可观测性埋点在哪。看得多了就发现一个现象——很多架构图画得精美但经不起推敲。组件之间的连线上只写了一个“HTTP”或者“调用”状态和时序完全缺失有的图画了满满一屏微服务实际业务里一个单机脚本就能跑完还有的图把大模型画成一个巨大的黑盒所有箭头都指向它看起来像“拿神灯许愿”。这类图有一个共同的毛病先是视觉上的“像那么回事”紧接着才是逻辑上的漏洞百出。所以我决定系统梳理AI应用架构设计时第一反应就是把“图解”这个概念落到实处。图解不是说画得好看而是图中每一个图层、每一个节点、每一条连线的语义都能直接翻译成工程决策。这篇文章适合两类人。一类是已经上手过几个AI项目的开发者和架构师想从“能跑”升级到“跑得稳、能迭代、团队能维护”另一类是刚开始接触AI应用设计想建立一套完整架构心智模型避免被各种花哨概念带偏的人。下文会按从全景到细节的顺序把画图、落地、踩坑的经验拆开讲。1. 先想清楚AI应用架构为什么这么难画1.1 “模型调用”和“系统工程”之间的分水岭大多数AI项目长得一模一样先在笔记本里写一个调试脚本申请一个模型API Key调通之后输出一段漂亮的结果然后觉得自己已经做完了。等真正面向用户上线问题才开始密集涌现——用户不会按照示例提问两组知识库的数据会互相打架上下文一长模型就开始丢信息高峰期请求排队还有不定期的“模型幻觉”输出和逐渐失控的账单。从“调一个模型接口”到“一个可靠运行的AI系统”中间隔着的就是架构设计。传统软件架构处理的是确定性的请求响应模块、接口、数据库、事务边界都是提前定义好的AI应用架构处理的是概率性的模型输出、动态拼接的上下文、不可控的外部工具副作用再加上模型本身还会升级换代。这些不确定性叠加在一起如果不靠架构在中间做缓冲和约束任何一个环节的波动都会直接传导到用户体验上。1.2 架构先于代码早期决策决定后期演进成本做AI应用最怕的事情不是模型效果差而是模型效果变好了、用户量上来了系统却改不动了。比如初期为了快速上线把全部业务逻辑揉进一段超级Prompt里用户数据、知识库内容、会话历史、系统指令全塞在一起。等你想加入Agent能力或者多轮记忆管理时需要从这段Prompt泥潭里把各个角色一层层剥出来代价比一开始就拆分成独立模块高出十倍。我习惯把架构设计理解为“给未来的改动预留接头位置”。一开始不需要把基础设施做得很重也不需要引入很复杂的框架但至少要把几个关键边界拉开模型调用和业务逻辑之间、知识库与对话路由之间、工具调用与权限校验之间。这些边界一旦画清楚后边的迭代基本就是在边界内加组件而不是把整座楼推倒重盖。1.3 图解本身就是架构思考的“翻译器”为什么强调“图解”因为架构设计本质上是一种熵减活动。你要在脑内同时维护组件清单、数据流、交互时序、部署拓扑多个维度纯靠文字和口头沟通很容易出现“每个人脑子里有一张不同的图”。把图画出来看似是输出其实是在逼你把各种隐性假设显性化。画图的过程会不断暴露问题这个组件到底归谁管这条链路断了之后降级逻辑在哪为什么这个模块需要同时连接数据库和模型服务当你发现连不上、说不通的瞬间往往就是架构问题浮出水面的时刻。这比任何代码审查都来得直观。2. 一张全景图看懂五层骨架2.1 五层结构接入、编排、模型、数据、治理我画AI应用架构图默认会分成五个逻辑层。这五层不一定各自独立部署但逻辑职责必须清晰否则连线一多就乱。接入层负责把用户请求、渠道事件、外部回调统一成内部标准结构。它处理的东西很琐碎文本清洗、鉴权透传、会话ID提取、限流判断甚至包括流式输出的连接管理与断开重连。编排层这是AI应用区别于传统应用的核心地带。编排层决定“这次请求要经历哪些步骤”——是先检索再生成还是先判断意图再路由到不同Agent需要调用哪些工具用哪个模型来诀断文本。模型层并不是简单摆放一个大模型。模型层包含推理服务、多模型路由、缓存、模型版本管理、降级策略等。生产环境下模型层还涉及GPU资源调配和并发策略。数据层涵盖向量库、文档解析管道、业务数据库、缓存、知识图谱等。很多时候我们以为数据层只是“数据库”实际上AI应用的数据层还承担着召回质量、数据权限隔离、知识新鲜度管理的责任。治理与可观测层横跨所有层的旁路系统。包括请求日志、链路追踪、Token计量、费用统计、质量评估、安全审核、标注系统。它不直接参与主链路但没有它AI应用就是一个盲人开车。这五层放进一张图里是从上往下看的“结构视图”。但真正要理解一个AI应用还需要另一张图专注数据流向的时间维度。2.2 画图约定固定标记法比画得漂亮更重要团队里画架构图最大的敌人是不统一的标记习惯。有人用正方形表示服务有人用云朵表示第三方有人把数据库画成圆柱体有人把提示词模板画成一个虚拟节点。结果图是画完了看的人需要猜每个符号是什么意思信息传递效率很低。我会建议固定一套简单约定圆角矩形表示服务或组件虚线框表示逻辑层或隔离环境实线箭头表示同步调用虚线箭头表示异步消息菱形表示路由判断圆柱体自然表示存储。每次画图前先在图角落标注清楚图例哪怕团队只有两三个人也要这么做。因为架构图的生命周期远比一次评审长三个月后回头看的次数远超你的预期。2.3 容易漏掉的“上下文通道”很多架构师画图时把所有注意力放在请求链路和组件交互上却漏掉了AI应用里最特殊的一条横切通道——上下文。上下文在五个层面都会出现接入层负责解析会话标识和携带的请求上下文编排层负责组装系统指令、历史记录、检索片段和工具结果模型层受限于上下文窗口长度需要做压缩与截断数据层负责按权限拉取知识内容治理层要把上下文内容记录在案以备审计。因此画架构图时我常会在主链路旁边额外画一条“上下文总线”标注线专门表示各组件之间传递的上下文数据结构。这样做的好处是团队讨论“上下文长度爆了”的时候立刻能定位到是哪一段链路在污染数据而不是在大图上到处找。3. 三种最常见架构模式的图解拆解直调、RAG、Agent3.1 模式一直调模式只适合做验证和Demo直调模式的架构图最简单客户端指向编排节点编排节点直接指向一个模型服务模型返回结果原路返回。中间没有知识库、没有工具注册表、没有复杂的上下文组装可能会带一个用于会话历史的简易缓存库。从工程角度看直调模式的唯一价值是验证模型本身的能力边界以及快速交付内部演示。它扛不住生产环境的核心原因有三个一是没有知识注入模型只能回答训练阶段见过的内容企业内部知识一问三不知二是没有状态管理多轮对话只是不断把消息拼进请求体一旦上下文超限就崩三是没有结构化输出保障模型返回的是自由文本下游系统要解析字段时很容易翻车。所以我给团队的纪律是直调模式只用来做研究不进入正式项目主干。3.2 模式二RAG架构让模型学会“带着资料说话”RAG架构的图核心是在模型外围增加一条“数据摄取-存储-检索”的链路。画图时通常可以看到非常清晰的两条链左侧是离线数据管道右侧是在线检索生成链路。离线管道负责文档解析PDF、Word、Markdown甚至扫描件需要OCR、文本清洗、切块chunk、向量化嵌入、写入向量库同时维护一份文档元数据用于权限和溯源。在线链路负责用户查询进来后先向量化到向量库召回TopN相关片段经过重排序Rerank过滤噪音拼进Prompt再交给模型生成回答最后附上引用来源。这个架构好理解但真正动手就会碰到一堆细节。切块不是简单按字数切要考虑语义边界通常会给相邻块做少量重叠以缓解上下文断裂。嵌入模型的选择也很关键要跟语料语言和领域匹配而且嵌入模型一旦升级整个向量库必须重新构建索引否则新旧向量空间不一致召回质量直接崩掉。还有权限问题如果企业知识库对不同角色有不同的可见范围严格地说应该在向量化之前就按权限分库而不是检索之后再试图过滤否则被“杀”的片段带着敏感内容已出现在上下文中。RAG架构下一张合格的图画完后至少能回答三个问题知识是怎么进来的召回的片段是怎么被选中的生成结果凭什么让用户信任3.3 模式三Agent架构从“被调用”到“自主规划”Agent架构是目前最能体现AI应用深度的一种模式。它的架构图结构和前两种有明显差异编排层不再是简单的路由节点而变成了一个带循环的执行引擎。经典的Agent执行循环是接收任务 → 规划拆解 → 选择并调用工具 → 观察工具结果 → 修正计划 → 继续执行直到满足完成条件或达到最大轮次上限。画图时编排层内部通常会用带箭头的自环表示循环旁边挂一个工具注册表Tool Registry里面登记每个工具的名称、描述、入参出参JSON Schema以及权限级别。为了让模型准确调用工具工具描述要写得很精细包括什么时候该用、什么时候不该用、参数格式是什么这些描述本身就是工程质量的一部分。我见过不少项目把Agent架构画得很酷一堆花哨的工具挂在模型周围仿佛模型拿着一大圈道具在表演。但对生产而言我会在Agent架构图上额外强标三个安全组件最大循环次数截断、敏感操作二次确认、工具权限边界。一个Agent如果可以在企业系统里自由读写删除无论模型多聪明都是定时炸弹。3.4 多Agent协作架构要解决的其实是组织边界多Agent协作近来很热大家在图上画一个“协调者”节点下面堆着一排专业Agent有做数据分析的、有做客户沟通的、有做流程审批的。这个图看着气势磅礴但落入工程时容易忽略一个问题多个Agent共享同一个底层模型和同一份上下文存储时它们之间的隔离边界在哪里架构角度必须先定清楚Agent之间是协作模式还是路由模式。协作模式下一个Agent的输出是另一个Agent的输入这时要做的是防止上下文污染——A Agent在处理敏感客户数据时它的中间推理过程不应该被B Agent读取。路由模式则是在入口处做一个意图分类然后只让相关的Agent处理请求其他Agent根本不感知。大多数业务场景其实用路由模式就够了协作模式只有在需要跨领域知识接力时才值得引入。多Agent也意味着成倍的成本和延迟。每多一个Agent节点就可能多一次模型往返。画这张协作图之前先问自己这个任务真的需要多个“大脑”吗还是一个大脑加若干工具就能解决“多Agent”是一个组织现象而不天然是一个架构先进性的标志。我把三种模式的取舍整理成一张对比表方便团队在方案评审时快速对齐维度直调模式RAG架构Agent架构适用目标验证模型能力、快速Demo知识问答、内容生成、资料查阅多步任务、工具调用、复杂规划复杂度低中高上下文管理无检索注入循环动态维护风险点幻觉、无知识切块与召回质量工具副作用、权限失控迭代方向进化到RAG或Agent增强检索、加路由精细化权限、可观测4. 画架构图时我真实在意的四件事4.1 一张图装不下全部先分清视图类型很多人在一张图里既想表现系统组件又想画时序交互又想标注部署拓扑结果图密得像电路板谁看谁晕。架构设计本来就应该分多个视图组件视图表达有哪些模块、模块之间的逻辑归属适合方案讲解和分工。时序视图表达一次请求在各个组件之间流转的顺序和条件分支偏重逻辑正确性。部署视图表达服务部署在哪里、GPU怎么分配、网络边界在哪偏重运维与资源配置。画图之前先定视角。最理想的是同一套架构用三种视图各画一遍。实际项目里如果时间紧张至少要把组件视图和时序视图分开否则极易出现“结构是对的但跑不起来”的错觉。4.2 每条连线的语义必须明确架构图里最常见的敷衍写法是在连线上写“调用”或者“send”。好的标注会写明三样东西协议类型HTTP/SSE/gRPC/消息队列、数据内容JSON格式、Prompt片段、向量数组、量级特征同步阻塞/异步、低频高频、并发量预估。举个例子同样的两个组件如果A请求是同步返回结果给用户B请求是异步写入后台日志那这两条线必须用实线和虚线区分。否则后端的同学看图排错时会一头扎进错误的位置白折腾几个小时。4.3 现状图和目标图分开维护架构演进时最容易出现的争议是“现在系统里明明还只有直调为什么你在画Agent图”。所以我坚持在项目文档里维护两张图一张是现状图如实记录当前已实现的架构哪怕丑陋、简陋也要诚实另一张是目标图描述一到三个迭代周期内希望达到的方向。评审时永远基于现状图谈改动基于目标图谈规划。把这两张图混在一起讨论就会变成一场各说各话的辩论。4.4 控制单图的“信息承载量”人的短期记忆大概能同时处理七件事。架构图的节点一旦超过十五六个阅读者必须在图上往返扫视才拼得回整体结构。我的习惯是如果一层里组件超过十五个就考虑拆成更粗的粒度如果某个节点内部细节还能再画一层就拆一张子图单独表达。好图的标准很简单让一个新人拿着图三分钟能讲清楚系统基本原理五分钟能指出我该去哪修一个具体问题。5. 从图到落地企业知识助手案例的逐步拆解5.1 需求与约束既要回答得准又要接得住私有数据拿一个我经手过的典型需求来说明某企业内部需要一个知识库助手用来回答员工关于制度、报销流程、设备申请、项目规范的提问。最初的约束如下数据敏感不能走外部公共模型服务需要内网部署语料是散落的PDF、Word、Markdown和部分历史工单记录用户提问口语化严重有大量同义表达响应时间要求在五秒以内能接受流式输出。这个需求的本质就是RAG应用但难点在数据管道要处理多格式、权限要控制、模型要内网部署。5.2 第一版架构图先跑通最小闭环第一版目标不是做得全而是先把链路走通跑出足够多的真实反馈。当时的架构图如下接入层部署一个企业微信机器人把用户消息转成JSON请求交给编排层。编排层是一个FastAPI服务做两件事维护会话历史把用户问题向量化后去向量库检索再把命中内容拼进Prompt请求本地推理服务。数据层使用了由图数据库和向量库组合的方案向量库存文本块专门生成一个文档映射表用于溯源。模型层用一个量化部署的本地模型跑在单张消费级显卡上。这里有个值得说的设计取舍为什么第一版不直接上多路召回和重排序因为团队需要先确定一个基本效果基线。检索结果的Top5里如果已经有一半是有效内容再花力气优化召回才有意义如果连这种基础工作都还没跑通就去堆组件最终只会得到一套又贵又难排查的系统。先把最小闭环跑起来然后让业务部门扔真实问题进来用真问题逼出迭代方向。跑了一周后典型的问题浮出水面回答经常空泛个别情况下会一本正经地编造制度条文还有的答案引用了错误的文档章节。这说明两个环节需要升级检索质量和生成本身对未知内容的约束。5.3 第二版架构图检索分层、工具调用和可观测性第二版从几张图上能明显看到升级。第一处变化发生在编排层。请求入口新加了一个轻量意图路由先判断用户问题属于“知识问答”还是“流程操作”。知识问答进入RAG链路流程操作进入Agent链路可以通过函数调用去查询审批状态、发起工单申请、读取流程节点信息。这一步让系统从“只回答”变成了“能行动”也是多Agent方向的第一步路由节点相当于一个总控协调者后面接的“知识Agent”和“流程Agent”彼此隔离互不共享上下文。第二处变化在检索链路。原先的单一向量检索升级为“关键词向量重排序”的混合检索结构。离线管道里针对不同文档类型做了差异化解析PDF解析保留排版层级表格数据单独结构化存储。召回之后加了一个重排序模型把Top20候选压缩到Top4明显改善了上下文精准度。第三处变化是横跨五层的治理。接入层记录每个请求的来源与耗时编排层输出完整的链路追踪ID模型层记录每次推理的Token消耗和延迟分布数据层单独统计每个知识块被命中的频率——这一步很关键能直观看到哪些文档是“热的”、哪些是“进去了就再没被捞出来”的死数据。第二版上线后最直观的变化是整个团队在找问题时不再需要靠猜了。用户说“回答变慢了”我们可以直接看是检索变慢、推理排队还是输出阶段在拿大段引用充数说“答案不对”可以复盘每一路召回命中的片段快速定位是切块策略还是重排序权重的问题。5.4 落地过程中踩过的三个坑第一无差别切块导致检索质量严重波动。前期图省事把PDF、表格、聊天记录全部按固定长度切块向量化。结果表格被切成碎片检索时语义完全断裂长文档的某些小块脱离了上下文后被当成了风格完全不同的内容召回。解决方式是按文档类型制定不同切割策略段落层级清晰的按Markdown结构切表格数据单独走结构化检索通道聊天记录则按轮次聚合切块。第二Agent工具权限初始化时给得太宽。当时为了让流程Agent能“干活”直接把数据库的读账号和部分写权限挂上了。测试阶段一切正常但一次异常的情况下Agent连续创建了十几个重复审批流程。这件事给团队的教训是Agent越聪明权限边界反而要越窄。所有工具都按最小权限原则配置敏感操作加“人工确认节点”即使这样会损失一点“全自动感”。第三第一版完全没有做成本可见性。本地模型看似没有按次计费但GPU的占用、检索服务的资源消耗、重排序带来的额外延迟一开始都是黑盒。后来才把请求级成本估算加进了可观测面板按“单次请求总成本≈推理Token费用检索资源折算重排序资源折算”来评估系统性价比。看到数字之后团队自动开始优化Prompt长度和召回数量因为每一百个Token都要真金白银。6. “图好看”不等于“架构好”几个常见误区与最终建议6.1 把架构图堆满微服务业务却撑不过一个Demo有一种架构图看一眼就知道是“为了画而画”二十几个微服务节点每个节点旁边都挂着一个数据库中间用一大圈网关串联起来。但实际业务只是一种简单的文本生成或客服问答。过度设计不但解决不了问题反而会引入分布式系统的全套难题——服务发现、链路追踪、数据一致性这些复杂度会吞掉本来应该投在提示词设计和数据清洗上的精力。架构设计的第一原则是匹配合适度。先问业务复杂度是多少再决定架构复杂度。大多数AI应用的瓶颈在数据质量和交互设计而不是并发吞吐。6.2 只画正常路径回避异常、降级与熔断我见过太多架构图所有箭头都是“成功路径”没有一条指向失败处理和降级策略。画图时可以理想化落地时必须现实。在AI应用里尤其要提前想清楚几个降级问题模型服务超时怎么办向量库挂了要不要直接走无检索生成Agent工具调用失败是重试、换工具、还是直接给用户说明这些链路画出来之后系统的鲁棒性才能在图上看得见。6.3 把架构的演进当作一个“一劳永逸”的动作架构设计不是一次性活动。尤其AI领域模型数量、框架版本、评测集刷新速度都很快今天合理的架构选择三个月后可能就是技术债。我现在的习惯是给架构图本身也加版本号并在每次重大迭代后更新一次现状图。图里过时的信息比没有图更危险因为它会让团队基于错误的前提做决策。6.4 我的三点经验留给后来者参考第一先从最小闭环起跑但边界要提前画。你可以在第一版只做直调但你画图时就要知道未来会演进到RAG或Agent预留接口和职责边界。第二图解大于文档但持续维护大于一次精美交付。架构图的最大价值在它的“保鲜度”。第三AI应用的差异化竞争力永远在上层——数据管道质量、流程设计、权限模型、上下文组织方式——而这些恰恰最容易被一张“酷炫的模型墙”掩盖。说到底图解AI应用架构这件事本质上是在跟复杂性谈判。模型能力再强也只是系统中的一个组件。能够把它放进一套清晰结构里让每个组件都各司其职、每条链路都可追踪、每次故障都能定位这才是真正的架构功。