专栏首页Reinvent Data Science垃圾询盘过滤,焦点科技的 Milvus 实践

垃圾询盘过滤,焦点科技的 Milvus 实践

文章作者:

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

李成龙,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 的成长。

本文分享自微信公众号 - ZILLIZ(Zilliztech),作者:黎阳 & 李成龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Milvus 实战|生物多因子认证系列 (一):声纹识别

    声纹识别(又称说话人识别)是从说话人发出的语音信号中提取声纹信息,并对说话人进行身份验证的一种生物识别技术。简单来说,声纹识别技术可以“确认说话人是谁”。我们说...

    ZILLIZ
  • Milvus 分布式向量检索-Mishards架构介绍

    向量搜索引擎 Milvus 旨在帮助用户实现海量非结构化数据的近似检索和分析。单个 Milvus 实例可处理十亿级数据规模,而对于百亿或者千亿规模数据的需求,则...

    ZILLIZ
  • 视频|10分钟讲清楚Milvus 以图搜图、以图搜视频

    结合成熟的深度学习模型, Milvus 向量搜索引擎能快速的将更多的技术落地到各种的 AI 场景当中。 今天我们要和大家介绍的是 Milvus 在计算机视觉领域...

    ZILLIZ
  • jquery 优化

    用户5760343
  • C++野指针及c++指针使用注意点

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    acoolgiser
  • c语言基础学习07_关于指针的复习

    =============================================================================

    黑泽君
  • Angular4记账webApp练手项目之二(在angular4项目中使用Angular WeUI)

    安装后还需要引用weui 样式以及我们的font-awesome图标苦,在我们项目index.html中引用

    易兒善
  • 双重差分模型

    今天给大家介绍一种比较常用分析方法。叫做双重差分法。啥叫个双重差分法呢?我们先不管这个什么法,我们直接来看例子。

    张俊红
  • 从贝叶斯定理到概率分布:综述概率论基本定义

    选自 Medium & analyticsvidhya 本文从最基础的概率论到各种概率分布全面梳理了基本的概率知识与概念,这些概念可能会帮助我们了解机器学习或...

    小莹莹
  • 从贝叶斯定理到概率分布:综述概率论基本定义

    选自 Medium & analyticsvidhya 机器之心编译 机器之心编辑部 本文从最基础的概率论到各种概率分布全面梳理了基本的概率知识与概念,这些概念...

    机器之心

扫码关注云+社区

领取腾讯云代金券