图像搜索示例
本示例展示了如何结合 TiDB 向量搜索能力与多模态嵌入模型来构建图像搜索应用。
只需几行代码,你就可以创建一个同时理解文本和图像的搜索系统。
- 文搜图:使用自然语言描述你想要的内容来查找宠物照片,例如“毛茸茸的橘猫”
- 图搜图:上传一张照片,根据品种、颜色、姿态等查找视觉上相似的宠物
通过多模态嵌入进行宠物图像搜索
前提条件
开始之前,请确保你具备以下条件:
- Python (>=3.10):安装 Python 3.10 或以上版本。
- 一个 TiDB Cloud Starter 实例:你可以在 TiDB Cloud 上创建一个免费的 TiDB Cloud Starter 实例。
- Jina AI API key:你可以从 Jina AI Embeddings 获取一个免费的 API key。
运行方式
第 1 步:克隆 pytidb 仓库
pytidb 是 TiDB 的官方 Python SDK,旨在帮助开发者高效构建 AI 应用。
git clone https://github.com/pingcap/pytidb.git
cd pytidb/examples/image_search/
第 2 步:安装所需软件包
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r reqs.txt
第 3 步:设置环境变量
- 在 TiDB Cloud 控制台 中,进入 My TiDB 页面,然后点击目标 TiDB Cloud Starter 实例的名称,进入其实例概览页面。
- 点击右上角的 Connect。此时会显示连接对话框,其中列出了连接参数。
- 根据连接参数按如下方式设置环境变量:
cat > .env <<EOF
TIDB_HOST={gateway-region}.prod.aws.tidbcloud.com
TIDB_PORT=4000
TIDB_USERNAME={prefix}.root
TIDB_PASSWORD={password}
TIDB_DATABASE=test
JINA_AI_API_KEY={your-jina-ai-api-key}
EOF
第 4 步:下载并解压数据集
本演示使用 Oxford Pets dataset 将宠物图像加载到数据库中以供搜索。
适用于 Linux/MacOS:
# Download the dataset
curl -L -o oxford_pets.tar.gz "https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz"
# Extract the dataset
mkdir -p oxford_pets
tar -xzf oxford_pets.tar.gz -C oxford_pets
第 5 步:运行应用
streamlit run app.py
打开浏览器并访问 http://localhost:8501。
第 6 步:加载数据
在示例应用中,你可以点击 Load Sample Data 按钮,将一些示例数据加载到数据库中。
如果你想加载 Oxford Pets dataset 中的全部数据,请点击 Load All Data 按钮。
第 7 步:执行搜索
- 在侧边栏中选择 Search type。
- 输入你要查找的宠物的文本描述,或者上传一张狗或猫的照片。
- 点击 Search 按钮。
相关资源
- 源代码:在 GitHub 上查看
