48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
---
|
||
title: "Prefix Matching Invariant(前缀匹配不变性)"
|
||
created: 2026-06-29
|
||
updated: 2026-06-29
|
||
type: concept
|
||
tags: [prompt-caching, optimization, constraint]
|
||
sources: [[prompt-to-loop-engineering-2026]]
|
||
confidence: high
|
||
---
|
||
|
||
# Prefix Matching Invariant
|
||
|
||
> [[prompt-caching|Prompt Caching]] 的铁律:缓存按字节从头进行哈希校验,前缀中任何微小更改都会导致该位置往后的所有缓存集体失效。
|
||
|
||
## 机制
|
||
|
||
1. 模型缓存已计算完毕的上下文前缀(KV Cache)
|
||
2. 下次请求前缀完全一致 → 命中缓存,跳过 Prefill 阶段
|
||
3. 成本降低约 90%,延迟降低最高 85%(Anthropic, 2024)
|
||
|
||
## "从静到动"分层排列
|
||
|
||
为最大化缓存命中率,上下文必须严格按以下顺序排列:
|
||
|
||
```
|
||
静态 ──────────────────────────────────────→ 动态
|
||
[工具定义] → [系统提示] → [历史对话] → [动态消息]
|
||
```
|
||
|
||
## 反直觉设计要求
|
||
|
||
**动态全局变量不能插在开头的系统提示中**:
|
||
|
||
- ❌ `System: "今天是 2026-06-29。你是..."` → 日期变化击穿整段缓存
|
||
- ✅ 将日期作为普通消息挂在对话流**最末尾**,保证前缀稳定性
|
||
|
||
## 缓存经济学
|
||
|
||
参考阿里云百炼计费规则:首次创建缓存按输入 100% 计费,后续命中仅需 20%。
|
||
|
||
**N > 3 即可产生净收益**(同一前缀在被清理前复用第 2 次开始省钱)。高频迭代 Agent 的极低边际成本即源于此。
|
||
|
||
## 相关概念
|
||
|
||
- [[prompt-caching|Prompt Caching]]
|
||
- [[context-engineering|Context Engineering]]
|
||
- [[prompt-layering|提示分层]]
|