京东-规模图像检索系统的挑战与实践-2020.76-34页_2mb
报告摘要
大规模图像检索系统的挑战与实践总结
核心内容
本文档主要介绍了大规模图像检索系统所面临的挑战,以及京东商城所采用的Vearch系统在该领域的实践与应用。重点讨论了图像检索技术在电商拍照购和人脸识别等场景中的具体实现方式,并对Vearch的架构、功能特点及性能进行了分析。
主要观点
1. 大规模图像检索任务所面临的挑战
- 高维特征向量的存储与计算:传统数据库难以高效处理高维向量数据,而深度学习模型能够一次性提取高维特征,便于对事物进行唯一刻画。
- 相似性搜索需求:在海量数据中快速找到与目标向量相似的其他向量,是图像检索系统的核心问题之一。
- 缺乏通用的向量数据库:目前尚无广泛适用的向量数据库支持,需要专门的解决方案。
- 实时性与扩展性:系统需要支持实时查询和数据的横向弹性扩展,以适应大规模数据处理需求。
关键信息
2. Vearch原理解析
- 支持的功能:
- 十亿级向量的存储、计算和查询。
- 实时查询。
- 内存与磁盘双存储支持。
- 字段与标签过滤。
- 技术特点:
- 实时向量索引:通过数值字段范围过滤与字符串字段标签过滤提升性能。
- 分布式架构:支持多节点部署,包括Master、PS(Parameter Server)、Router等组件。
- 多索引方式:包括IVFPQ(适用于亿级数据)、HNSW(适用于千万级数据,查询精度高)、二进制索引(处理unit8数据)。
- 自研Gamma引擎:提供高性能的向量检索能力。
- 使用方式:
- 提供RESTful接口和Python SDK。
- 支持算法插件服务,便于集成深度学习模型。
实践应用
3. Vearch在电商拍照购场景中的应用
- 背景:用户通过图片寻找相似商品,图片是唯一信息来源。
- 流程:
- 创建引擎:用于存储和管理向量数据。
- 创建表:定义表结构,包括字段(如
image_id和feature)。 - 插入数据:将训练好的模型(如ResNet50)提取的特征向量插入到数据库中。
- 查询:通过相似性搜索,快速找到与目标向量最接近的图像。
4. Vearch在人脸识别中的应用
- 背景:在人脸识别场景中,需要高效处理大规模特征向量数据。
- 性能对比:
- LFW:准确率0.999,TAR@FAR-BF 0.998@1e-4。
- CALFW:准确率0.960,TAR@FAR-BF 0.930@1e-4。
- AgeDB-30:准确率0.982,TAR@FAR-BF 0.971@1e-4。
- Vggface-1M:准确率0.97,TAR@FAR-BF 0.952@1e-4,PQ-search精度下降1.5%。
- 优势:
- 支持分布式部署。
- 支持特征压缩。
- 精度高、速度较快。
- 支持字段过滤和实时索引。
- 具有良好的扩展性。
性能与效果评测
- nprobe实验:展示了不同索引方式在不同数据规模下的效果。
- 集群实验:在大规模CPU服务器集群上测试了Vearch的性能表现。
- 召回率对比:
- VGG 1M:
- Recall@1: 0.9536
- Recall@10: 0.9582
- Recall@100: 0.9585
- VGG 10M:
- Recall@1: 0.9272
- Recall@10: 0.9464
- Recall@100: 0.9468
- VGG 1M:
Vearch的部署方式
- 节点部署:
- Master节点:运行在192.168.1.1和192.168.1.2,负责管理与协调。
- PS节点:运行在192.168.1.3和192.168.1.4,负责存储与计算。
- Router节点:运行在192.168.1.5,负责接收查询请求并分发。
- 配置文件示例:
- 全局配置:
[global] name = "vearch" data = ["data/"] log = "logs/" level = "debug" sign_key = "vearch" skip_auth = true - Master配置:
[[masters]] name = "m1" address = "192.168.1.1" api_port = 8817 etcd_port = 2378 etcd_peer_port = 2390 etcd_client_port = 2370 - Router配置:
[router] port = 9001 skip_auth = true - PS配置:
[p8] rpc_port = 8081 raft_heart_interval = 200 raft_retain_logs = 10000 raft_replica_concurrency = 1 raft_snap_concurrency = 1
- 全局配置:
总结
- 实时快速:Vearch支持数亿级数据的毫秒级搜索与实时查询。
- 方便维护:支持多备份、弹性扩展,便于系统维护与数据安全。
- 灵活部署:通过一键API调用实现端到端插件集成,部署灵活。
- 场景广泛:适用于图片、文本、视频、音频等所有可转化为向量的搜索场景。
参考链接
- Vearch GitHub地址:https://github.com/vearch/vearch
- Vearch官方文档:https://vearch.readthedocs.io/zh_CN/latest/overview.html
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载