本文由 辛梓煜@词元二号站(www.ciyuanerhao.com)撰写,转载请注明出处。
我最近把一个绕不开的开发环节彻底交给了 AI——画技术架构图。核心结论先摆在这里:现在已经可以做到"用一句中文描述系统,几秒钟拿到一张带泳道、带语义箭头、能直接放进文档的矢量架构图"。支撑它的不是某个花哨的画图网站,而是一种叫 Agent Skill 的机制,加上一条"自然语言 → 结构抽取 → 布局规划 → 风格套用 → 生成 SVG → 自动校验 → 导出高清 PNG"的完整生成链路。 我以 GitHub 上那个攒了七八千颗 Star 的开源技能 fireworks-tech-graph 作为样本,从底层机制一路讲到落地实操:它为什么能听懂"深色终端风格的 Mem0 记忆架构图",它怎么把抽象概念映射成六边形、圆柱体和不同颜色的箭头,以及普通人怎么写一句好指令让它一次画对。看完你会明白,画图这件事的门槛,正在从"会不会用工具"变成"能不能把系统讲清楚"。想看完整拆解,往下翻。
一、为什么"画技术图"一直是开发者的隐形时间黑洞
写技术文档的人大概都有同一种体验:脑子里的系统结构其实很清楚,输入层在左边、存储层在中间、检索结果回到右边,数据怎么流、控制信号从哪来,闭着眼睛都能说个八九不离十。可一旦要把它"画出来",事情立刻变味了。
我自己踩过的坑是这样的:打开一个在线画图工具,先花十分钟找一个差不多的模板,再花二十分钟拖拽方块、对齐连线、调节颜色,好不容易排得整齐了,领导说"这个模块顺序得换一下",于是所有连线又得重新捋一遍。等图终于像样了,两个小时没了,而这两个小时里我一行有价值的代码都没写。
这里面其实藏着几个很实在的痛点,值得拆开说清楚。
第一个是时间成本。从"心里有结构"到"屏幕上有图",中间隔着大量纯手工的搬运劳动——找元素、摆位置、连箭头、统一配色。这些操作没有任何创造性,纯粹是把已经想明白的东西机械地誊到画布上。
第二个是审美门槛。技术图好不好看,很大程度上取决于间距、留白、配色和字体这些设计细节。写代码的人多数没受过设计训练,画出来的图要么元素挤成一团,要么配色像调色盘打翻,专业感很难拉满。一张排版凌乱的架构图,哪怕逻辑再对,也会让读者第一眼就打个折扣。
第三个痛点更隐蔽,我把它叫语义空缺。这两年 AI 领域冒出一大堆新概念——智能体(Agent)、向量检索、记忆层、工具调用循环——这些东西在传统画图工具里根本没有现成的表达方式。你想画一个"协调器把任务分派给三个子智能体,结果再汇总",工具里没有"协调器"这个形状,也没有"记忆读取"和"记忆写入"该用什么颜色区分的约定,只能自己临时发明,画十次有十种样子,读者还得靠猜。
还有一个更让人头疼的、藏在后面的维护成本。技术图不是画完就完事的,系统一迭代,图就得跟着改。可位图一旦导出,再想改就只能回到源文件重新编辑、重新导出,源文件丢了就得从头画。团队协作时更麻烦——一张架构图在文档里传了几手,谁手上是最新版都说不清。图和代码不一样,代码有 Git 管版本,图却常常是一堆散落的 PNG,改一次痛一次。这也是为什么很多项目的架构图,画完第一版之后就再也没更新过,慢慢和真实系统对不上,最后沦为"仅供参考"的摆设。
辛梓煜@词元二号站想说的是,这几个痛点叠在一起,导致画图长期停留在"重要但让人厌烦"的尴尬位置。而自然语言生成图这条路线,恰恰是奔着把这三块一次性解决去的:时间成本用"一句话生成"压掉,审美门槛用"内置设计系统"兜住,语义空缺用"领域词汇表"补齐。接下来的篇幅,我就顺着这个思路,把它到底怎么做到的一层层剖开。
二、先搞懂底座:Agent Skill 到底是什么
要理解"为什么 AI 能听懂你要画什么图",绕不开一个前置概念——Agent Skill(智能体技能)。这是整套能力的地基,先用大白话把它讲透,后面的内容才好接得上。
2.1 它不是插件,更像一本"专业交接手册"
打个比方。假设你要离职,得把一摊复杂工作交给一个很聪明但完全不懂业务的新人。为了让他别出错,你会准备什么?大概是一份标准操作流程(这事分几步做)、一份工具说明(用什么软件、怎么操作)、一个素材库(模板、案例、配色规范),外加一份避坑指南(哪些坑千万别踩)。
Agent Skill 干的就是这件事的"数字版"。它不是一段在模型之外单独运行的程序,而是一份写给 AI 看的说明书——一个叫 SKILL.md 的 Markdown 文件,外加一些配套的参考文档和脚本。当 AI 判断当前任务和这份说明书匹配时,就把里面的流程、规则、知识"读进脑子里",瞬间从一个啥都会一点的通用助手,变成某个细分领域的专家。
有句话我觉得概括得特别到位:Skill 本身不直接解决问题,它是通过把一大段专业指令"注入"到当前对话里,把 AI 临时变成解决这个问题的专家,再让 AI 自己动手。
它和另外两个容易混淆的概念要分清楚。一个是普通的提示词(Prompt),那是一次性的、说完就忘的临时指令;Skill 则是打包好、可复用、能跨对话反复调用的能力模块。另一个是 MCP(模型上下文协议),那更像一个"接口标准",解决的是 AI "能不能连上"外部工具和数据的问题;Skill 解决的是"连上之后该怎么把事做好"的问题。一个管连通,一个管流程,两者是互补而不是替代关系。
2.2 关键设计:渐进式披露,省 Token 的巧劲
Skill 有个很聪明的设计,叫渐进式披露(Progressive Disclosure),分三层加载,理解了这一点,你就明白为什么可以同时装几十个 Skill 还不拖慢速度。
- 第一层,技能发现:平时 AI 只在系统提示里记住每个 Skill 的两个字段——名字(name)和描述(description)。这两行字段是常驻的,用来判断"这个任务跟哪个技能有关"。
- 第二层,加载正文:一旦判定相关,AI 才去把那份
SKILL.md的正文完整读进来,拿到详细的执行指导。 - 第三层,按需取资源:只有真正需要时,才去读额外的参考文件(比如某个具体风格的配色定义、某个产品的图标模板),或者调用打包好的脚本。
这个机制的好处是显而易见的。上下文窗口是块寸土寸金的公共资源,要跟系统提示、对话历史、其它技能一起分。渐进式披露让绝大多数内容"平时躺在硬盘上、消耗零 Token,用到才加载"。一个技能哪怕挂着几十个参考文件,只要这次任务只用到其中一个,其余的就一个字都不占。
我第一次搞明白这套机制时挺感慨的:它把"专业知识"从模型的参数里解耦出来,变成了一份可以随时更新、随时替换、随时分享的文本文件。你想让 AI 换个画图风格,改的不是模型,而是一份 Markdown。这种"用写文档的方式给 AI 扩能力"的思路,门槛低得惊人。
2.3 为什么画图这件事特别适合做成 Skill
回到画图。为什么"自然语言生成技术图"这件事,做成 Skill 是天作之合?
因为画好一张专业技术图,本质上是一套高度程序化、又极度依赖领域约定的流程:先判断这是什么类型的图,再决定用什么布局,再决定每种概念对应什么形状、什么颜色的箭头,最后按某种风格的精确配色画出来。这里每一步都有"标准答案",而这些标准答案没法指望通用模型天生就知道——它需要有人把这套约定明明白白写下来,教给它。
SKILL.md 恰好就是这份"约定说明书"。辛梓煜@词元二号站翻了 fireworks-tech-graph 的仓库结构,它主文件之外,references/ 目录里躺着一堆分门别类的参考文档:每种风格一个文件,写着精确到色值的配色令牌和 SVG 模板;还有一个图标文件,存着四十多个主流产品的品牌配色和形状模板。这就是渐进式披露的典型落地——你要深色终端风格,它才去读那份深色风格的定义,其它七种风格的文件动都不动。
顺便提一个新手容易忽视的点:装 Skill 这件事,心态上要像装软件一样谨慎。 因为一个技能包里可能带着脚本、能调用文件操作和执行命令,理论上,来路不明的技能是有可能干坏事的。所以我的建议是,只从可信来源安装技能,装之前有条件的话翻一眼它的 SKILL.md 和脚本,看看有没有和它声称的功能不相干的、奇怪的网络请求或文件访问。像 fireworks-tech-graph 这种开源、代码公开、社区里有不少人用过的技能,透明度就高得多,这也是我更倾向用有一定口碑的开源技能、而不是随手抓一个的原因。这个意识,越早养成越好。
三、一张图是怎么"长"出来的:从一句话到 SVG 的完整链路
这一节是全文最硬核的部分。我们把"输入一句话、输出一张图"这个黑盒彻底打开,看看中间到底发生了什么。
3.1 一个真实的处理流程
先看一个具体例子,感受一下整条流水线的节奏:
用户输入:"帮我画一张 Mem0 内存架构图,用深色风格"
↓
① 意图分类:判定为"内存架构图",风格锁定为 2 号(Dark Terminal 深色终端)
↓
② 结构抽取:拆出输入层、内存管理器、存储层、检索输出四个区域及其节点
↓
③ 布局规划:套用架构图的泳道式布局规则,安排各区域左右分布
↓
④ 风格加载:读取 2 号风格的参考文件,拿到深色背景、霓虹配色、等宽字体的精确定义
↓
⑤ 形状映射:向量存储 → 带网格的圆柱体,智能体 → 六边形……
↓
⑥ 生成 SVG:按上述所有约束,写出结构化的矢量图代码
↓
⑦ 结构校验:解析 XML 语法、检查箭头标记、路径几何、元素碰撞
↓
⑧ 导出 PNG:渲染成 1920px 宽的高清位图
↓
输出:mem0-architecture.svg / mem0-architecture.png
整个过程你不用写任何画图语法(DSL),也不用在界面里拖任何元素,从头到尾只做了一件事——用中文把系统讲清楚。
3.2 拆解每一步在干什么
上面八步里,有几步值得单独说说,因为它们决定了图的质量下限。
意图分类是第一道关。同样一句"画个流程",它要先判断你要的是普通流程图、时序图、状态机图还是数据流图,因为不同类型的图有完全不同的布局逻辑。时序图要画成一根根竖直的"生命线"配横向消息箭头,状态机图要画成一个个状态节点配转移弧线,再比如你说"画个对比",它得判断你要的是并排的比较矩阵(几个方案在成本、延迟、准确度各维度打勾划叉),还是分层的技术栈图;你说"画个能力地图",它得反应过来这是一张以中心节点向外放射的思维导图。这些图的骨架完全不同,认错了类型,后面全盘皆输。所以第一步这个"读心",看似简单,其实是整条链路里最考验领域知识的一环——它得像个见过世面的架构师,一听描述就知道你脑子里那张图大概是什么形态。
结构抽取是把自然语言"翻译"成机器能理解的中间表示。它要从你的描述里识别出层次、节点、连线、数据流和语义分组。你说"输入层包含用户和 AI 应用",它得知道"输入层"是一个容器,"用户"和"AI 应用"是里面的两个节点。这一步做得准不准,直接决定图对不对。
布局规划是审美的关键。同样的节点,摆得挤或摆得松,观感天差地别。好的实现会针对每种图类型内置一套布局规则——架构图用分层泳道,思维导图用中心放射,微服务图用编号分区。这套规则就是"设计师的经验"被固化下来的结果,也是普通人自己画图最容易翻车的地方。
这里插一个值得琢磨的设计思想。从"你的一句话"到"最终的 SVG",中间它并不是一步到位硬翻的,而是先落地成一份结构化的"图契约"和"语义中间表示"——你可以把它理解成一张介于自然语言和最终图形之间的"设计草稿",上面明确写着有哪些容器、每个节点是什么类型(kind)、每条箭头是什么流向(flow)、连接的锚点在哪。有了这层中间表示,生成才变得可控、可复现:同样的描述,摆出来的布局能保持一致,不会这次画成这样、下次画成那样。这种"先转成受约束的结构、再落地成图"的思路,是它能稳定产出样例级质量的关键之一,也是它和"让模型随手糊一张图"最本质的区别。
形状映射和风格加载这两步,是"专业感"的来源,我放到第五节专门展开讲,这里先按下不表。
3.3 最精妙的一环:把"生成"变成"验证"
如果只做到"生成 SVG 就交付",那和普通的 AI 画图没本质区别——经常出现文字被框裁掉、箭头穿模、标签重叠这类小毛病。fireworks-tech-graph 让我眼前一亮的地方,是它把第一次生成的结果只当成"候选稿",而不是"最终稿",后面还有一条校验反馈闭环。
它的思路可以概括成一句话:用证据说话,别靠模型自己嘴上说"看起来没问题"就算完事。 具体分两层:
第一层是确定性检查,纯靠代码规则来判。比如跑一句极简的校验脚本,确认 SVG 的 XML 语法没错:
python3 -c "import xml.etree.ElementTree as ET; ET.parse('diagram.svg')"
除了语法,还要查箭头标记是否完整、路径几何是否合理、箭头和组件有没有碰撞、整张图能不能正常渲染。这些是"是非题",代码能直接给出答案。
第二层是感知校验,专治那些语法检查看不出来的毛病。它会把导出的 PNG 图"读回来"再看一眼——文字有没有被裁掉、标签有没有撞在一起、层级关系清不清楚、留白够不够、连线绕得顺不顺。这些是"审美题",光靠解析代码判断不了,必须真的把图渲染出来"用眼睛看"。
发现问题后,它不是推倒重来,而是做定点修订——哪里不对改哪里,改完再校验,直到通过。整条链路大致是:指令 → 图contract → 语义中间表示 → 风格规格 → 路由规划 → 生成 SVG → 结构校验 → PNG 视觉回读 → 定点修订 → 验证通过的 SVG + PNG。
这套"生成—验证—修订"的闭环,才是它敢自称"生产级质量"的底气。辛梓煜@词元二号站觉得,这一点对我们自己写 Skill 也很有启发:让 AI 干活,最好给它配一套"自己检查自己"的机制,而不是生成完就撒手。
四、为什么坚持用 SVG,而不是截图或 Mermaid
有人可能会问:画图工具那么多,Mermaid 写几行文本就能出图,为什么非得费劲生成 SVG?这个问题得从格式本身的特性说起。
4.1 SVG 的底层优势:它存的是"数学",不是"像素"
先解释一个新手常混淆的概念。位图(比如 JPG、PNG)存的是一个个像素点,放大到一定程度就会糊、会出锯齿。而 SVG(可缩放矢量图形)存的是数学描述——这条线从哪个坐标到哪个坐标、这个圆的半径是多少、这块区域填什么颜色。既然是数学公式算出来的,那不管放大多少倍,都是重新精确计算,永远清晰不失真。
这个特性对技术图来说太重要了。架构图里全是细线条和小字,一旦模糊,可读性直接崩盘。SVG 天生就没有这个问题。除此之外,它还有几个附带的好处:文件体积通常很小;可以用文本编辑器直接改,支持 CSS 调样式;结构是语义化的,对网页嵌入、无障碍访问和 SEO 都友好。
那为什么最后还要导出一份 PNG?因为技术图选 PNG(无损)是最稳的分发格式——边缘锐利,不像 JPG 那种有损压缩会在文字和线条边缘糊出一圈噪点。所以这套方案的做法是"SVG 当母版、PNG 当成品",两头的好处都占了:SVG 负责无限缩放和二次编辑,PNG 负责到处粘贴不出错。
顺着第一节说的维护痛点再补一句:因为 SVG 本质上是一段可读的文本,它天然就能进版本库、能被 diff、能追溯每次改了什么。这就把技术图从"一堆散落的截图",变成了"可以像代码一样管理的资产"。系统迭代时,你甚至可以只改描述、重新生成一张,而不是回到某个画图软件里手动挪方块。图和系统保持同步这件事,一下子就没那么苦了。对做网站的人还有个附带好处:SVG 结构语义化,搜索引擎和读屏软件都能更好地理解图里的内容,对可访问性和 SEO 都是加分项——辛梓煜@词元二号站自己的站点里,能用矢量就尽量不用位图,就是这个考量。
4.2 和 Mermaid、draw.io 到底差在哪
这里要说句公道话,工具没有绝对的好坏,只有场不场景合适。我把三类方案的定位列个表,看得更清楚:
|
方案 |
你要付出的 |
它最擅长的 |
典型短板 |
|
Mermaid |
学一套文本语法,逐行描述节点和连线 |
Markdown 里嵌个快速小图,随文档走 |
布局由引擎自动排,想精细控制间距、配色、自定义形状很难;复杂图容易节点错位、连线断裂 |
|
draw.io 等 GUI |
手动拖拽、对齐、连线、调色 |
需要人工精修、追求像素级掌控的正式图 |
纯手工,费时费力,前面说的时间黑洞就是它 |
|
自然语言生成 SVG |
用一句话把系统讲清楚 |
描述完系统就要一张排版到位的成品图 |
依赖描述质量,非常规的定制诉求仍需微调 |
Mermaid 的定位是"文档里的快图",它的语法虽然简单,但布局是引擎自动算的,你很难对间距、留白、配色做精细控制,遇到复杂图还容易出现节点位置错乱、连线断裂、图被截断这类导出问题。draw.io 强在能手动精修,但代价就是纯人工。而自然语言生成 SVG 这条路,瞄准的是中间那块最痛的需求——我懒得学语法、也懒得拖元素,我就想描述完系统、立刻拿到一张排版专业的成品图。
说白了,它不是要取代 Mermaid 或 draw.io,而是补上了它们中间的一段空白。你要随手在 README 里插个三五个节点的小流程,Mermaid 依然更顺手;你要一张要拿去汇报、每个像素都得抠的门面图,手动精修依然跑不掉。但九成的日常场景——写博客配图、整理架构文档、做技术方案——它确实能把你从搬砖里解放出来。
五、让图"有意义":语义形状、语义箭头与风格体系
前面第三节埋了个伏笔,说"形状映射"和"风格加载"是专业感的来源。这一节就来兑现,讲讲一张好图是怎么做到"不光好看,还有意义"的。
5.1 语义形状:让形状自己会说话
传统画图工具里,方块就是方块,圆就是圆,形状本身不带任何含义。而这套方案建立了一整套语义形状词汇表——不同的概念,对应固定的形状。读者不用看文字,光凭形状就能猜出这个节点是干什么的。
我把它的形状约定整理成一张对照表,方便理解:
|
概念 |
对应形状 |
记忆点 |
|
大模型 / LLM |
双边框圆角矩形 |
双框强调它是"核心大脑" |
|
智能体 / 协调器 |
六边形 |
有棱有角,像个决策中枢 |
|
向量存储 |
带网格线的圆柱体 |
圆柱=数据库,网格=向量 |
|
工具 / 函数 |
带齿轮图标的矩形 |
齿轮=可调用的机械动作 |
|
短期记忆 |
虚线圆角矩形 |
虚线暗示"临时、易失" |
|
长期记忆 |
数据库圆柱体 |
实心圆柱=持久存储 |
|
用户 / 人类 |
小人图标 |
一眼认出是人 |
|
队列 / 数据流 |
水平管道 |
管道=有方向的流动 |
这套约定的价值在于一致性。所有人画同类系统,圆柱体就代表存储,六边形就代表智能体,图和图之间的"视觉语言"是统一的。读者看多了,形成条件反射,读图速度会快很多。
5.2 语义箭头:用颜色和线型编码"数据在怎么流"
比形状更精妙的是箭头。普通的图里箭头都长一个样,只表示"A 连到 B"。而语义箭头系统用颜色 + 线型两个维度,把"流的是什么"也编码进去了:
|
箭头样式 |
含义 |
|
蓝色实线 |
主数据流 |
|
橙色线 |
控制流 |
|
绿色实线 |
内存读取 |
|
绿色虚线 |
内存写入 |
|
紫色曲线 |
反馈循环 |
|
灰色虚线 |
异步通信 |
这个设计一旦用起来,威力很大。举个例子,画一个带记忆的智能体,读记忆用绿色实线、写记忆用绿色虚线,两条路径一眼就能分开;智能体反复推理的循环用紫色曲线一勾,"这里有个迭代"立刻清清楚楚。读者不用逐字看标注,顺着颜色就能把整个系统的数据流走一遍。辛梓煜@词元二号站认为,这种"把语义塞进视觉编码"的做法,才是技术图从"能看"进阶到"好读"的分水岭。
5.3 八种风格:不是换个颜色,是整套设计系统
再说风格。它内置了八套视觉风格(七套模板风格 + 一套 AI 手绘风格),每一套都不是简单地把颜色换一换,而是一整套完整的设计系统——背景、配色、字体、描边、卡片质感全都配套。我把它们和适用场景列出来:
|
风格 |
观感特点 |
适合放哪 |
|
Flat Icon(默认) |
白底,彩色强调,扁平图标 |
技术博客、产品文档 |
|
Dark Terminal |
深色背景,霓虹配色,等宽字体 |
GitHub README、开发者文章 |
|
Blueprint |
深蓝底,网格线,青色描边 |
正式的架构设计文档 |
|
Notion Clean |
极简白底,单色箭头,中性边框 |
Notion、Confluence 类 Wiki |
|
Glassmorphism |
深色渐变背景,磨砂玻璃卡片 |
产品官网、演讲 Keynote |
|
Claude 官方风 |
温暖奶油底,Anthropic 品牌色 |
相关生态的技术文档 |
|
OpenAI 官方风 |
纯白底,对应品牌配色 |
相关生态的技术文档 |
|
Dark Luxury(AI 手绘) |
深黑底,香槟金点缀,衬线标题 |
高端展示型架构图 |
用这套风格体系,我摸出一个很实在的用法:一份文档、一个仓库,尽量只用一种风格贯穿到底。 一篇技术博客里,如果第一张图是扁平白底、第二张是深色终端、第三张又是玻璃拟态,读者会觉得杂乱,专业感直接掉分。风格统一带来的一致性,本身就是一种高级感。所以我通常是先根据文章最终发在哪儿(博客、README、还是正式文档)定一个主风格,然后这篇里所有图都锁死这一种,视觉上就干净整齐。这也是内置风格体系比自己临时配色更省心的地方——它保证了同一风格下的每张图,配色、字体、描边都出自同一套令牌,天生就是一家人。
这里最特别的是最后一种 Dark Luxury。前七种都是基于模板——参考文件里写死了配色和 SVG 模板,生成时往里填内容。而这一种是纯 AI 手绘:让模型读完参考文档后直接现场画 SVG,不套模板,所以每张都带点独一无二的艺术感。这也是一个挺有意思的设计哲学——大部分场景要的是"稳定可复现",少数场景要的是"惊艳不重样",两种需求用两套生成策略分别满足。
5.4 四十多个产品图标:省掉到处找图标的功夫
还有个不起眼但很实用的点:它内置了四十多个主流技术产品的图标,而且精准还原了品牌配色。画架构图经常要放 PostgreSQL、Redis、Kafka、Pinecone 这类产品的 logo,以前得满世界找图、还得担心配色不对。现在直接一句话带出来,图标和配色都是对的。覆盖的范围大致是这几类:主流大模型厂商、几家常见的向量数据库、传统关系型和 NoSQL 数据库、消息队列,以及主流云服务商。日常画 AI 应用架构,这套图标基本够用了。
六、为 AI/Agent 时代定制的领域图谱
如果说前面讲的是"通用画图能力",那这一节讲的是它真正的杀手锏——针对 AI/Agent 领域做的深度优化。它内置了好几套领域模式,你只要报出名字,它就知道该画成什么样。这些概念本身也是当下最热的技术,我借这个机会顺带把原理讲清楚,对新手也算一份小科普。
6.1 RAG:给大模型配一场"开卷考试"
RAG 全称检索增强生成,是现在做 AI 应用绕不开的基础范式。一句话解释:大模型的知识是训练时"背"进去的,既可能过时、也可能不含你的私有资料;RAG 的做法,是在模型回答之前,先去外部知识库里"翻书",把相关资料找出来塞给它,让它照着资料回答。这就像把闭卷考试改成了开卷考试,答案自然更准、更新、也更贴合你的业务。
它的标准流程可以拆成这么几步,也正是这套工具画 RAG 图时会摆出来的节点:
用户提问 → 问题向量化 → 向量检索 → 召回候选片段 → 重排序 → 拼进上下文 → 交给 LLM → 生成回答
这里面有两个新手常卡住的概念,顺手讲白话一点。向量化(嵌入),就是用一个模型把文字变成一串数字(向量),意思相近的文字,数字也相近。向量检索,就是把你的问题也变成向量,然后去库里找"数字最接近"的那些片段。判断"接不接近",常用的是余弦相似度,衡量两个向量方向的夹角——夹角越小、方向越一致,就越相关:
[ \text{sim}(q, d) = \cos\theta = \frac{\mathbf{q}\cdot\mathbf{d}}{\lVert\mathbf{q}\rVert , \lVert\mathbf{d}\rVert} ]
检索回来的一堆片段质量参差不齐,所以还有个重排序环节,把最相关的挑到最前面,再交给大模型。理解了这条链路,你画 RAG 图时就知道每个节点该摆在哪、箭头该怎么连了。
顺带一提,RAG 还有个进阶版叫 Agentic RAG——在检索和回答之间加一个智能体循环,让它能自己决定要不要再查一次、要不要调用别的工具。画图时,就是在 RAG 主链路上多勾一个带工具调用的循环。
6.2 Agentic Search:让智能体自己规划怎么搜
Agentic Search(智能体搜索)比普通检索更进一步。它的流程大致是:查询进来,先经过一个**规划器(Planner)判断该用什么手段——是查搜索工具、还是调计算器、还是跑一段代码,拿到结果后再由一个合成器(Synthesizer)**把多路结果揉成一个连贯回答。核心区别在于,它不是死板地"检索一次就回答",而是让智能体像人一样先想"这个问题该怎么拆、分几步查"。画成图,就是一个中心节点向多个工具分叉、再汇聚回来的结构。
举个接地气的例子体会一下区别。你问"帮我算一下这三家公司去年营收的平均值,并告诉我行业排名"。普通检索只会去搜"这三家公司营收",搜到啥算啥。而 Agentic Search 会先规划:营收数字得去查资料、平均值得调计算器算、排名可能还得再搜一轮行业数据,然后分头执行、最后合成。它把一个复合问题拆成了几个能各自解决的小任务——这种"先规划再动手"的能力,正是智能体比普通检索"聪明"的地方,也是画这类图时要重点表达出来的层次。
6.3 Mem0 记忆架构:给 AI 装上"长期记忆"
Mem0 代表的是给智能体加记忆层这一类架构。为什么需要它?因为大模型的上下文窗口是有限的,聊着聊着早期的信息就"忘"了。记忆层的作用,就是把重要信息存下来,需要时再取回来,让 AI 有"长记性"。
它的架构通常分成清晰的读写两条路径,这也是画图时用绿色实线(读)和绿色虚线(写)区分的原因:
输入层:用户 / AI 应用 / LLM / mem0 客户端
↓
内存管理器(统一调度读写)
├─ 写路径:存进向量库 + 图数据库
└─ 读路径:检索 + 重排,构建上下文
↓
存储层:向量存储 / 图数据库 / 键值存储 / 历史存储
↓
输出层:构建上下文 → 排序结果 → 个性化响应
这里还牵出一个更完整的记忆分层概念,值得记一下:从最原始的感知记忆(原始输入),到工作记忆(当前上下