Skip to content

Instantly share code, notes, and snippets.

@hewumars
Last active June 21, 2022 12:26
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hewumars/c0b6d0eabada06a924f65cad57c37eaa to your computer and use it in GitHub Desktop.
Save hewumars/c0b6d0eabada06a924f65cad57c37eaa to your computer and use it in GitHub Desktop.
1. 以图搜图2.0版本方案

以图搜图2.0版本方案

1.以图搜图2.0架构图

先通过 Milvus 进行特征值搜索,返回 top 2048条最相似的记录,然后根据特征值ID从Redis 查出相关联结构化信息,如900记录ID+特征值ID+时间+地点等<120字节,进行二次条件过滤,达到10亿级数据 10秒内返回。

2.以图搜图2.0性能

2.1 使用Milvus进行特征值检索性能如下

序号 数据量 特征长度 索引 mProb 耗时 占用内存 硬盘空间
1 1亿 256 IVF_SQ8 128 600ms 28.7G 120.4G
2 10亿 256 IVF_SQ8 128 6000ms 287G 1204G

2.2 使用 Redis 存储特征值 ID 与 结构化数据关联,进行结构二次过滤Redis性能测试如下所示:

序号 数据量 key个数 耗时 占用内存 硬盘空间
1 1亿 8192 127ms 12G 12G
2 10亿 8192 1270ms 120G 120G

2.3 10亿数据以图搜图方案配置如下,按照1天1000w过车辆数据估算,平均1条过车图片产生2条记录(包括非标车和行人),支持检索时间在50天

组件 配置
操作系统 Centos7.8
cpu Intel Xeon Gold 5118*2
内存 128G*4
硬盘 SSD 2T

3.Milvus相似度搜索引擎

特征 说明
异构计算 支持用GPU 搜索向量和建立索引提升性能。 单台通用服务器上完成对TB级数据的毫秒级搜索。 动态数据管理。
支持主流索引工具和向量相似度计算方法 集成了 Faiss、NMSLIB、Annoy 等向量索引库。 支持基于量化的索引、基于图的索引和基于树的索引。 支持包括欧氏距离 (L2)、内积 (IP)、汉明距离、杰卡德距离等。 Prometheus 作为监控和性能指标存储方案, Grafana 作为可视化组件进行数据展示。
近实时搜索 插入Milvus的数据默认在1秒后即可被搜索到。
支持分布式 可以采用Mishards构建分布式应用
标量字段过滤 可以对标量数据进行过滤,增强搜索的灵活性(通过分区)。

Milvus 服务为主从式架构:在服务端,Milvus 由 Milvus Core 和 Meta Store 两部分组成:Milvus Core 存储与管理 Embeddings 和标量数据。Meta Store 存储与管理 SQLite 和 MySQL 中的元数据,分别用于测试和生产。在客户端,Milvus 提供了基于 Python、Java、Go、C++ 的 SDK 和 RESTful API。

4.以图搜图服务流程

全局特征+局部特征检索业务逻辑上存在2种处理模式: 全局特征提前提取+局部特征提前提取,局部特征长度>=全局特征长度*(4-8),存储或者内存需要扩大1个量级,但是比对效率很高(<1s)

全局特征提前提取+局部特征临时提取,通过全局特征检索返回8092个相似对象,再对8092个对象临时提取局部特征(<60s)

5. 遗留问题:
 建立特征值索引,会造成一定程度检索精度损失。  先做特征值检索,再进行卡点和时间过滤,会造成一定程度检索精度损失。  最大支持10亿特征值数据,超过10亿数据需要进行循环覆盖  分布式设计方案  利用milvus进行基于特征值的技战法分析

@chongaxiaopenzai
Copy link

全局特征提前提取+局部特征提前提取,局部特征长度>=全局特征长度*(4-8),存储或者内存需要扩大1个量级,但是比对效率很高
这里特征提取有什么比较好的算法和思路吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment