专栏首页Reinvent Data ScienceMilvus 在 Tokopedia 的应用 | 让语义搜索更加智能

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

✏️ 作者介绍:Rahul Yadav,Tokopedia 工程师

Tokopedia 是印度尼西亚最大的电商平台,目前拥有逾 9000 万月活跃用户和 860 万家商户,覆盖印尼 98% 的行政区。我们深知,帮助用户迅速并精准地找到想要的商品才是产品语料库的价值所在。正因如此,我们致力于提高用户搜索结果的相关性,并引入了相似度搜索。在 Tokopedia 移动应用端的搜索结果页面上点击 ”...” 按钮,即可选择搜索与当前搜索结果类似的产品。

关键词检索

Tokopedia 使用 ElasticSearch 来搜索产品并对搜索结果排序。对于每个搜索请求,ElasticSearch 返回相关搜索结果并根据关键词对搜索结果进行排序。ElasticSearch 将每个单词存储为其组成字母的 ASCII[1](或 UTF)编码序列,并构建倒排索引[2]以快速检索出包含用户查询关键词的内容,然后使用评分算法找到最佳匹配。这些评分算法鲜少关注这些词的具体含义,而更多基于它们在文档中出现的频率以及它们之间的距离等。尽管 ASCII 编码包含的信息也足以让我们人类理解其原本语义,但仍缺乏一套完善的算法能让计算机也能根据 ASCII 编码理解和比较单词的实际含义。

向量表征

在众多解决方案中,语义向量表征能告诉我们单词是由哪些字母组成的,还能从某种程度上揭露该单词的含义。例如,我们可以对其他经常与该单词一起使用的词进行编码(即潜在上下文,此处默认相似的上下文代表相似的语义),并通过数学计算来比较单词之间的相似度。我们甚至可以试图基于语义对整个句子编码,以得出特征向量。

向量数据库

在获得目标特征向量后,我们需要从大量的向量数据中检索出与目标向量相似的向量。因此,我们试用了 GitHub 上几个为人熟知的向量搜索引擎和向量数据库,包括 FAISS、Vearch 和 Milvus。

以往的经验告诉我们,FAISS 更像是一个底层库,无法满足我们对于系统便捷性的要求。另外从负载测试结果来看,Milvus 的表现也最令我们满意。随着进一步了解,我们最终决定采用 Milvus,主要基于以下两大优势:

  • Milvus 上手容易、使用方便。只需要拉取 Docker 镜像,并根据自己的使用场景修改参数,便可以直接应用于生产环境。
  • Milvus 支持更多索引类型,且提供详细的技术文档。

总而言之,Milvus 对用户非常友好,技术文档资源完备。使用过程中遇到的大部分问题都可以在 Milvus 文档中心找到相应的解决方案;即便没有找到合适的解决方案,也可以在 Milvus 社区提问,获取技术支持。

Milvus 集群服务

选定 Milvus 为特征向量数据库后,我们决定将其用于 Tokopedia 广告服务场景中低填充率与高填充率关键词的匹配。我们在开发环境中配置了一个单机版 Milvus 节点提供服务,该节点在数天内都保持了良好的运行状态,明显改善了点击率和转化率。但是,倘若单机版节点在生产环境中宕机,将导致整个搜索服务崩溃。因此,我们需要部署一个高可用的搜索服务。

Mishards 是一款专为 Milvus 开发的集群分片中间件,允许用户搭建内存和算力均可扩容的分布式 Milvus 实例。通过 Mishards 和 Milvus Helm,用户可以轻松部署自己的 Milvus 集群。下图展示了 Mishards 的工作原理:

Mishards 负责将上游请求拆分,并路由到内部各细分子服务,最后将子服务结果汇总,返回给上游。Mishards 的整体架构如下图所示:

更多关于 Mishards 的内容可参阅官方文档[3]

我们针对 keyword-to-keyword 服务在 Google Cloud Platform (GCP) 部署了一个 Milvus 写节点、两个 Milvus 读节点以及一个 Mishards 实例,至发稿时始终保持性能稳定。

向量索引如何加速相似性搜索

要想实现百万、十亿甚至万亿级别向量数据的高效检索,索引构建[4]不可或缺。

向量数据库将输入对象与数据库中其他存储对象进行比较,以找到与输入最相似的对象。索引在这个过程中十分重要,它可以高效地组织数据结构,显著加速对大规模数据集的查询性能。对一个大规模向量数据集构建索引后,查询请求将被路由到最有可能包含与该输入相似的向量的集群或数据子集。这加快了数据查询速度,但同时也牺牲了一定程度的准确性。

我们可以将整个数据库比作一本字典,所有单词按字母顺序排列。当查询一个单词时,我们可以通过索引快速跳至仅与查询单词首字母相同的章节,更快速地找到输入单词的定义。

未来展望

就像这幅漫画所描绘的,没有十全十美的解决方案,只有不断提升优化向量模型的性能。

另外,从技术角度来看,我们希望可以同时运行多种学习模型,比较它们在图像搜索、视频搜索等方面的实验结果。如有兴趣,欢迎关注 Tokopedia Tech[5]获得更多信息。

解决搜索相关性等问题是 Tokopedia 日常工作的一部分。继 keyword-to-keyword 服务的成功实践后,我们立即运行了 keyword-to-product、keyword-to-category 等类似的搜索,探索更丰富的应用场景。

引用链接:

[1] ASCII:https://zh.wikipedia.org/wiki/ASCII

[2] 倒排索引:https://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95

[3] 官方文档:https://milvus.io/cn/docs/v1.1.0/overview.md

[4] 索引构建:https://milvus.io/cn/docs/v0.10.5/index.md#CPU

[5] Tokopedia Tech:https://medium.com/tokopedia-engineering

参考

Mishards Docs:Mishards: Cluster Sharding Middleware

Mishards:https://github.com/milvus-io/milvus/tree/master/shards

Milvus-Helm: https://github.com/milvus-io/milvus-helm/tree/master/charts/milvus

本文翻译自:https://medium.com/tokopedia-engineering/how-we-used-semantic-search-to-make-our-search-10x-smarter-bd9c7f601821

Github @Milvus-io|CSDN @Zilliz Planet|Bilibili @Zilliz-Planet

Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。

Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 目前是 LF AI & Data 基金会的孵化阶段项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。

本文分享自微信公众号 - ZILLIZ(Zilliztech),作者:Rahul Yadav

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    Zilliz RDS
  • Milvus x Lucidworks 快速构建语义检索

    语义检索 [1](Semantic Search) 是能帮助你的客户或员工找到正确的产品或信息的绝佳工具,它甚至可以检索到一些难以被索引的信息,从而获得更好的结...

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

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

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

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

    深度学习与Python
  • AI 搜房,贝壳找房的Milvus实践

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

    Zilliz RDS
  • 霸榜 GitHub,狂揽6000星,这是今年最值得关注的开源项目!

    对于很多 AI 应用开发者来说,尽管模型已经训练完成,一旦提及落地部署 ,总逃不开“向量召回”这一魔咒。

    Zilliz RDS
  • 万物皆可embedding,AI应用神器Milvus登顶数据库顶会SIGMOD

    Milvus 团队期待能打通 embedding 空间的相关技术,比如中间层、中间层的神经网络模型。落实到具体场景应用上,则期待看到综合场景下搜索技术的突破,对...

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

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

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

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

    Zilliz RDS
  • Milvus 与 ONNX 格式的多种模型结合应用

    开放神经网络交换(Open Neural Network Exchange,简称 ONNX)是一个开放的生态系统,它提供了基于人工智能模型的一种开源格式。自 2...

    Zilliz RDS
  • Chat with Milvus #11 回顾- 分布式数据库与Milvus分布式

    本期的 Milvus 线上问答由我们 15 年经验的数据库专家-顾老师,带你总结主流数据库的发展与未来方向。

    Zilliz RDS
  • 基于语义向量的内容召回和短文本分类的错误查找-搜狐的 Milvus 实战

    随着互联网和移动终端的发展,用户获取信息的需求越来越高——从以前单一地接受信息到现在主动获取自己感兴趣的资讯。搜狐新闻客户端的重要任务就是根据用户喜好向用户推荐...

    Zilliz RDS
  • 数字人民币落地最后一公里,大数据和 AI 将如何改变金融

    这个五一假期,你用上数字人民币红包了吗?还在试点中的数字人民币已然强势来袭,不但落地北京、上海、深圳、成都、长沙、海南等十几个城市,除了线下支付,还对接了美团、...

    Zilliz RDS
  • 解读TF、PaddlePaddle、天元等AI框架,你想知道的都在这里了

    【导读】7 月 3-4 日,由 CSDN 主办的第三届 AI 开发者大会(AI ProCon 2020)在线上举行。本次大会有超万人报名参与,参与人群覆盖 60...

    AI科技大本营
  • 图形商标近似检索-知擎者的 Milvus 实践

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

    Zilliz RDS
  • 用 AI 识别基因,从向量化 DNA 序列开始

    DNA 序列在分子生物学和医药研究中有着广泛的应用,比如基因溯源、物种鉴定、疾病诊断等。如果结合正在兴起的基因大数据,采取大量的样本,那么通常实验结果更具说服力...

    Zilliz RDS
  • Milvus 赋能 AI 药物研发

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

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

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

    Zilliz RDS
  • 贝壳找房基于Milvus的向量搜索实践(一)

    Milvus[1]:一种基于Faiss[5],NMSLIB[6] 和 Annoy[7]的相似特征向量搜索引擎。

    Zilliz RDS

扫码关注云+社区

领取腾讯云代金券