在使用向量计算功能之前,您需要安装Proxima CE包,本文为您介绍Proxima CE的环境准备、安装包获取方式、上传及输入数据准备等过程。
环境准备
已创建MaxCompute项目,详情请参见创建MaxCompute项目。
已创建DataWorks工作空间,并绑定MaxCompute引擎,详情请参见创建工作空间。
已开通Volume功能,并且成功创建了External Volume。
Proxima CE构建好索引之后需要写到MaxCompute的Volume存储中,请参考新功能试用申请开通Volume功能。
创建External Volume的操作请参见External Volume操作。
说明后续运行时可能会用到Volume方式,因此建议提前创建好External Volume。否则需要输入
AK
或role_arn
作为必要启动参数,AK
或role_arn
的方式存在安全风险,请谨慎使用。
获取Proxima CE安装包
请单击Proxima CE包下载安装包。
Proxima CE安装包主要包含Proxima CE可执行JAR包,您能够以添加MaxCompute资源的方式将其上传到MaxCompute Project,然后调用可执行JAR包运行Proxima CE任务。
上传资源
您可以通过MaxCompute客户端(odpscmd)或者DataWorks将上述已下载的安装包上传至MaxCompute Project。本文以DataWorks为例为您介绍如何上传并发布资源。odpscmd上传资源的方式可以参考添加资源。
在DataWorks的数据开发页面,将下载好的安装包上传为JAR资源。
提交资源。
发布资源。
DataWorks上传资源详细步骤请参考步骤一:创建或上传资源。
准备输入表
在运行之前,您需要准备如下两个输入表:
doc表:底库数据表。
query表:用户查询表。
建表命令
--创建doc表
create table doc_table_float_smoke(pk string,vector string) partitioned by (pt string);
--创建query表
create table query_table_float_smoke(pk string,vector string) partitioned by (pt string);
输入表格式要求
表名
输入表的表名不能包含
tmp_
字符串,否则会导致任务运行失败。输入表的表名和分区名的字符长度不能超过64,否则会导致任务运行失败。
字段
固定字段
字段说明
字段数据类型
pk
查询时的pk值字段。
默认为STRING类型。
对于pk列:其具体的值可以是数值或者字符串(比如:字符串类型
1.nid,2.nid,3.nid,...
或INT64数值类型123,456,789,...
)。对于pk列:如果存的都是INT64数值,列的类型可以指定为BIGINT类型,同时若指定启动参数
-pk_type
为INT64,则能够提升性能。
vector
向量字段。
默认为STRING类型。
category
多类目的类目字段。
仅多类目检索时需要此字段。
默认为BIGINT类型。
pt
分区字段。
默认为STRING类型。
输入表示例
doc表
pk
vector
pt
id1
0~1~1~5
20190322
id2
0~1~1~2
20190322
id3
3~2~1~1
20190322
...
...
...
query表
pk
vector
pt
id8
0~1~1~5
20190322
id9
0~1~1~2
20190322
id10
3~2~1~1
20190322
...
...
...
下一步:使用向量检索功能
检索场景 | 关键特性 | 指导文档 |
基础向量检索 | 支持百万级别TopK查询。 | |
多类目检索 | 支持多类目场景,包括query和doc属于多个类目的场景以及单个query属于多个类目的场景。 | |
聚类分片 | 支持聚类分片索引构建方式,该方式能够减小计算量和加速后续索引查询过程。 | |
内积和余弦距离 | 支持内积检索。 | |
量化使用 | 支持量化器使用,一般配置量化器可提升性能,减少索引大小,召回视情况有所损失。 |
使用向量检索后会自动生成一个输出表,存储在MaxCompute表中,您无需创建,在运行Proxima CE代码的-output_table
参数后面指定表名即可使用。生成的输出表格式请参考下文的输出表格式说明。
输出表格式说明
运行向量检索后会自动生成一个输出表,并存储在MaxCompute表中,生成的输出表格式如下。
表名:即您在运行Proxima CE的代码中所指定的输出表的表名。
输出表的表名不能使用半角点号
.
,其为MaxCompute的特殊字符,会导致MaxCompute表解析失败。输出表的表名不能包含
tmp_
字符串,会导致任务运行失败。输出表名和分区名的字符长度不能超过64,否则会导致任务运行失败。
字段
固定字段
字段说明
字段的数据类型
pk
是query表中每个query对应的pk值。
默认为STRING类型。
对于pk列:其具体的值可以是数值或者字符串(比如字符串类型
1.nid,2.nid,3.nid,...
或INT64数值类型123,456,789,...
)。对于pk列:如果存的都是INT64数值时,列的类型可以指定为BIGINT类型,同时若指定启动参数
-pk_type
为INT64,则能够提升性能。
knn_result
query召回对应的doc表中的pk值。
默认为STRING类型。
score
召回的doc对应的相似度分数。
默认为STRING类型。Proxima CE中统一按照相似度大小降序排序。
说明分数对于
inner_product/mips_squared_euclidean
这两种距离算法在Proxima2内核里是距离越大越相似,其他距离算法是距离越小越相似,但Proxima CE里面做了统一处理,按照相似度大小降序排序,即:对于
inner_product/mips_squared_euclidean
距离,按照score
值降序排序;对于其他距离,按照
score
值升序排序,与Proxima2内核保持一致。
category
多类目的类目字段。
仅多类目检索时需要此字段。
默认为BIGINT类型。
pt
分区字段。
默认为STRING类型。
输出表示例
pk | knn_result | score | pt |
id8 | id1 | 0.1 | 20190322 |
id8 | id2 | 0.2 | 20190322 |
id9 | id1 | 0.1 | 20190322 |
id9 | id3 | 0.3 | 20190322 |
... | ... | ... | ... |