Proxima 2.x开始支持converter,用于实现对数据做量化、归一化等功能。本文以INT8量化为例为您介绍如何使用converter。
前提条件
已安装Proxima CE包并准备输入表,详情请参见安装Proxima CE包。
已创建doc表和query表,并导入了输入表数据。具体步骤请参考安装与运行。
converter相关参数
-converter:指定索引构建的converter名称。
-converter_params:指定converter参数,参数格式为单行JSON字符串,双引号不需要转义,中间不能有空格。例如指定NormalizeConverter的参数
{"proxima.normalize.reformer.forced_half_float":false}
。详情请参考IndexConverter参数配置。说明完整的converter列表请参见Index Converter。
命令示例
说明
以下示例中所使用的参数配置详情请参见参考:Proxima CE全量参数说明。
--@resource_reference{"proxima-ce-aliyun-1.0.0.jar"} -- 引用上传的 proxima-ce jar 包,在左侧「业务流程——MaxCompute——资源」,右击刚刚上传的 jar 包,选择「引用资源」即可生成该行注释
jar -resources proxima-ce-aliyun-1.0.0.jar -- 上传的 proxima-ce jar 包
-classpath proxima-ce-aliyun-1.0.0.jar com.alibaba.proxima2.ce.ProximaCERunner -- classpath 指定 main 函数入口类
-doc_table doc_table_xx -- 输入 doc 表
-doc_table_partition 20210706 -- 输入 doc 表 partition
-query_table query_table_xx -- 输入 query 表
-query_table_partition 20210706 -- 输入 query 表 partition
-output_table output_table_xx -- 输出表
-output_table_partition 20210706 -- 输出表 partition
-data_type float -- 向量数据类型
-dimension 8 -- 向量维度
-oss_access_id xxx -- 用户提供的 oss access key id
-oss_access_key xxx -- 用户提供的 oss access key secret
-oss_endpoint xxx -- 用户提供的 oss endpoint
-oss_bucket xxx -- 用户提供的创建好的 oss bucket
-owner_id 123456 -- 用户提供的用于标识自己的唯一id
-converter Int8QuantizerConverter -- 指定converter
-converter_params "" -- 指定converter参数,可选,参数以单行JSON字符串提供,双引号不需要转义,中间不能有空格。
;
性能说明
向量量化一般是有损的,量化后的召回率通常会下降1~2个百分点。实际测试里(例如:2000万规模的doc/query 512 float 向量数据的检索),使用量化后的召回率与正常情况相比,大约会由99.0%下降至98.2%。但是量化通常会带来一定的性能提升,对于上述测试数据总体加速比大约为10%左右(数据仅供参考)。
说明
召回率:是衡量query的检索结果正确程度的一个指标,这是向量检索领域一个常见的指标。对于某种向量检索算法而言,它的召回率指的是:对于某个query,它通过该算法召回的doc与通过暴力比对召回的doc之间的近似程度,召回率越高说明该检索算法越准确。
文档内容是否对您有帮助?