技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】( 二 )


Vearch整体架构如下:
分为三个组件:Master , Router , PartitionServer
Master:负责schema管理 , 集群级别的源数据和资源协调 。
Router:提供RESTful API: create、delete、search、update; 请求路由转发及结果合并 。
PartitionServer(PS):基于raft复制的文档分片;Gamma向量搜索引擎,它提供了存储、索引和检索向量、标量的能力 。
Vearch功能简介
支持CPU与GPU两种版本 。
支持实时添加数据到索引 。
支持单个文档定义多个向量字段, 添加、搜索批量操作 。
支持数值字段范围过滤与string字段标签过滤 。
支持IVFPQ、HNSW、二进制等索引方式 。
支持内存、磁盘两种数据存储方式 , 支持超大数据规模
自研gamma引擎 , 提供高性能的向量检索 , 同时IVFPQ倒排索引支持compaction , 检索性能不受文档更新次数的影响
基于raft协议实现数据多副本存储
支持内积(InnerProduct)与欧式距离(L2)方法计算向量距离
Vearch支持如下三种使用方式 , 同时支持分布式
Restful API
Python SDK
Plugin
Vearch的相关性能与效果测评
下面的性能测评有助于我们在实践过程中根据自己的使用场景选择合适的参数 。
Nprobe实验 , 由下图可知 , recall在10左右 , recall与qps都能得到很好的效果 。 开源系统默认值为10 。

技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】
本文插图

IVFPQ检索模型相关对比实验
Ncentroids实验 , IVFPQ是适合亿级别数据的检索方式 , 检索时会提前对数据库里的数据聚类 , Ncentroids是聚类的质心个数 , 大家可根据自己的使用场景及数据量手动设置如下指标 。

技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】
本文插图

IVFPQ检索模型相关对比实验
分布式测试实验 , 不同线代表的是不同数据级别 , 绿色代表是最大的亿级别的数据 , 蓝色代表500MB的数据量 , 红色代表100MB数据量 , 测试模型是VGG , 测试集群为三台Master , 三台Router , 三台partition 。 虚线部分是采用过滤字段后的效果 , 可以看到QPS提高2.5倍 。 故在设定数据表时 , 如有额外可利用的字段 , 一定要建进去 , 后续提升搜索性能 。

技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】
本文插图

大规模CPU服务器集群测试
下图是不同量级数据集在相关算法上的效率,从测评结果来看 , vearch不论在大数据集还是小数据集上 , 都有较高召回率 , 表现都优于其他检索算法 。

技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】
本文插图

Vearch在深度学习场景中的实践
下文结合三个实践场景详细说明vearch的三个使用方式 。
Vearch的安装:
Vearch的github地址:https://github.com/vearch/vearch
Vearch使用文档:https://vearch.readthedocs.io/zh_CN/latest/quick-start-guide.html
Vearch可通过编译的方式使用restful API接口 , 简单单机验证型场景可通过
Pip install vearch安装 , 编译完成后 , 配置如下配置文件:
执行命令:./vearch -conf config.toml , 同时启动master , ps , router机器

技术编程|京东高级算法工程师34页PPT详解基于分布式向量检索系统Vearch的大规模图像搜索【附PPT下载】
本文插图

3.1 Vearch和resnet构建图像搜索引擎
针对人脸识别场景 , 基于resnet50跟vearch四步搭建人脸识别搜索系统 。 需要提前训练并已部署好的图片特征向量提取模型resnet50 , 准备好人脸数据库 。


推荐阅读