问题出现得很突然,日志倒是留得挺全。gptcache 0.1.44,原来用 OpenAI embedding,换成 bge-m3 本地模型后启动报维度不匹配,旧的缓存目录还留在原位置。
刚开始盯着「config 里的 dimension 没有同步」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。缓存目录里存的是旧模型的向量。另一种情况是embedding 换了但相似度评估器没换。
还有一种情况,多进程各自初始化,缓存被写坏。
上来先清掉旧缓存目录
rm -rf ~/.cache/gptcache
随后确认新模型的输出维度
python -c "from gptcache.embedding import Onnx;e=Onnx(model='bge-m3');print(e.dimension)"
初始化缓存并跑一次命中
python -c "from gptcache import cache;cache.init();print('ready')"
第二遍相同问题看是否命中
python ask_cached.py --question '退货怎么走' --repeat 2
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
改完先别撤,确认这几项。服务能正常启动,第二次相同问题命中缓存,预热后命中率达到 30% 以上。
换 embedding 等于换了一套坐标系,旧向量必须整体作废,不存在增量兼容。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
