向量计算概述

Hologres支持向量计算,可以使用向量数据表示非结构化数据的特征,通过高性能向量检索实现对非结构化数据的快速查询。本文为您介绍Hologres中向量计算的特点及优势。

背景信息

Proxima是一款来自于阿里达摩院的实现向量近邻搜索的高性能软件库,相比于Faiss等开源的同类产品,Proxima在稳定性、性能等方面都更为出色,能够提供业内性能和效果卓越的基础方法模块,支持图像、视频、人脸等各种应用场景。

Hologres与Proxima深度整合,在向量计算方面的优势如下:

  • 向量计算功能强大:

    • 时效性:支持向量数据实时写入、实时更新,数据写入即可查。

    • 查询能力:支持向量检索与其他复杂过滤条件融合查询,支持同时使用向量索引和其他结构化索引。

    • 高性能:支持超高QPS向量数据实时写入,支持高效索引构建,支持高QPS、低延时向量检索。

    • 低成本:通过Float2类型进行向量索引数据压缩,降低向量存储成本。

  • 实时数仓能力与向量计算有机结合:

    • 易用性:支持通过标准SQL语法创建并使用Proxima,简单易用。

    • 事务性:支持多条DDL事务,支持多条DML混合事务。

    • Binlog:支持Binlog,可以实现对向量数据变更事件的订阅。

    • 多场景:支持行存、列存、行列共存三种表存储格式,可以支持对一张向量表同时进行高性能OLAP分析、Key/Value点查以及向量查询。

  • 企业级高可用能力与向量计算有机结合:

    • 主从实例架构:支持共享存储的一主多从架构,实例之间存储资源共享、计算资源隔离,实现向量计算业务的高可用(读写分离、读读分离),详情请参见主从实例读写分离部署(共享存储)

    • 计算组实例架构:支持共享存储的多计算组架构,相比于主从架构,可以进一步支持写写分离,详情请参见计算组实例架构

  • 产品生态与向量计算有机结合:

    • 无缝对接MaxCompute,支持通过外部表加速查询MaxCompute向量数据,支持MaxCompute向量数据高性能批量写入。

    • 原生集成Flink,支持海量向量数据实时写入与更新,支持源表、结果表、维度表多种场景,支持向量数据多流合并等复杂操作。

    • 深度集成DataWorks,支持海量数据源向量数据集成,支持数据资产、数据血缘、数据服务等企业级能力。

Proxima简介

名词解释

  • 特征向量:向量是一种将实体和应用代数化的一种表示,其将实体间的关系抽象成向量空间中的距离,而距离的远近代表着形似程度。例如:身高、年龄、性别、地域。

  • 向量检索:在特征向量数据集合中进行快速搜索和匹配的方法,常涉及到的问题有KNN和RNN。

  • KNN(K-Nearest Neighbor):查找离查询点最近的K个点。

  • RNN(Radius Nearest Neighbor):查找查询点某半径范围内的所有点。

Proxima的基本模型

Proxima的基本模型分为索引构建和在线检索两部分:

  • 索引构建:从原始向量数据中构建出相关索引文件,并传予在线检索模块加载使用。支持多种Brute Force、KD-Tree、Product Quantization、KNN Graph、LSH等。

  • 在线检索:加载完索引文件后,为向量检索提供查询服务。在聚类后的数据集上进行KNN和RNN搜索,用户设定检索过程中的参数。

Proxima与Hologres概念对比

Proxima概念

Hologres中的概念

特征向量

数组类型Array,仅支持固定长度数组

向量索引

一种特殊类型的Index,当前仅支持KNN/RNN的Graph索引

距离计算

  • 一种类型的UDF: proxima_distance()

  • 每种距离计算对应一个UDF

KNN查询

order by distance(x, [x1, x2]) asc limit k

RNN查询

where distance(x, [x1,x2]) < r

说明

当前RNN查询不支持Proxima索引。

相关文档