蚂蚁金服 ZSearch 在向量检索上的探索

图为 ZSearch 基础架构负责人十倍 2019 Elastic Dev Day 现场分享

引言

ElasticSearch(简称 ES)是一个非常受欢迎的分布式全文检索系统,常用于数据分析,搜索,多维过滤等场景。蚂蚁金服从2017年开始向内部业务方提供 ElasticSearch 服务,我们在蚂蚁金服的金融级场景下,总结了不少经验,此次主要给大家分享我们在向量检索上的探索。

ElasticSearch 的痛点

ElasticSearch 广泛应用于蚂蚁金服内部的日志分析、多维分析、搜索等场景。当我们的 ElasticSearch 集群越来越多,用户场景越来越丰富,我们会面临越来越多的痛点:

  • 如何管理集群;
  • 如何方便用户接入和管理用户;
  • 如何支持用户不同的个性化需求;
  • ...

为了解决这些痛点,我们开发了 ZSearch 通用搜索平台:

  • 基于 K8s 底座,快速创建 ZSearch 组件,快捷运维,故障机自动替换;
  • 跨机房复制,重要业务方高保;
  • 插件平台,用户自定义插件热加载;
  • SmartSearch 简化用户搜索,开箱即用;
  • Router 配合 ES 内部多租户插件,提高资源利用率;

向量检索需求

基于 ElasticSearch 的通用搜索平台 ZSearch 日趋完善,用户越来越多,场景更加丰富。

随着业务的飞速发展,对于搜索的需求也会增加,比如:搜索图片、语音、相似向量。

为了解决这个需求,我们是加入一个向量检索引擎还是扩展 ElasticSearch 的能力使其支持向量检索呢?

我们选择了后者,因为这样我们可以更方便的利用 ElasticSearch 良好的插件规范、丰富的查询函数、分布式可扩展的能力。

接下来,我来给大家介绍向量检索的基本概念和我们在这上面的实践。

向量检索基本概念

向量从表现形式上就是一个一维数组。我们需要解决的问题是使用下面的公式度量距离寻找最相似的 K 个向量。

  • 欧式距离:

    两点间的真实距离,值越小,说明距离越近;

  • 余弦距离:

    就是两个向量围成夹角的 cosine 值,cosine 值越大,越相似;

  • 汉明距离:

    一般作用于二值化向量,二值化的意思是向量的每一列只有0或者1两种取值。

    汉明距离的值就两个向量每列数值的异或和,值越小说明越相似,一般用于图片识别;

  • 杰卡德相似系数:

    把向量作为一个集合,所以它可以不仅仅是数字代表,也可以是其他编码,比如词,该值越大说明越相似,一般用于相似语句识别;

因为向量检索场景的向量都是维度很高的,比如256,512位等,计算量很大,所以接下来介绍相应的算法去实现 topN 的相似度召回。

向量检索算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值