全部產品
Search
文件中心

MaxCompute:參考:Proxima CE全量參數說明

更新時間:Nov 09, 2024

本文為您介紹Proxima CE在運行過程中所使用到的參數說明,包括選擇性參數和必選參數。

必選參數

參數名稱

說明

doc_table

輸入底庫表(MaxCompute table),需要使用者準備,作為檢索候選集合。

重要

建立的表名不能使用半形點號.,這是MaxCompute的特殊字元,會導致MaxCompute表解析失敗,引用其他工程的表名可以用project_name.table_name的方式。

doc_table_partition

底庫表的MaxCompute分區。

query_table

輸入查詢表(MaxCompute table),需要使用者準備,作為檢索集合。

重要

建立的表名不能使用英文點號.,這是MaxCompute的特殊字元,會導致MaxCompute表解析失敗,引用其他工程的表名可以用project_name.table_name的方式。

query_table_partition

查詢表的MaxCompute分區。

output_table

輸出表,不需要使用者建立,指定表名即可,用於儲存檢索結果。

output_table_partition

輸出表的MaxCompute分區。

data_type

指定輸入資料表的資料類型,目前支援FLOAT/INT8/BINARY類型。

dimension

向量特徵的維度,data_type為BINARY類型時,維度必須是32的整數倍。

選擇性參數

參數名稱

說明

預設值

h (–help)

使用協助。

topk

召回相似的結果個數,可以指定多個值10,20,30,最終結果表召回的結果個數取最大值。

200

pk_type

指明輸入表的pk列是否為INT64類型,如果是,則值為INT64,否則為STRING類型,預設為STRING。當pk列的資料內容不是INT64類型時(例如STRING類型),Proxima CE內部處理時會建立臨時輸入表,將pk列映射為tmp_pkINT64類型),後續再通過MaxCompute表的 JOIN 操作得到最終結果,這種情況下在一億個doc預計增加約半小時左右的耗時。

string

vector_separator

向量的分隔字元,可以指定波浪號之外的其他分隔字元,支援空格,空格為blank。分隔字元是以字串的形式識別的,因此只需要輸入字元本身即可,不需要帶單引號或雙引號。例如','會被當成完整的字串','而不是逗號,

~

binary_to_int

是否使用INT32來表示BINARY資料,該參數只對BINARY類型的資料有效,其它參數不支援,dimension仍然表示二值特徵的維度。例如假設分割符是逗號,如果binary_to_intfalse,使用者的輸入類似於"1,1,1,1,1,1,....";如果binary_to_inttrue,使用者的輸入類似於"12345,13423,13325,....", 從N個0/1變為了N/32個整數,降低了索引大小。

false

job_mode

目前支援的模式為如下組合:

  • train:build:seek(預設)

  • build:seek

  • seek

  • train:build:seek:recall

  • build:seek:recall

  • seek:recall

train:build:seek

clean_build_volume

是否刪除索引,build job 完成索引構建之後,會在MaxCompute的volume上寫索引,seek job去載入該索引,執行完seek job之後,預設刪除索引。

說明

當任務失敗時,如果指定為 true,索引也會被清理。

true

algo_model

索引構建方法,目前基於proxima2.x核心主要主持如下六種索引構建方法hnsw/ssg/hc/gc/qc/linear,該參數決定了構造索引的builder和查詢的searcher,對應關係如下:

  • hnsw:HnswBuilder/HnswSearcher

  • ssg: SsgBuilder/SsgSearcher

  • hc: ClusteringBuilder/ClusteringSearcher

  • gc: GcBuilder/GcSearcher

  • qc: QcBuilder/QcSearcher

  • linear: LinearBuilder/LinearSearcher(暴力檢索)

hnsw

builder_params

索引構建的參數,預設為空白。該參數與algo_model指定的索引類型需要對應,參數以單行JSON字串提供,雙引號不需要轉義,中間不能有空格。例如{"proxima.hnsw.builder.efconstruction":400,"proxima.hnsw.builder.max_neighbor_count":100}就指定了hnsw構建方式的ef值與節點最大的鄰居數,參數具體定義參考IndexBuilder 參數配置

searcher_params

索引查詢的參數,預設為空白。該參數與algo_model指定的索引類型需要對應,參數以單行JSON字串提供,雙引號不需要轉義,中間不能有空格。例如{"proxima.hnsw.searcher.ef":400}就指定了hnsw查詢的ef值,參數具體定義參考IndexSearcher 參數配置

converter

指定索引構建的converter名稱。Index Converter是Proxima2.x對特徵向量進行轉換的模組,例如對特徵進行降維half float轉換,int8量化等。可獨立使用,也可作為檢索流程中一部分,詳情參考Index Converter

converter_params

指定converter參數,參數以單行JSON字串提供,雙引號不需要轉義,中間不能有空格。例如指定MipsConverter的參數{"proxima.mips.converter.m_value":4,"proxima.mips.converter.u_value":0.38196601,"proxima.mips.converter.forced_half_float":false,"proxima.mips.converter.spherical_injection":false}。詳情請參考IndexConverter 參數配置

distance_method

特徵距離計算公式,目前支援:

  • squared_euclidean(不開根號的歐式距離)

  • euclidean(歐式距離)

  • mips_squared_euclidean

  • inner_product(內積)

  • hamming(binary 類型使用)

  • manhattan(L1 distance)

  • chebyshev(切比雪夫距離)

  • canberra(堪培拉距離)

  • geo_distance(地理距離)

  • rogers_tanimoto(binary 類型使用)

  • russell_rao(binary 類型使用)

  • matching(binary 類型使用)

squared_euclidean

measure_params

指定距離(-distance_method)參數,參數以單行JSON字串提供,雙引號不需要轉義,中間不能有空格。例如指定MipsSquaredEuclidean的參數{"proxima.mips_euclidean.measure.injection_type":0}。詳情請參考IndexMeasure 參數配置

column_num

構建索引的列數,預設為0。

  • 系統根據doc_table資料量和data_type計算得出,如果總大小少於50 GB,則每列分配佔用2 GB空間的資料量;如果大於50 GB,則每列分配2.5 GB空間。

  • 手動設定:一般來根據上述方法計算配置,可以根據叢集資源適當增多或減少。

column_numrow_num需要同時指定正值才生效。

0

row_num

檢索查詢的行數,預設為0。

  • 系統根據doc_table資料量和data_type計算得出,如果總query數小於1億,則每行分配200萬query;如果總 query 數大於1億,則每行分配1000萬query。

  • 手動設定:一般來根據上述方法計算配置,可以根據叢集資源適當增多或減少。

column_numrow_num需要同時指定正值才生效。

0

category_threshold

在多類目檢索情境下,指定為大類目檢索的閾值。當某個類目下的doc數超過該閾值時判斷該類目走大類目檢索,否則走小類目檢索,其中小類目檢索預設採用線性檢索方式,且多個小類目資料合併在一起檢索。

1000000

category_col_num

按類目查詢時,小類目(doc數小於100萬)構建索引的列數,具體參考column_num參數配置。

0

category_row_num

按類目查詢時,小類目(doc數小於100萬)查詢索引的行數,具體參考row_num參數配置。

0

category_thread_num

按類目查詢時,設定處理大類目(doc數大於100萬)任務的並發度(線程池大小)。

10

query_multi_label

單個query是否有多個category,若設定true,doc表也必須包含category列,詳情參考多類目檢索

false

threshold_score

檢索結果分數過濾閾值。對於當召回的 doc 的score值,除了inner_productmips_squared_euclidean之外距離,值越小越相似,分數大於該閾值時會被過濾掉;對於inner_productmips_squared_euclidean距離,值越大越相似,分數小於該閾值時會被過濾掉。

tunnel_endpoint

設定MaxCompute的tunnel endpoint值,預設為空白。防止跨網路訪問資料表時download session建立失敗,詳情可參考MaxCompute Tunnel Endpoint問題

memory_load

指定seek階段索引載入方式,預設為true,純記憶體載入,當叢集記憶體資源緊張時可視情況設為false。

true

sharding_mode

索引分區方式,目前支援hashcluster兩種模式。hash分區通過按模取hash值的方式對索引進行劃分,cluster則是通過kmeans聚類的方式劃分索引,這種分區方式能在一定程度上減少後續檢索階段(seek階段)的計算量。

hash

kmeans_resource_name

主要作用cluster索引分區模式,cluster首先通過啟動MaxCompute的graph圖計算任務對未經處理資料進行kmeans聚類,該參數用於標識kmeans 中心點名稱。

kmeans_resource_name

kmeans_sample_ratio

主要作用cluster索引分區模式,表示kmeans中心點的採樣率,範圍0~1之間。

0.05

kmeans_seek_ratio

主要作用cluster索引分區模式,表示檢索時最近中心點的篩選率,範圍0~1之間。

0.1

kmeans_iter_num

主要作用cluster索引分區模式,表示kmeans任務的迭代次數。

30

kmeans_cluster_num

主要作用cluster索引分區模式,表示kmeans聚類的中心點個數。

1000

kmeans_init_center_method

主要作用cluster索引分區模式,表示kmeans聚類的中心點初始化方法。

""

kmeans_worker_num

主要作用cluster索引分區模式,表示kmeans聚類Worker執行個體個數。

0

mapper_split_size

暴露mapper.split.size option,指定內部mapper執行個體資料處理大小,單位MB。不指定為MaxCompute平台MR的預設大小256MB。

256

odps_task_priority

Proxima CE任務優先順序選項,通過設定Proxima CE內部所有MaxCompute任務(sql、MR、Graph等任務)的優先順序來完成,取值[0-9],數字越小優先順序越高,預設為-1跟隨MaxCompute基準優先順序。

-1

oss_access_id

阿里雲帳號或RAM使用者的AccessKey ID。您可以進入AccessKey管理頁面擷取AccessKey ID。

oss_access_key

AccessKey ID對應的AccessKey Secret。

您可以進入AccessKey管理頁面擷取AccessKey Secret。

oss_endpoint

MaxCompute服務的串連地址。

您需要根據建立MaxCompute專案時選擇的地區以及網路連接方式配置Endpoint。各地區及網路對應的Endpoint值,請參見Endpoint

oss_bucket

OSS儲存空間名稱,即Bucket名稱。查看儲存空間名稱操作,請參見列舉儲存空間