专栏首页Reinvent Data ScienceMilvus x Lucidworks 快速构建语义检索

Milvus x Lucidworks 快速构建语义检索

语义检索 [1](Semantic Search) 是能帮助你的客户或员工找到正确的产品或信息的绝佳工具,它甚至可以检索到一些难以被索引的信息,从而获得更好的结果。即便如此,倘若你所部署的方案没有速度优势,那也无济于事。如果系统响应查询请求的速度非常缓慢,客户或员工可没有耐心干等着,更不用说可能还有其他上千个查询请求在同时发生。

如果低效的语义检索难以胜任,那么如何进行高速的语义检索呢?

幸运的是,Lucidworks 热衷于解决此类问题。最近,我们测试了一个中等规模的集群(详情请看下文),针对逾百万文档的集合,可达到每秒 1,500 RPS(每秒请求率),平均响应时间约 40 毫秒。这个速度可以说是非常可观了。

执行语义检索

为了让机器学习达到闪电般快的速度,Lucidworks 通过向量搜索的方法执行语义检索,由两个关键部分组成。

第一部分:机器学习模型

首先,你需要将文本编码为特征向量。文本可以是产品说明、用户搜索查询指令、问题,甚至是问题的答案。训练语义模型对文本进行编码,语义上相似的文本被编码为数值上彼此“接近”的向量。为了支持每秒可能出现的数千个或更多的客户搜索或用户查询,该编码步骤需要快速完成。

第二部分:向量搜索引擎

其次,你需要一种能快速找到客户搜索或用户查询的最匹配结果的方法。前文中的模型已经将文本编码为特征向量。接着,将这个向量与目录或问答列表中的所有特征向量进行比较,找到与之最匹配的向量,即与查询向量“最接近”的向量。为此,一个能迅速高效地处理所有这些信息的向量引擎必不可少。引擎中可能包含了数百万个向量,而你实际上只需要其中匹配度最高的二十个左右。当然,它每秒需要处理约一千条此类查询。

为了解决这些难题,我们在 Fusion 5.3 版本[2]中添加了向量搜索引擎 Milvus[3]。Milvus 是一款开源软件,拥有极高的搜索速度。Milvus 采用的是 Facebook AI Similarity Search[4](FAISS,即 Facebook 人工智能相似性搜索)开源库,Facebook 在其自己的机器学习计划的生产中使用的也是这一技术。如有需要,它甚至可以在 GPU[5]的支持下运行得更快。Fusion 5.3(或更高版本)与机器学习组件一起安装时,Milvus 会作为该组件的一部分自动安装,轻松开启所有这些功能。

在创建集合的时候需要指定向量的维度(大小),这个向量的维度取决于生成这些向量的模型。例如,通过模型可以将产品目录中所有产品描述都编码为向量,并存储于一个给定的集合中。如果没有像 Milvus 这样的向量搜索引擎,那么就无法在整个向量空间上进行相似性搜索,而只能局限于从向量空间中预选出的候选项(比如 500 条),且性能低下、质量不佳。Milvus 可以存储多个向量集合的数千亿条向量,保证搜索快速且结果相关。

使用语义检索

在了解了 Milvus 如此重要的原因后,让我们回到语义检索的工作流程。语义检索分为三个阶段:第一阶段是加载和/或训练机器学习模型;接着,将数据导入到 Milvus 和 Solr 中并建立索引;最后是查询阶段,即实际搜索发生的阶段。下面将重点介绍后两个阶段。

导入 Milvus 并建立索引

如上图所示,在建立索引阶段,对给定的数据源中的每个文档执行以下步骤:

  1. 将文档发送到 Smart Answers 数据管道。
  2. 将所选文档字段(例如,问答系统中的答案或电子商务系统中的产品描述)发送到机器学习模型。
  3. 机器学习模型返回一个特征向量(对字段编码生成)。向量大小取决于模型类型。
  4. 向量和其唯一的 ID 存储在 Milvus 集合中。
  5. 该文档和先前的唯一 ID 存储在 Solr 中。

当然,你也可以做一些调整,例如在 Milvus 中编码并储存多个字段。接下来,让我们进入第二阶段。

使用 Milvus 查询

如上图所示,查询阶段与索引阶段的起始步骤类似,只是将进入管道的文档换成了查询指令。步骤如下:

  1. 发送查询至 Smart Answers[6]数据管道。
  2. 发送查询指令到机器学习模型。
  3. 机器学习模型返回一个特征向量(从查询请求中加密)。同样地,向量大小取决于模型类型。
  4. 将该向量发送到 Milvus,然后由 Milvus 判断指定集合中哪些向量与提供的向量匹配度最高。
  5. Milvus 返回与步骤 4 中确定的向量相对应的唯一 ID 和距离列表。
  6. 将包含这些 ID 和距离的查询指令发送到 Solr。
  7. Solr 返回这些 ID 的关联文档的有序列表。

扩展测试

为了证明我们的语义检索流程的效率符合我们的客户服务要求,我们使用 Gatling 脚本在 Google Cloud 平台上进行了扩展测试,启动了 8 个机器学习模型副本、8 个查询服务副本以及一个 Milvus 实例的 Fusion 集群。测试使用 Milvus FLAT 和 HNSW 索引。FLAT 索引的召回率是 100%,但效率较低——除非数据集较小。而 HNSW 索引在保证高质量结果的前提下,针对较大规模的数据集进一步提升了性能。

以下测量数值均来自最近运行的示例:

参考资料:

[1] Lucidworks 原文: https://lucidworks.com/post/what-is-semantic-search/

[2] Lucidworks Fusion 5.3 版本: https://lucidworks.com/post/enhance-personalization-efforts-with-new-features-in-fusion/

[3] Milvus: https://doc.lucidworks.com/fusion/5.3/8821/milvus

[4] FAISS: https://ai.facebook.com/tools/faiss/

[5] GPU: https://en.wikipedia.org/wiki/Graphics_processing_unit

[6] Lucidworks Smart Answers: https://lucidworks.com/products/smart-answers/

本文分享自微信公众号 - ZILLIZ(Zilliztech),作者:M小编

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

原始发表时间:2021-05-18

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Milvus 在 Tokopedia 的应用 | 让语义搜索更加智能

    Tokopedia 是印度尼西亚最大的电商平台,目前拥有逾 9000 万月活跃用户和 860 万家商户,覆盖印尼 98% 的行政区。我们深知,帮助用户迅速并精准...

    Zilliz RDS
  • 小 Mil 来了!Milvus 智能问答机器人上线

    它究竟有什么功能,又是怎么实现的呢?今天我要带大家来了解这个基于 Milvus 的 FAQ 问答机器人-MilMil。

    Zilliz RDS
  • 快速搭建对话机器人,就用这一招!

    问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。其经典应用场景包括:智能语音交互、在线客服、知识获取、情感类...

    Zilliz RDS
  • 海量数据中搜索精华价值:Milvus助力头部企业打造前沿AI搜索

    在今天这个大数据无处不在的时代,如何高效精确地对海量数据进行处理和分析,是摆在各行业头部企业与软件开发团队面前的重大挑战。传统的结构化、半结构化数据领域有着较为...

    深度学习与Python
  • Milvus 在唯品会搜索推荐的实践

    随着互联网数据规模的爆炸式增长,当前主流电商平台的商品品类及数量越来越多,用户却越来越难以便捷地找到自己需要的产品。

    Zilliz RDS
  • Milvus 赋能 AI 药物研发

    新药研发领域长期以来都以耗时长、成本高、风险大、回报率低而著称,一款新药的平均研发成本已经高达 26 亿美元,而平均耗时需要十年。尽管付出了如此高昂的研发成本和...

    Zilliz RDS
  • 蓝灯鱼 AI 专利检索在 Milvus 的实践

    蓝灯鱼智能科技 (www.lanternfish.cn) 是一家立足于知识产权领域的人工智能公司。专利检索工具是蓝灯鱼的一款代表性产品。专利文书的语言特点包括新...

    Zilliz RDS
  • AI 搜房,贝壳找房的Milvus实践

    贝壳作为一家房产服务互联网平台,如何在海量房源中选出能够快速成交的房源是对平台和经纪人来说都是一件非常重要同时具有挑战的事情,但是针对房型图,户型信息等一系列非...

    Zilliz RDS
  • Milvus 在 AVX-512 与 AVX2 的性能对比

    指令是计算机程序给计算机处理器的命令。在最低级别上,每条指令是一个 0 和 1 的序列,描述了计算机要执行的物理操作。在计算机的汇编器语言中,每条语言语句一般对...

    Zilliz RDS
  • Milvus 实战 | Milvus 与 BERT 搭建文本搜索

    Google 的 BERT 模型在 NL 领域中具有巨大的影响力。它是一个通用的语言表示模型,可以应用于诸多领域。本文的项目是将 Milvus 与 BERT ...

    Zilliz RDS
  • Milvus 到底有多少种玩法?这份攻略合集请收好!

    Milvus 是一款开源的向量相似度搜索引擎,支持使用多种 AI 模型将非结构化数据向量化,并为向量数据提供搜索服务。Milvus 集成了 Faiss、Anno...

    Zilliz RDS
  • Milvus 在趋势科技的实践

    趋势科技(TrendMicro)是一家全球领先的信息安全软件公司,专为全球软件厂商及个人用户提供安全解决方案。本文作者目前负责构建移动安全 APP 和开发基础设...

    Zilliz RDS
  • 图形商标近似检索-知擎者的 Milvus 实践

    知擎者是一个商标大数据智能应用平台,以商标数据为核心,结合企业大数据、法律大数据、营销大数据等,提供基础业务处理、商标预警监测、案件智能挖掘、数据情报分析等服务...

    Zilliz RDS
  • 基于 Milvus 的以图搜图系统 2.0

    Milvus 以图搜图 1.0 版本自发布以来便受到广大用户的欢迎。近日,Zilliz 推出了 Milvus 以图搜图系统 2.0 版。本文将介绍 Milvus...

    Zilliz RDS
  • 基于 Milvus 的 VOVA 拍照购实践

    VOVA 是一个面向全球市场的新兴跨境电商平台,专注于外贸出口,客户遍布六大洲一百多个国家和地区。VOVA 支持 20 种主流语言和 35 种主流货币,拥有数百...

    Zilliz RDS
  • 基于 Milvus 的音频检索系统

    人可以通过听觉感知位置、运动、音调、音量、旋律并获取信息。日常生活中,音频是一种重要的多媒体数据,我们会收听电台节目、欣赏在线音乐等。

    Zilliz RDS
  • 基于 Milvus 的跨模态行人检索

    近年来,由于跨模态数据的快速增长,跨模态检索备受关注。它以一种类型的数据作为查询,来检索另一种类型的相关数据。例如,用户可以用一段文字来检索相关的图片或视频。由...

    Zilliz RDS
  • 独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)

    作为数据科学家,我们有一个首要任务:提供准确的见解。如果你和我一样,一个同时从事搜索(或与此相关的任何实时应用程序)的数据科学家,你必须管理两个有时会相互冲突的...

    数据派THU
  • 相似问答检索——汽车之家的 Milvus 实践

    汽车之家作为中国汽车互联网平台,拥有全球最大的汽车社区论坛。多年来积累了丰富的用户问答数据,能够解决用户在看车、买车、用车等方面遇到的各种问题。针对用户在平台上...

    Zilliz RDS

扫码关注云+社区

领取腾讯云代金券