应用场景
图片识别
以图搜图,通过图片检索图片。具体应用例如:人脸检索,人体检索,和车辆检索,以及商品图片检索,人脸支付等
视频处理
针对视频信息的实时人脸检索和轨迹跟踪
自然语言处理
基于语义的文本检索和推荐,通过文本检索近似文本。
声纹匹配,音频检索。
文件去重,通过文件指纹去除重复文件。
典型架构
Milvus做特征向量检索时典型应用架构如下:
非结构化数据(图像/视频/文字/音频等)首先通过特征提取模型产生特征向量,然后存入Milvus数据库系统。查询的时候,待查询的非结构化数据,也需要通过特征提取模型,提取特征向量。然后用该向量到Milvus中已存入的向量集里,查询匹配度最高的向量集合。最后,使用返回的向量ID,找到对应非结构化数据,结合上层应用,实现对应功能。
当前商业银行竞争日趋激烈,对客户资源的争夺已由产品导向型转化为服务导向型。越来越多的银行希望通过定制化的个性服务来提升客户体验。运用人脸搜索可以很好地完成对客户的识别和精准信息搜索。当某位客户进入营业网点后,人脸搜索帮助工作人员快速判断客户是否为该行现有客户,准确获取客户姓名、年龄、产品购买、交易流水、业务习惯等信息,进而有针对性地为客户提供个性化服务。
用户需求
VIP 客户通知
VIP 人群库中保存的是 VIP 客户的人脸特征,摄像头提取的人脸都要与 VIP 人群库中的人脸进行对比。一旦通过对于发现了 VIP 客户,系统需要给出通知。
以脸搜档
摄像头提取的人脸都会与客户库中的人脸特征进行对比,通过人脸找到关联的证件 ID,进而找到个人的所有信息。
实现方案
人脸获取设备:摄像头拍到人脸图片后,把图片发到特征向量提取设备。
应用层
- VIP 客户通知:收到人脸的特征向量后,会发往人员特征向量库比对,如果发现匹配度较高的向量,则发出通知。
- 以人脸查客户信息:在客户信息库中,通过检索人脸 ID,找到匹配度高的相关人脸,然后再去 MySQL 中把对应人员的所有信息展示出来。
数据层
普通客户库
向量库,保存上亿条人脸特征数据,数据会有少量更新。每个摄像头拍到的人脸都需要与人员库中的人脸进行查询对比,查询率要求达到1000 QPS,允许批量查询。
客户信息库
结构化数据库,以 MySQL 存储,存储以个人 ID 号为主键的个人信息。
基础设施
Milvus 实现向量数据的存储
MySQL 实现结构化数据存储
MinIO 实现非结构化数据(人脸图片)存储
案例 2 - 个性化推荐系统
背景
互联网时代个性化推荐已经渗透到人们生活的方方面面,例如常见的“猜你喜欢”、“相关商品”等。目前很多成功的手机 APP 都引入了个性化推荐算法,实时精准地把握用户兴趣,推荐他们最感兴趣的内容。例如,新闻类的有今日头条新闻客户端、网易新闻客户端等;商品广告类的有拼多多、微信等。Milvus 向量分析可以帮助您实现上述个性化推荐系统。
基于用户画像推荐个性化内容
实现方案
以个性化广告内容推荐为例,Milvus 实现架构如下:
具体实现步骤为:
分析用户数据,找出关键词,构建相应用户画像。
将用户关键词转换为向量,并将它们导入 Milvus,得到用户特征向量。
基于用户特征向量,结合逻辑回归模型,将用户感兴趣的广告推荐给用户。
1)Milvus 可以从互联网检索出前100条用户没有浏览过的广告,但是这100条广告却是该用户最感兴趣的广告。 2)从这100条广告中提取每条广告的关键词和点击率。 3)根据逻辑回归模型(该模型来自于用户以往的浏览的历史记录中),将用户感兴趣的广告推荐给用户。
背景
为了方便买家更好地了解商品,电商卖家通常需要提供商品照片、标注商品类别和属性。随着商品种类的增加,将积累大量的图片素材。如果不能很好地管理这些图片,则容易出现找不到之前已经准备好的图片,需要重新拍摄的情况。
用户需求
管理商品图片。根据关键词,对相似图片进行多模搜索。比如,搜索与目标图片最相似,且最近畅销度最高的所有商品图片。
Milvus 主要通过以下步骤实现商品属性提取与多模搜索:
将商品图片转化为向量。
连同其它商品数据如价格、上市日期、卖出件数等结构化数据一并存入 Milvus。
启动多模检索,并指定搜索范围为“卖出件数最多的商品”。
在最畅销商品图片中中搜索出相似度最高的图片。
案例 4 - 视频去重
背景
如今,在线商品交易已经成为人们购物的日常,在诸如淘宝、咸鱼等商品交易平台上,卖家可以通过商品视频来更全面直观地向顾客展示商品。但与此同时也出现了一些视频拷贝、抄袭等不好的现象。其中一种解决方案时通过向量检索视频相似性,进而判断视频是否重复。
以二手商品交易平台闲鱼为例,根据其当前商品规模及业务发展的预估,闲鱼向量检索系统需支持检索亿级别平均时长为20秒,每秒向量维度是1024维的视频。
用户需求
去除重复视频
实现方案
视频去重本质是高维向量检索,Milvus 主要通过以下步骤实现:
视频向量化
将视频数据按照一定的算法转换为向量,转换算法决定了向量表达原始视频数据的准确性。
计算向量距离
将视频转化为向量之后,计算视频的相似性就相当于计算向量的相似性。可以通过计算夹角余弦、欧式距离和向量内积等方式计算向量间的距离。