后端结构
/retrieval_api/
├── models/
│ ├── epoch_latest.pt
│ └── cn_clip/
│ ├── ViT-H-14.pt
│ └── clip/
│ └── ...
├── main_corpus.py
├── utils.py
├── config.py
└── ...
说明:epoch_latest.pt,ViT-H-14.pt,retrieval_db_backup.sql.gz 这三个大文件未包含在当前仓库中。其中:
ViT-H-14.pt可由代码自动下载epoch_latest.pt,retrieval_db_backup.sql.gz需要手动进行设备间传输epoch_latest.pt需存放于/surf/api/models/目录下
PostgreSQL数据库:retrieval_db
数据库结构:两大“物化视图”+三组“源表”
- 两大“物化视图”
-
image_corpus: src, id, embedding -
text_corpus: src, id, embedding
- 三组“源表” (共约52万有效metadata,其中119,941文本数据,399,982图片数据,数据量共519,923)
zj_text,zj_image浙江省博物院tw_text,tw_image台北故宫博物院surf_text,surf_image敦煌数据集
数据库部署
备份文件:retrieval_db_backup.sql.gz
目标服务器准备
# 1. 安装 PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
# 2. 创建数据库用户(交互式)并创建数据库
sudo -u postgres createuser --interactive
sudo -u postgres createdb retrieval_db
# 3. 导入数据(先解压备份文件,然后导入)
gunzip -c retrieval_db_backup.sql.gz > retrieval_db_backup.sql
psql -h localhost -U postgres -d retrieval_db < retrieval_db_backup.sql
# 可选:导入后删除中间的 SQL 文件以节省空间
rm retrieval_db_backup.sql/models/
├── epoch_latest.pt # checkpoints
└── cn_clip/ # CN-CLIP 预训练底座
├── ViT-H-14.pt
└── ...
后端推理用时(编码+归一化+similarity search,已经过ivfflat优化)
image_to_text: ~0.17stext_to_image: ~0.13s
CN-CLIP 预训练底座部署:参考cnclip官方说明OFA-Sys/Chinese-CLIP: Chinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.
虚拟环境配置
- 确保 Python 环境有 torch、cn_clip、pgvector、psycopg2 等依赖
- 可参考requirements.txt
路径设置
- 请在启动前检查修改文件路径,如checkpoints路径
command
- 启动服务:
uvicorn main_corpus:app
