文章作者:

黎阳,焦点科技软件开发工程师

李成龙,Zilliz 数据工程师

Milvus (https://milvus.io/) 向量搜索引擎开源半年以来,全球已经有数百家企业或组织用户。焦点科技是一家以 B2B 外贸交易为主营业务的科技公司,也是 Milvus 的用户。

| 应用场景

焦点科技旗下多条产品线的商品搜索服务均由搜索平台支撑。但在信息爆炸的背景下,越来越多的信息以非文本的形式出现,传统基于分词与规则匹配的搜索服务已经满足不了对大量非文本数据的搜索场景。为了拓展业务覆盖场景,提高流量,焦点科技开展了扩展向量搜索服务平台的项目。

在 B2B 电商网站中国制造网中,有效过滤掉重复的“广告式”询价、推销等垃圾询盘对提升询盘质量有很大帮助,垃圾询盘的过滤精度直接影响用户的口碑。而提升询盘质量就等于改善了用户体验,无论买家还是卖家都能获取更真实有效的交易信息,完成更多交易。

传统的垃圾询盘过滤很难通过文本匹配规则产生很好的效果,很长一段时间垃圾询盘过滤都需要靠人工完成,效率低下且耗费人力资源。焦点科技通过 Milvus 建立的向量搜索业务,对已知的垃圾询盘向量进行了底库的建立,每当有可疑询盘产生时就进入向量匹配阶段,根据结果和业务规定的临界值等规则进行判断,智能且自动化地完成垃圾询盘的过滤。

| 关键技术

MinHash

在过去通过人工过滤垃圾询盘的时代中,焦点科技累积下了一定数量的已知的垃圾询盘模板。由于功能需求是寻找与既往询盘以及询盘模板在语句和结构上相似的询盘邮件,不存在语义匹配的需求,因此考虑使用文本字符串相似度计算方法。两个集合的相似度可以使用 Jaccard 相似度进行计算,即两个集合的交并比,但在海量数据的情况下计算两两之间的交并比对计算资源要求很高。考虑到既往询盘量为千万级,对计算实时性要求较高,因此选择使用 MinHash 算法将询盘文本转换为哈希编码来进行最近邻检索。MinHash 算法的主要思想为:(1)一个文本从字符串的角度可以近似看做由字(词)或字(词)的 2-gram 构成的集合。

(2)用相同的随机方式从两个集合中抽取一个元素,两个元素相等的概率等同于 Jaccard 相似度。随机的哈希函数对两个集合中的所有元素进行哈希运算,取两个集合的最小哈希值判断是否相等,重复该操作多次即可近似评估最小哈希值相等的概率,这种方式就是随机抽取的一种实现。

(3)多种哈希函数所计算得到的最小哈希值构成的向量序列即为该集合的MinHash,可作为该集合的哈希编码。计算两个哈希编码之间的欧式距离作为源文本字符串的相似度。

MinHash 本质上是对文本对应的字(词)集合进行了降维,目标是降低 Jaccard 相似度计算的复杂度,并尽可能保持计算精度。

在本例中对询盘文本使用 jieba 工具(https://github.com/fxsjy/jieba)加载业务词表的方式进行分词,ngram 为 1 的方式构建文本对应词集合,采用 200 种不同的哈希编码构建长度为 200 的 MinHash 向量,在目前的业务场景中表现出了较好的近邻检索能力。

Milvus

Milvus 是一款开源的特征向量相似度搜索引擎,具有使用方便、实用可靠、易于扩展、稳定高效和搜索迅速等特点。Milvus 可以对接包括图片识别,视频处理,声音识别,自然语言处理等深度学习模型,为向量化后的非结构数据提供搜索分析服务。

Milvus 的数据处理流程通常有以下几个步骤:

  1. 通过深度学习模型或者其他算法将非结构化数据转化为特征向量;

  2. 将特征向量导入 Milvus 库进行存储并建立索引;

  3. 在 Milvus 中进行搜索,返回检索向量的相似结果。

在垃圾询盘过滤的场景中,通过 MinHash 算法将已知的垃圾询盘数据向量化并导入 Milvus 库,Milvus 对向量进行存储并建立索引,再通过 Milvus 进行搜索即可返回相似向量的结果。另外,提供 Java SDK 和 Docker 部署方式的 Milvus 对开发十分友好,不仅搜索效率高,部署也十分简单。

| 系统实现

作为一个统一的服务接口平台,焦点科技在开发的时候尽量回避了向量搜索对业务的定制,将 Milvus 实例抽象成搜索服务节点,嵌入原有的搜索平台中,当有向量搜索业务场景需求时,则向这些节点建立业务。

在系统构建层面,焦点科技将 Milvus 实例与文本搜索实例放在了同一层级,通过一个业务控制器分别进行向量搜索结果的召回、文本信息回查等流程,上层通过路由分发器进行负载均衡与读写分离的处理。

整个业务流程中大致可以分为三个流程:

(1)向量化流程

在查询客户端中,将待判断的询盘利用 MinHash 算法转化为特征向量。

(2)向量查询流程

查询向量首先进入 Milvus 服务集群,通过在指定的节点上进行临近匹配,召回前 TopK 个向量与向量 ID;

(3)信息回查流程:

业务控制器控制 Milvus 的结果向量 ID 进入文本搜索服务集群中进行相关信息的收集(向量 ID 即相关信息的主键,通过自定义向量 ID 实现)。通过相关信息的分析,从发送地址、身份、是否标记为垃圾询盘模板等多个维度进行分析,如果出现以下两种情况,则可以确定该询盘为垃圾询盘:

  • 如果查询向量匹配到的结果向量多来自同一地址的不同身份或未认证身份;

  • 结果向量中多为已标记垃圾询盘的模板。

当然,此逻辑可被定制,根据不同业务的需求可以增加更多判断逻辑。

未来 Milvus 版本中会加入富文本和高级搜索,那么相关信息可以通过在 document 中带入,不需要回调文本搜索服务来获取,期待早日上线。

| 结语

对于程序员来说,头疼的手撕向量搜索问题迎来了救世主,经过多版本的迭代 Milvus 增加了越来越多的新功能,大大简化了对业务需求实现的难度。Milvus 正在以肉眼可见的速度茁壮成长,在开源的世界开辟自己的地盘,未来可期。

希望 Milvus 在非结构化数据处理的道路上走得更远,为企业带去更多的价值。同时也希望更多志同道合的伙伴加入 Milvus 开源社区,一起参与、见证 Milvus 的成长。

| 欢迎加入 Milvus 社区github.com/milvus-io/milvus | 源码milvus.io | 官网milvusio.slack.com | Slack 社区zhihu.com/org/zilliz-11/columns | 知乎zilliz.blog.csdn.net | CSDN 博客space.bilibili.com/478166626 | Bilibili

treelistview 所有节点失去焦点_垃圾询盘过滤,焦点科技的 Milvus 实践相关推荐

  1. treelistview 所有节点失去焦点_重大福利!中国外交部发布新规 关乎所有海外华人!...

    近日,中国外交部发布两大便民新规,与所有身在海外的中国公民息息相关. 各驻外使领馆将在2月起实现护照全球通办 取消对海外中国公民护照遗失.被盗或损毁后申请补发护照的限制条件 此外,中国与亚美尼亚签署的 ...

  2. treelistview 所有节点失去焦点_球天下-儿皇梦只是一厢情愿 皇马已失去对博格巴的兴趣...

    博格巴与曼联的合约将在本赛季结束之后到期,目前双方的续约谈判陷入了僵持,这也让这名法国球星的未来充满了不确定性.此前,博格巴的一番言论却再次引发了争议. 博格巴在接受采访时表示希望能够为皇马效力.然而 ...

  3. 电脑qq收藏在哪里打开_外贸询盘怎么来?零成本用Linkedin批量开发客户!外贸人收藏...

    前言 做外贸开发国外客户的方法有很多,各种渠道以及方法我往期文章中都有详细干货解读,通过网络寻找客户已经是很普遍很流行的方法,对于网络开发的效果而言,每个公司每个人看法不同.今天介绍一下,怎么零成本利 ...

  4. python二手交易平台代码_PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)...

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  5. Part2_事务与分布式事务原理与实现_沈询_fixed ver—在线播放—优酷网,视频高清在线观看...

    Part2_事务与分布式事务原理与实现_沈询_fixed ver-在线播放-优酷网,视频高清在线观看 Part2_事务与分布式事务原理与实现_沈询_fixed ver-在线播放-优酷网,视频高清在线观 ...

  6. contactform7 ajax,WordPress询盘插件 – Contact Form 7

    WordPress询盘插件是WordPress外贸建站营销推广中最常用的功能之一,是外贸客户最便捷直观.实用高效的询价途径,无需注册会员,无需支付任何费用.WPPOP将通过WordPress表单插件来 ...

  7. 6天5个询盘!新手有效用领英开发外贸客户的六个关键点

    "我去尝试在领英开发客户,最差的结果就是没有直接效果,但至少能成为一个个人形象的展示页,留下属于自己的痕迹.而如果我不去尝试,那我的客户在领英上所能看到的和接触到的,都是我的同行,一定没有我 ...

  8. 询盘回复流程及外贸11步流程

    询盘回复流程: 从事外贸的新手经常在网上寻找各种各样的外贸干货知识.其实,你不仅要关注某个环节的小细节,还要有"宏观"的思维.分过程.分步骤地梳理外贸工作,是外贸工作中十分重要的一 ...

  9. 外贸建站,为什么别人的询盘更多更精准?

    大多企业进行外贸建站的目的就是想要获得更多的精准询盘,但是具体该如何做,大多企业都没有方向,要么就是在网上看各种不系统的文章学着操作,要么就找个建站公司做好网站就不管了,而最终结果都不甚理想.那么怎样 ...

最新文章

  1. C语言在一个有序数组里插入一个元素,使其成为一个新的有序数组
  2. 一、 函数调用栈,执行上下文及变量对象
  3. CentOS7 RedHat7 添加静态路由方法
  4. 通过缓存数据库结果提高PHP性能(转)
  5. C#中全局作用域的常量、字段、属性、方法的定义与使用
  6. 关于Operation 的那些事
  7. wifi分析仪怎么看哪个信道好_游戏工作室用什么路由器好?合理选择组建手机工作室网络...
  8. [笔试题目] 美团2015年9月后端开发工程师笔试题
  9. 如何在ESXi 5.5主机上安装ESXi 5.5客户机
  10. Record of redevelopment of website
  11. Python Interview Question and Answers
  12. (67)Verilog HDL模块条件例化
  13. pythonnumpy矩阵详解_python常用模块numpy解析(详解)
  14. 使用Quartz.Net定时删除Log
  15. MySQL查询GROUP BY日/月/年
  16. 如何使用keil 5 编写 51单片机 工程
  17. 智鼎测评--行测相关
  18. 基于机器视觉技术的表面缺陷检测技术综述
  19. 市场app应用类型分类有哪些?app应用管理
  20. qualcomm QSD MSM APQ区别

热门文章

  1. Spring Cloud 系列之 Nacos 配置中心
  2. 能让你成为更优秀程序员的10个C语言资源
  3. HEVC/H265 HM10.0 分析(一)NALread.cpp
  4. 常见电脑字符编码总结
  5. 「2019纪中集训Day7」解题报告
  6. 发布在线文档【软件=业务+架构+流程+组织.pptx】
  7. Dynamics CRM On-Premise V9安装手记
  8. Delphi语言最好的JSON代码库 mORMot学习笔记1
  9. PHP array_flip() array_merge() array+array的使用总结
  10. 给.net初学者的一些建议(共勉之)[转载]