# LanceDB 图片语义搜索：给原创图库建图像嵌入，用文字找构图而非文件名

已生成原创颜色/形状/位置图库并审计检索输入；未下载OpenCLIP权重或执行语义图片搜索，目标脚本单独提供。

## 运行

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

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

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

## 1. 生成三个原创构图素材

red-left、right-blue、center-green分别用颜色、形状和位置区分。所有素材是程序原生绘制，可自由复现实验，无第三方图片冒用。

## 2. 把文件名检索列为负例

文件名red命中不能证明CLIP理解构图。正式测试可重命名为随机ID，仍保留作者构图标签作人工真值。

## 3. 确认OpenCLIP依赖和权重位置

检查LanceDB官方open_clip嵌入函数的模型/预训练配置，权重放用户指定外盘。本文没有下载或运行模型权重。

## 4. 用同一编码器建立图像向量

在目标环境导入实际图片，让表的图片字段与向量函数绑定。不要拿手工二维向量替代图像嵌入后称为CLIP实测。

## 5. 用英文描述发文本检索

相同跨模态编码器生成query向量，保存实际top-k、距离和模型版本。位置关系是难点，结果差也必须保留。

## 6. 检验改名和相近构图反例

重命名图片再检索，加入左右互换或同色不同形状，检查结果是否真正依据图像。不能只展示恰好成功的一条。

## 7. 交付图像及真实检索回执

包内包含原创素材与可配置目标脚本，真实embedding和结果保持未测；只有跑过目标模型后才能宣称文字找图成立。

## 官方依据

- LanceDB 官方文档或源码：https://raw.githubusercontent.com/lancedb/lancedb/main/python/python/lancedb/embeddings/open_clip.py
