模型缓存键:提示词相同,结果也可能不该复用
只用用户问题作为缓存键,会把不同模型、不同知识库版本甚至不同租户的结果混在一起。缓存身份必须包含影响输出与访问权限的条件。
问题从哪里出现
只用用户问题作为缓存键,会把不同模型、不同知识库版本甚至不同租户的结果混在一起。缓存身份必须包含影响输出与访问权限的条件。
理解核心机制
把模型版本、提示模板版本、检索索引版本及授权范围纳入规范化描述,再哈希生成键。哈希用于紧凑标识,不会自动提供保密性。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。
import hashlib
import json
def cache_key(model, scope):
payload = {"model": model, "scope": scope, "prompt_version": "v3",
"index_version": "2026-11", "question": "What is RAG?"}
encoded = json.dumps(payload, sort_keys=True, separators=(",", ":")).encode()
return hashlib.sha256(encoded).hexdigest()
assert cache_key("model-a", "team-1") != cache_key("model-b", "team-1")
assert cache_key("model-a", "team-1") != cache_key("model-a", "team-2")
print(cache_key("model-a", "team-1"))适用边界与常见误区
权限撤销、数据删除和 TTL 仍需要独立处理。缓存中若保存个人数据,不能因为键被哈希就忽略访问控制;检索结果变更也应触发失效。
继续练习
列出一次生成的所有可变输入,逐项判断是否进入缓存键或失效规则,并测试权限收紧后的旧结果不可再读。