Skip to content
阅读进度

迁移验证为什么不能只比导出记录数量? ​

返回 工程项目复盘 目录

标准回答 ​

记忆迁移不能只比较记录数,因为 EachOf 中一条记忆的含义不仅是文本,还包括来源、版本、依赖关系、失效状态和可见范围。

比如一条结论在原实例已经因为来源纠正而失效。迁移时即使文本和向量完整搬过去,如果失效标记或依赖关系丢了,它就可能在新实例的当前查询中重新出现。记录数完全相同,使用语义却已经变了。

所以我做跨实例小样本验证时,关注迁移前后同样查询在当前视图和历史视图中的结果是否一致,并检查依赖和失效状态是否保留。当前视图要继续排除不该使用的内容,历史视图则要保留有权限的追溯能力。

如果目标环境更换了 Embedding 模型或维度,还需要评估是否重建向量,不能把原有向量直接当作通用格式。我的现有结果属于小样本一致性验证,不代表已经完成任意规模的无损迁移或零停机升级。

关键机制 ​

  • 按来源与依赖关系恢复,处理标识映射和引用完整性;依赖边遗漏可能使过时结论重新变得可见。
  • Embedding 模型或维度变化时,需要明确是否重建向量以及如何保持版本关系,不能无条件复用。
  • 权限、时间语义、删除或失效标记和缓存策略都需要验证;小样本通过不代表大规模迁移已验证。

通俗例子 ​

一条失效结论的文本被成功导入,但失效状态没有迁移,目标实例的当前查询又返回它,这就是语义不一致。

追问与回答 ​

校验和一致还不够吗? ​

校验和能证明被校验的字节一致,但查询结果还依赖索引、权限、配置和引用关系。例如文本相同,目标实例的作用域映射却错了,仍然可能出现越权或查不到。因此我会同时检查数据完整性和功能语义:同一身份、同一查询、同一视图下,迁移前后应该得到一致的可见结果。

迁移失败怎样恢复? ​

如果设计生产迁移,我会先保留源实例作为恢复依据,在独立目标环境导入并校验,通过后再切换;失败时不让不完整的目标实例承担正式流量。对于大规模数据,还需要分批、检查点和可重复执行的导入过程。这里是我对恢复方案的设计回答,当前已确认完成的是小样本验证,不能把断点续传或自动回滚说成已经验证过的功能。

易混淆点 ​

不要把小样本验证讲成无损全量迁移或零停机升级;材料没有提供这类证据。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。