一句话定义:延迟预算(Latency Budget)就是先定下「用户最多愿意等多久」这个总时长,再把它切分给一次请求链路里的每个环节,让每一段都清楚自己最多能花多少毫秒。
为什么需要它
用户说「太慢了」,这句话没法直接执行。因为一次 AI 请求并非单一事件,而是一连串环节:网络往返、查询改写、检索(Retrieval)、重排(Rerank)、模型首字、逐字生成。整体慢,往往只有一两个环节是主要原因,其余环节并未超时。
打个比方:你从家去机场,全程 90 分钟,依次是打车 40 分钟、值机 30 分钟、安检 15 分钟、走到登机口 5 分钟。每一段都有上限,任何一段堵住,都得从别处抢时间,要不就误机。延迟预算就是给一次请求排的这张时间表。
拆到每一段
假设你的场景是「用户最多忍 2 秒」(下面只是示意数字,真实值以你的产品和用户为准):
| 环节 | 示意预算 | 超支后的典型症状 |
|---|---|---|
| 网络与鉴权 | 100 ms | 点了没反应 |
| 查询改写、意图识别 | 150 ms | 首字迟迟不来 |
| 检索 + 重排 | 300 ms | 出字前的空白期变长 |
| 首字延迟(TTFT,Time To First AI 词典:Token">Token) | 600 ms | 用户开始怀疑卡死 |
| 逐字生成 | 剩余约 850 ms | 字一个个地出现,读着费劲 |
关键是把「首字延迟」和「总时长」分开看。开启流式输出(Streaming)之后,用户感知的「快」主要由首字决定;只要出字速度超过人的阅读速度,后面再生成几秒也不难受。反过来,总时长再短,首字卡住 3 秒,体感就是「卡了」。
和几个相邻概念的区别
- 超时(Timeout):单点红线,一旦越线就报错。预算是全局分配,要求各段时间加总不超标,通常还要留 20% 缓冲。
- SLO / SLA(服务等级目标 / 服务等级协议):对整体时延分布与成功率的承诺;预算是这份承诺之下的内部分工表。
- 性能优化:预算是先立约束再优化,避免「每段都快了一点,总量没变」。
对从业者的意义:链路里每加一步(多路检索、重排、Agent 多轮工具调用),都要问一句「这步花的是谁的预算」。凡是会突破总预算的设计,要么砍掉,要么改成异步或流式。
对普通人的意义:为什么有的 AI 先沉默再哗哗出字,有的上来就一个字一个字往外蹦?你看到的差别,多半不是模型强弱,而是这张预算表怎么填的。
