全部產品
Search
文件中心

MaxCompute:量化使用

更新時間:Mar 28, 2025

Proxima 2.x開始支援converter,用於實現對資料做量化、歸一化等功能。本文以INT8量化為例為您介紹如何使用converter。

前提條件

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.2.jar"}  -- 引用上傳的 proxima-ce jar 包,在左側「商務程序——MaxCompute——資源」,右擊剛剛上傳的 jar 包,選擇「引用資源」即可產生該行注釋
jar -resources proxima-ce-aliyun-1.0.2.jar  -- 上傳的 proxima-ce jar 包
-classpath proxima-ce-aliyun-1.0.2.jar com.alibaba.proxima2.ce.ProximaCERunner  -- classpath 指定 main 函數入口類
-doc_table doc_table_xx  -- 輸入 doc 表
-doc_table_partition 20221111  -- 輸入 doc 表 partition
-query_table query_table_xx  -- 輸入 query 表
-query_table_partition 20221111  -- 輸入 query 表 partition
-output_table output_table_xx  -- 輸出表
-output_table_partition 20221111  -- 輸出表 partition
-data_type float  -- 向量資料類型
-dimension 8  -- 向量維度
-external_volume_name xxx_volume_name -- 使用者提供的建立好的 volume on oss,需要底層 oss 目錄也建立好,否則會運行失敗
-owner_id 123456  -- 使用者提供的用於標識自己的唯一id
-converter Int8QuantizerConverter -- 指定converter
-converter_params "" -- 指定converter參數,可選,參數以單行JSON字串提供,雙引號不需要轉義,中間不能有空格。
; -- 注意不要丟掉分號,這是 odps sql 結束的標誌

效能說明

向量量化一般是有損的,量化後的召回率通常會下降1~2個百分點。實際測試裡(例如:2000萬規模的doc/query 512 float 向量資料的檢索),使用量化後的召回率與正常情況相比,大約會由99.0%下降至98.2%。但是量化通常會帶來一定的效能提升,對於上述測試資料總體加速比大約為10%左右(資料僅供參考)。

說明

召回率:是衡量query的檢索結果正確程度的一個指標,這是向量檢索領域一個常見的指標。對於某種向量檢索演算法而言,它的召回率指的是:對於某個query,它通過該演算法召回的doc與通過暴力比對召回的doc之間的近似程度,召回率越高說明該檢索演算法越準確。