18 · 读地图:用框架拆解陌生系统
一句话点题:会设计的人,首先要会「读」——对着一张陌生的架构图,用同一套问题把「为什么这么连」一层层剥出来。AI 系统看着新,可这套读图动作一个字都不用改。
🎯 实战篇第 1 章 · 本章只练一件事
不设计、不写代码——只练逆向读图:拿到一张架构说明,能说出约束、灵魂路径、关键取舍、先死在哪。
读完你应该能 本章怎么练 用四步法读任何模板,不从头读到尾 第一节:方法 + 读图笔记模板 跟着示范走通一遍 第二节:RAG 知识库(示范,约 15 分钟) 自己填一张读图笔记 第三节:AI 对话产品(10 分钟练习) 换一个系统独立完成 第四节:课后作业 为什么实战篇拿 AI 系统开刀? 因为它们正是大多数人「最不熟、最容易被术语唬住」的陌生系统——而读图法恰恰是用来对付陌生的。下一章(19)起,我们会正向设计一个 AI 智能客服;本章先用它的「近亲」练眼:学会读,才谈得上设计。
一、方法与工具:四步 + 三问 + 一页笔记
07 章 是正向:约束 → 方案 → 图。本章是逆向:图 → 反推约束与取舍。
设计: 约束 ──▶ 方案 ──▶ 图
读图: 图 ──▶ 约束 ──▶ 取舍 ──▶ 「换约束还会这样吗?」认字 vs 读懂:认字是「有向量库、有编排层、有 GPU」;读懂是对每个框能答三问(02 框架 的逆向):
- 它在服务哪个质量属性或约束?
- 它放弃了什么?
- 规模涨 100 倍,这里会先裂吗?
四步读图(口诀:本质 → 全景 → 取舍 → 死穴)。读仓库里任意一张 模板 时,可按段对照:需求与约束 → 全景图与数据流 → 关键决策 → 瓶颈与误区。
| 步骤 | 你在干什么 |
|---|---|
| ① 抓本质 | 功能需求 + 质量属性 + 硬约束 |
| ② 看全景 | 灵魂数据流是哪条(跟一条请求走完) |
| ③ 挖取舍 | 2~3 个「选了 X,放弃 Y」 |
| ④ 找死穴 | 第一个规模化瓶颈 + 一个常见反模式 |
读图笔记模板(示范、练习、作业都填这一张):
系统名: _______________
① 本质
· 一句话业务:
· 质量属性(最重的 2 条):
· 硬约束(1 条):
② 全景
· 灵魂路径(一句话):
③ 取舍(至少 2 条)
· 选了 ___ / 放弃 ___ / 因为约束 ___
· 选了 ___ / 放弃 ___ / 因为约束 ___
④ 死穴
· 先死在哪:
· 常见反模式(我见过的一种):AI 系统读图,只多盯三个新约束(都来自 17 章,后面几章会反复用):成本(每次调用都在烧 token)、非确定性(同样输入未必同样输出)、上下文(模型的工作内存有限且昂贵)。读 AI 地图时,在「质量属性」和「取舍」里多问一句:这块是在省钱、在防胡说,还是在管上下文?
二、示范:跟着读「RAG 知识库」(约 15 分钟)
是什么:把你自己的文档切块、向量化、建索引,用户提问时先检索出最相关的几段塞进 prompt,让大模型「开卷考试」——基于你的资料作答,而不是凭训练记忆瞎编。
读图目标:填完上面笔记模板。下面按四步走;不必背 RAG 细节,要背的是读图动作。
① 抓本质 → 填笔记「本质」栏
| 要点 | |
|---|---|
| 功能 | 文档接入、切块+向量化、检索(向量+关键词)、重排、组装上下文生成带引用的答案 |
| 质量属性(主线) | 检索质量(找不准模型必胡说) · 可溯源(答案能指回原文) · 成本(切块/检索/生成三段都烧钱) |
| 硬约束 | 检索质量决定回答上限;上下文窗口塞不下全部资料;检索到的内容是不可信输入(可能藏注入) |
✅ 这一步结束,你应该能说出:这不是「问一个更聪明的模型」,而是「让模型开卷考试——功力八成在检索」。
② 看全景 → 填笔记「全景」栏
离线: 文档 → 解析 → 切块 → 向量化 → 写入向量库(块向量+来源)
在线: 提问 → ①向量+关键词召回 ②重排选 top-K → ③组装 prompt → LLM → 带引用答案跟一条「我们的退款政策是几天?」:问题向量化 → 向量库召回 ~20 块 → 重排精选 3~5 块 → 拼进 prompt → 模型照着写答案 + 附「依据:政策文档 3.2 节」。
| 图上的关键块 | 在服务什么 |
|---|---|
| 离线建库(切块+向量化) | 把资料变成可检索的形态 |
| 召回 + 重排(两阶段漏斗) | 检索质量:先广后精 |
| 引用来源 | 可溯源(可信、可核实) |
| 把检索结果当不可信文本 | 防提示注入 |
✅ 这一步结束,你应该能说出灵魂路径:「离线把资料组织好 → 在线把对的资料找出来 → 模型照着写」,而不是「把问题直接丢给模型」。
③ 挖取舍 → 填笔记「取舍」栏(示范写 2 条)
| 决策 | 选了 | 放弃 | 因为 |
|---|---|---|---|
| RAG vs 长上下文 vs 微调 | RAG(临时检索) | 把资料全塞进 prompt 的简单 | 资料多、要常更新、要溯源——长上下文又贵又「迷失在中间」 |
| 纯向量 vs 混合检索 | 混合(向量+关键词)+ 重排 | 纯向量的实现简单 | 向量擅长语义、却对产品型号/人名等精确词不灵 |
(另两条你读图时常见:切块怎么切是检索质量的隐形开关;检索结果永远当不可信输入。)
✅ 这一步结束,你应该能写出:至少 2 条「选了/放弃/因为」。
④ 找死穴 → 填笔记「死穴」栏
| 先死在哪 | 破解方向 |
|---|---|
| 检索质量差 → 模型跟着胡说 | 混合检索 + 重排 + 持续评测召回(面试/生产高频) |
| 向量规模、embedding 成本涨上来 | 向量库分片 + 增量更新(只重算变化的块) |
反模式举例:检索拉胯却怪「模型太笨」;切块拍脑袋(太大噪音多 / 太小丢上下文);不给引用。
✅ 四步走完,你应该有一张完整的读图笔记。
架构智慧:RAG 的图再花哨,记住一句——RAG 的上限 = 检索的上限(garbage in, garbage out)。 模型只是最后「读着资料写答案」的环节,八成功力在「把对的资料找出来」。其它框都是为这句服务。
📎 需要更多细节(切块、重排、Contextual Retrieval)时,再翻 RAG 知识库模板。
三、10 分钟练习:AI 对话产品(设计 ↔ 读图)
这一节不是第二篇长文。你带着半页材料 + 读图笔记模板,自己填;最后对答案。
为什么挑它? 因为它就是下一章我们要正向设计的 AI 智能客服的「母体」。先把它读懂,第 19 章动手设计时你会快一倍。
材料 A:MVP 版怎么搭(摘要)
| MVP 怎么定的 | |
|---|---|
| 范围 | 要:多轮对话、流式输出 · 不要(先砍):RAG、自建 GPU、工具调用 |
| 全景 | 客户端带着历史 → 薄薄一层编排 → 直接调某个模型厂商的 API → SSE 流式吐字 |
| 成本 | 按调用付费,先不优化——先验证有没有人用 |
材料 B:成熟期「成品地图」要点(摘要)
| 成品地图怎么定的 | |
|---|---|
| 灵魂部件 | 推理服务(GPU)——最贵最稀缺,整套架构都在「喂饱、用满、用省」它 |
| 全景 | 网关(鉴权/限流/维持流式连接)→ 编排层(组装上下文+安全+Agent 循环+计费)→ |
| 省钱三件套 | 连续批处理(GPU 不空转)、prompt 缓存(重复前缀不重算)、模型路由(简单问题给小模型) |
| 死穴 | GPU 被打满→首字延迟飙升;上下文越长单请求越吃显存;成本本身就是瓶颈 |
你的任务(计时 10 分钟)
- 用材料 B,按四步填一张AI 对话产品读图笔记(先别看下面参考答案)。
- 回答对照三问(先自答,再展开答案)。
对照三问:
- 为什么这类系统几乎一定选流式输出(SSE),而不是憋完整答案再返回?
- 为什么说「成本」在这里是第一天就要管的架构议题,而普通网站可以「先上线再优化」?
- MVP 直接调 API,成熟期却要自建 GPU + 连续批处理——是 MVP 错了吗?
参考答案:AI 对话产品读图笔记(示例)
系统名: AI 对话产品(成熟期成品地图)
① 本质
· 一句话: 把一个昂贵的「推理大脑」(LLM)包装成可对话、能流式、能用工具的产品
· 质量属性: 首字延迟(TTFT)极低;生成吞吐高;每千 token 成本越低越好
· 硬约束: GPU 又贵又缺(头号约束);上下文窗口有限;推理是有状态计算(KV cache 吃显存)
② 全景
· 灵魂路径: 网关维持流式连接 → 编排层组装上下文+安全 → 推理服务把多请求拼批喂 GPU → token 一个个 SSE 回传
③ 取舍
· 选了 流式 SSE / 放弃 一次性返回 / 因为 感知延迟比真实总延迟更重要
· 选了 连续批处理+prompt缓存+模型路由 / 放弃 每请求单独算的简单 / 因为 GPU 是头号稀缺资源,成本即毛利
④ 死穴
· 先死在哪: GPU 集群被打满 → 请求排队 → 首字延迟飙升
· 反模式: 当普通 CRUD 网站设计、不做流式、每轮重算全部历史从不缓存、不记 token 账参考答案:对照三问
1. 为什么几乎一定流式? 一次性返回要让用户盯着空白屏幕等十几秒,体验灾难;流式让首字 1 秒内就出,感知延迟骤降。代价是连接管理、重试恢复更复杂——但值。
2. 为什么成本第一天就管? 普通网站「多一次请求几乎不要钱」,这里多生成 1000 字就是实打实的 GPU 成本。不优化(缓存/路由/批处理),毛利直接为负。所以省钱从第一天就是架构议题,不是上线后的优化项。
3. MVP 错了吗? 没错,是约束不同。
| 约束 | 选 |
|---|---|
| 还在验证有没有人用(MVP) | 直接调 API — 最快上线,别自建 GPU |
| 已有稳定流量、成本压毛利(成熟) | 自建 GPU + 批处理 + 路由 — 把单 token 成本打下来 |
先有人用,才谈得上省钱——这正是第 20 章「演进剧本」的主线。
和材料 A(MVP)不一致时怎么说? 先问:现在到底在解决哪个问题? 验证需求 → 调 API 合理;成本压毛利 → 才自建。不是谁错,是约束随阶段变了。
四、课后作业:换一个系统,15 分钟
任选 templates/ 里没读过的一个(建议先在 AI 系统里挑):
- AI Agent / 工作流平台 —— 第 22 章会正向设计它,先读眼熟。
- 模型推理服务 —— 把上面「推理服务」那个框放大特写。
- 想找对照,也可挑一个经典系统(支付、在线票务)感受「AI 系统 vs 经典系统的读图,动作一模一样」。
步骤照旧:
- 合上「关键决策」段。
- 用第一节的读图笔记模板填空。
- 打开模板对照——不一样不要紧,能说清约束不同即可。
🎯 随堂检验
- A从文档开头顺序读到结尾,每一段都不能漏
- B先抓本质(需求/约束) → 看全景与数据流 → 挖关键决策 → 找瓶颈与反模式
- C只看架构全景图,图看懂了就等于读懂了
- A底层用的大模型有多大、多强
- B检索得准不准——有没有把对的资料找出来
- Cprompt 模板写得多花哨
本章小结
- 本章只练逆向读图,产出物是一页读图笔记,不是设计方案。
- 四步 + 三问:本质 → 全景 → 取舍 → 死穴;AI 系统再多盯三个新约束:成本 / 非确定性 / 上下文。
- RAG = 示范:灵魂路径「离线建库 → 在线检索 → 模型照着写」;一句话——RAG 的上限 = 检索的上限。
- AI 对话产品 = 10 分钟练习:半页材料 + 自填笔记 + 对照三问;重点练「MVP 调 API 与成熟期自建 GPU 的差异 = 约束随阶段变」。
- 作业:任选一个模板(建议 AI Agent / 推理服务),15 分钟填笔记。
承上启下:你已经会读别人的 AI 地图了。下一章 19 · 完整设计演练:中等复杂度系统 换你正向画图——用 07 章 的八步,从 0 设计一个「能查单、能退款」的 AI 智能客服:既要管 AI 的新约束(防胡说、烧钱、非确定),又要扛经典硬约束(钱不能错)。读图练眼,设计练手。
💬 评论