从业务需求到能力扩展 | 阿里云Elasticsearch向量检索能力的创变史

  • 时间:
  • 浏览:2
  • 来源:UU快3—全天最准大发快三

本文字数:1874

阅读时间:约3~5分钟

简单介绍一下阿里云 Elasticsearch 使用的 Proxima 向量引擎库:阿里巴巴达摩院提供的 Proxima 向量检索引擎是俩个 运用于大数据下,实现向量近邻搜索的高性能软件库,才能提供业内性能和效果领先的基础最好的办法模块,支持图像搜索、视频指纹、人脸识别、语音识别和商品推荐等各种场景。一起,引擎对向量检索的但是 基础能力,如聚类、距离计算、高并发、Cache 等做了深度1次的优化。

怎么将 Proxima 引擎库集成到阿里云 Elasticsearch 生态中,有俩个 方向摆在我们我们我们 背后:两种是最直观也是最简单的离线方案,也是集团内其它兄弟团队大累积采用的方案,依赖独立的离线资源做索引全量 Build;另两种是在线方案,也是无缝对接 Elasticsearch 现有能力、易用性最好的方案,但写入性能和存储相对会有但是 Overhead。两种方案优劣势对比如下:

在选泽在线方案的前提下,怎么满足 Proxima 向量索引和 Elasticsearch 原生索引无缝集成呢?答案是利用 Lucene的 Codec 扩展机制。Codec 都时需理解为 Lucene 索引文件格式的两种协议,用户要是实现对应的写入/读取的业务流程,即可自定义正排、倒排、StoreFields 等不同索引的具体实现。在阿里云 Elasticsearch 的实现中,我们我们我们 包装并扩展了Lucene 的 Latest Codec,当向量数据写入es的某个字段时,前期流程跟原生的流程一致,先插进 indexBuffer 中;等实物发起 Refresh 时,调用底层的 Proxima 库,消费向量数据构建出 Proxima 的向量索引。

以下是阿里云Elasticsearch 6.7.0版本环境实测数据,机器配置为数据节点16c64g*2 + 30G ssd云盘,数据集为Sift128维 Float 向量(http://corpus-texmex.irisa.fr/)

数据总量为2千万。索引配置删剪是默认参数。

阿里云 Elasticsearch 是目前公有云营收增长最快的大数据产品之一。随着客户数的增长,我们我们我们 发现随着 AI 技术的不断普及,针对向量检索场景的需求量在逐步提升。比如人脸识别、音/视频识别、商品智能推荐等场景,技术上都离不开向量检索的能力作为支撑。以某专有云客户为例,客户的场景是视频安全监控,摄像头每天会产生30万帧采样图片,每个月产生TB级的向量数据,业务上时需实时对那些视频采样数据进行图片比对搜索。该客户属于典型的时序+向量检索的场景,而时序分析场景刚好是 Elasticsearch 最擅长的累积,这样 我们我们我们 都时需在Elasticsearch现有能力的基础上补充向量检索的支持能力呢?基于但是 朴素的想法,我们我们我们 结速了与阿里巴巴达摩院向量检索团队的相互合作,希望借助达摩院自研的向量检索引擎补充阿里云 Elasticsearch 在向量检索方面的能力,一站式避免云上用户全文检索、时序分析及向量检索的需求。

考虑到云上客户大多数对弹性和稳定性要求比较高,我们我们我们 最终选泽了易用性、稳定性更好的在线方案。

目前 Proxima 向量检索库在阿里集团覆盖的生产业务如图所示:

您将获得

1、阿里云 Elasticsearch 向量检索能力的演变过程

2、怎么使用向量检索

3、未来阿里云 Elasticsearch 的探索之路

查询的前一天 ,可能向量索引和原生索引一样都不 Segment 粒度生成,但是 我们我们我们 要是很轻量的实现向量 Segment 对应的 Weight 和 Scorer即可。具体的,当查询到了 BuildScorer 阶段,我们我们我们 利用底层 Proxima 库加载当前 Segment的向量索引文件,通过 Native 最好的办法查询出TopN的 id 和 Score 后,通过docID和分数生成当前 Segment 的 Scorer,交给indexSearcher继续执行上层的求交/求并操作即可。

关于向量检索更具体的产品介绍,请点击访问【向量检索插件使用最佳实践】

以下是正文

阿里云 Elasticsearch 始终致力于为云上用户提供一站式的高性能、低成本的大数据检索分析服务。向量检索引擎是我们我们我们 在人工智能领域迈出的第一步,后续的发力点还有但是 ,比如支持更丰沛 的近似算法、支持离线训练、硬件加速等,有但是 有意思的方向等待的图片 我们我们我们 一起探索。目前阿里云ES向量检索引擎即将在下一版本上线公有云,有需求接入的用户都时需提前提工单给我们我们我们 沟通使用场景,感谢我们我们我们 的支持。

基于 Codec 机制,向量索引可能都时需被 Lucene 当成普通索引来管理,这对上层的 Elasticsearch 来说是删剪透明的,但是 都时需实现不修改上层业务的前提下,兼容 Elasticsearch 所有上层的分布式文件操作;所有扩副本、本地 Failover 、阿里云快照备份/恢复等功能都与原生普通索引无异。要是大大提高了索引的稳定性,降低了用户的使用成本。