安装Proxima CE包

在使用向量计算功能之前,您需要安装Proxima CE包,本文为您介绍Proxima CE的环境准备、安装包获取方式、上传及输入数据准备等过程。

环境准备

  • 已创建MaxCompute项目,详情请参见创建MaxCompute项目

  • 已创建DataWorks工作空间,并绑定MaxCompute引擎,详情请参见创建工作空间

  • 已开通Volume功能,并且成功创建了External Volume。

    • Proxima CE构建好索引之后需要写到MaxCompute的Volume存储中,请参考新功能试用申请开通Volume功能。

    • 创建External Volume的操作请参见External Volume操作

      说明

      后续运行时可能会用到Volume方式,因此建议提前创建好External Volume。否则需要输入AKrole_arn作为必要启动参数,AKrole_arn的方式存在安全风险,请谨慎使用。

获取Proxima CE安装包

请单击Proxima CE包下载安装包。

Proxima CE安装包主要包含Proxima CE可执行JAR包,您能够以添加MaxCompute资源的方式将其上传到MaxCompute Project,然后调用可执行JAR包运行Proxima CE任务。

上传资源

您可以通过MaxCompute客户端(odpscmd)或者DataWorks将上述已下载的安装包上传至MaxCompute Project。本文以DataWorks为例为您介绍如何上传并发布资源。odpscmd上传资源的方式可以参考添加资源

  1. 在DataWorks的数据开发页面,将下载好的安装包上传为JAR资源。

  2. 提交资源。

  3. 发布资源。

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

...

...

...

...