业务背景
珠宝等非标商品需要同时关注外形、语义和颜色。检索工程既包含图片处理、模型推理与向量存储,也需要把相似候选接回估价、商品发现与历史成交业务。
关键问题
- 多个特征模型的处理节奏不同,需要协调 CPU 预处理、GPU 推理和数据持久化。
- 商品图片新增、更新与失效后,元数据与向量索引需要持续同步和校验。
- 多张图片、多路向量召回,需要聚合到货品并兼顾相似度与业务可用性。
我的实现与取舍
- 实现 Python 图像处理与向量提取流水线,使用 DINOv2、CLIP / CNCLIP 与颜色特征;结合抠图、CPU 预取和 GPU 批处理。
- 对 CLIP 推理的 CUDA OOM 拆分失败批次重试,复用模型与连接,避免重复加载。
- 实现 Milvus / Zilliz upsert、增量同步、失效向量删除、自适应批量和重试;使用轻量 outbox 与 StarRocks 衔接回写。
- 实现多路召回与 RRF 融合,按货品聚合去重;向外提供检索接口,由 Rails 结合品类、状态与估价业务调用。
落地结果
- 形成图像 → 特征向量 → 向量数据库 → 检索服务 → 交易业务的完整链路。
- 将模型推理、数据同步、检索排序与生产业务维护连接起来。
- 持续维护向量生成与检索版本,使用一致性检查和对照评估验证变更。
欢迎深入交流
可以深入聊:DINO 与 CLIP 特征差异、向量归一化、Milvus 索引、多路召回与 RRF、GPU OOM、增量同步与最终一致性。