全部產品
Search
文件中心

OpenSearch:定製排序模型

更新時間:Oct 25, 2024

定製排序模型介紹及操作步驟。

定製排序模型介紹

為了更好的滿足使用者的搜尋排序體驗,OpenSearch推出了定製排序模型功能,使用者可以根據實際的業務情境添加自訂特徵資料用於排序模型訓練,並且可以自訂python或TensorFlow指令碼編寫排序模型描述,實現在搜尋排序方面的靈活性和個人化。

操作步驟

建立定製排序模型前,需先建立特徵描述模型描述

建立特徵描述流程

  1. 建立獨享型叢集規格的OpenSearch-行業演算法版執行個體之後,進入OpenSearch控制台頁面,左側導覽列選擇:OpenSearch 行業演算法版>搜尋演算法中心>排序配置>定製排序模型,在右側的特徵描述頁簽下,點擊建立按鈕:

  2. 填寫特徵描述名稱,並添加排序模型特徵(需填寫排序模型特徵名稱,選擇排序模型特徵類型選擇特徵,參考:特徵管理),點擊確定即可:

說明

建立模型描述流程

  1. 建立獨享型規格應用之後,進入OpenSearch控制台頁面,左側導覽列選擇:OpenSearch行業演算法版>搜尋演算法中心>排序配置>定製排序模型,在右側的模型描述頁簽下,點擊建立按鈕:

  2. 填寫模型描述名稱,編寫python指令碼內容,點擊確定即可。

相關程式碼範例參考:定製排序模型開發指南

建立排序模型流程

  1. 進入OpenSearch控制台頁面,左側導覽列選擇:OpenSearch行業演算法版>搜尋演算法中心>排序配置>定製排序模型,在右側的排序模型頁簽下,點擊建立按鈕:image.png

  2. 填寫模型名稱,選擇模型類型(預設為自訂排序模型),可以設定是否開啟定時訓練,選擇之前建立好的特徵描述模型描述,點擊確定即可:image.png

  3. 建立成功後,點擊訓練模型

  4. 開始訓練後,可在模型詳情頁,可查看模型訓練進度:

  5. 訓練完成後,若模型狀態會變為可用狀態,即可進行使用(若模型狀態為不可用,請根據資料校正完整度等級升級條件進行調整,滿足要求後,第二天再訓練即可,若還有問題,可以提工單聯絡技術同學):

建立Cava排序策略

  1. 建立一個cava類型的業務排序策略:

  2. 填寫策略名稱稱,應用範圍選取業務排序,類型選擇cava指令碼:

  3. 點擊添加檔案,將cava指令碼樣本貼到指令碼代碼中,點擊編譯,如提示編譯成功,點擊儲存發布後即可進行搜尋測試

  4. cava指令碼樣本如下:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.features.algo.AlgoModel;

class BasicSimilarityScorer {
    //可以定義一些成員變數
    boolean init(OpsScorerInitParams params) {
        //實現你的代碼,初始請求層級的變數,比如類的成員變數
        return true;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        double score = 10;
        //實現你的代碼,並將算分結果賦值給score
        doc.trace("double value:", score);
        return score;
    }
};

class IntelligenceAlgorithmScorer {
    AlgoModel _algoModel;

    boolean init(OpsScorerInitParams params) {
      //注意tf_checkpoint 為固定參數
        _algoModel = AlgoModel.create(params, "tf_checkpoint","rank", "自訂排序的名稱"); 
        return true;
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        double modelScore = _algoModel.evaluate(params);
        doc.trace("rankModelScore: ", modelScore);
        
        double score = modelScore + 700;
        return score;
    }
};

搜尋測試效果展示

控制台左側導覽列“功能擴充”下進入“搜尋測試”頁面,輸入查詢條件即可:

image.png

注意

  • query、second_rank_type 、second_rank_name 、raw_query 是必填參數,搜尋請求時必須配置。

注意事項

  • 現階段僅支援定製排序模型在Cava外掛程式中使用;

  • 現階段僅支援獨享叢集規格的執行個體建立定製排序模型;

  • 每個執行個體最多支援3個定製排序模型;

  • 訓練晉陞條件中的raw_query是搜尋請求時需要攜帶的參數,並且要求是獨立的、有召回結果的、非重複的查詢詞,具體用法可參考搜尋Demo

  • 相關API/SDK參考:演算法周邊

  • 自訂排序模型的訓練需單獨計費,具體參考:HA3引擎執行個體計費概述

  • 最佳實務參考:定製排序模型最佳實務