# LanceDB 向量表版本：更新嵌入后回到旧版本，复现上次检索结果

已实际运行LanceDB临时表创建/更新/checkout旧版/回到latest，核对A向量及旧版检索；未运行embedding，未修改业务库。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 创建原创两行向量表

A的向量朝[1,0]，B朝[0,1]，先记录创建后真实version。不要硬编码“第一版一定1”而忽略操作产生的新版本。

## 2. 查询并保存初次结果

使用固定query=[1,0]检索，记录ID、距离和版本。此向量是作者数值，不是embedding模型输出。

## 3. 更新A向量并记录新版本

把A更新到[0,1]，保存实际操作及新version，保留更新前内容。结果变化必须和写入版本关联。

## 4. checkout到旧版本查询

使用LanceDB真实checkout旧版本，核对A向量恢复旧视图并复现原检索。checkout是版本视图，不是宣布后来数据已删除。

## 5. 回到latest核对新向量

执行checkout_latest或当前对应接口，确认新向量仍在。若要永久恢复旧内容，另行使用文档支持的restore并理解新版本后果。

## 6. 处理版本清理边界

只在测试表操作；不要在未备份生产表上清理old versions。旧版本被清理后可能不可回查，不能承诺无限历史。

## 7. 交付版本和向量回读

保存前后版本ID、实际查询与距离。包内本地LanceDB测试独立临时目录运行，不修改业务库、不下载embedding模型。

## 官方依据

- LanceDB 官方文档或源码：https://lancedb.com/docs/tables/versioning/
