把 embedding 想成:模型把一句话变成一串数字(向量),并保证意思越近的两句话,向量越接近。这个"数字世界的坐标系"就是向量空间。
1) "升级模型会改变向量空间"指什么
当你把模型从 A 换成 B(哪怕名字很像、同系列版本升级),通常会发生:
- 同一句话的向量值会变(坐标变了)
- 相似度分数分布会变(以前 0.52 的问题,升级后可能变 0.38 或 0.70)
- TopK 排名可能变(原来排第 1 的图表,可能变成第 2/3,甚至掉出 Top3)
2) 为什么会这样
embedding 模型在训练目标、数据、架构、量化方式等任何一点变化,都可能让"坐标系"整体发生旋转/拉伸/重排。
所以旧向量和新向量往往不再处在同一个"可比的空间"里。
3) 对你这个项目的影响(最重要)
你现在做的是:
- 图表元数据 → 向量(存内存索引)
- 用户问题 → 向量
- 两者算 cosine 相似度
如果以后你升级 embedding 模型,但:
- 图表向量还是用旧模型算的
- 用户问题向量用新模型算的
那么相似度就会变得不可靠(因为在"两个不同坐标系"里比较距离)。
即使你两边都换新模型:
- 阈值(比如现在默认 0.45)也可能不再合适
- 命中率/误命中率可能变化
4) "需要回归"是什么意思(这里的回归=回归测试)
升级模型后要做一轮简单验证,确认效果没变差,主要做三件事:
- 重算索引:用新模型把
dns.json的图表向量全部重新算一遍 - 用一批常见问题测试:看 Top3 是否合理
- 重新调阈值:如果整体分数变低/变高,把
CHART_VECTOR_SIMILARITY_THRESHOLD调到合适范围