定制排序模型
定制排序模型介紹及操作步驟。
定制排序模型介紹
為了更好的滿足用戶的搜索排序體驗(yàn),OpenSearch推出了定制排序模型功能,用戶可以根據(jù)實(shí)際的業(yè)務(wù)場景添加自定義特征數(shù)據(jù)用于排序模型訓(xùn)練,并且可以自定義python或TensorFlow腳本編寫排序模型描述,實(shí)現(xiàn)在搜索排序方面的靈活性和個(gè)性化。
操作步驟
創(chuàng)建定制排序模型前,需先創(chuàng)建特征描述和模型描述。
創(chuàng)建特征描述流程
創(chuàng)建獨(dú)享型集群規(guī)格的OpenSearch-行業(yè)算法版實(shí)例之后,進(jìn)入開放搜索控制臺頁面,左側(cè)導(dǎo)航欄選擇:OpenSearch 行業(yè)算法版>搜索算法中心>排序配置>定制排序模型,在右側(cè)的特征描述頁簽下,點(diǎn)擊創(chuàng)建按鈕:
填寫特征描述名稱,并添加排序模型特征(需填寫排序模型特征名稱,選擇排序模型特征類型和選擇特征,參考:特征管理),點(diǎn)擊確定即可:
排序模型特征類型參考:定制排序模型特征配置規(guī)范
選擇特征參考:系統(tǒng)內(nèi)置基礎(chǔ)特征
創(chuàng)建模型描述流程
創(chuàng)建獨(dú)享型規(guī)格應(yīng)用之后,進(jìn)入開放搜索控制臺頁面,左側(cè)導(dǎo)航欄選擇:OpenSearch行業(yè)算法版>搜索算法中心>排序配置>定制排序模型,在右側(cè)的模型描述頁簽下,點(diǎn)擊創(chuàng)建按鈕:
填寫模型描述名稱,編寫python腳本內(nèi)容,點(diǎn)擊確定即可。
相關(guān)代碼示例參考:定制排序模型開發(fā)指南
創(chuàng)建排序模型流程
進(jìn)入開放搜索控制臺頁面,左側(cè)導(dǎo)航欄選擇:OpenSearch行業(yè)算法版>搜索算法中心>排序配置>定制排序模型,在右側(cè)的排序模型頁簽下,點(diǎn)擊創(chuàng)建按鈕:
填寫模型名稱,選擇模型類型(默認(rèn)為自定義排序模型),可以設(shè)置是否開啟定時(shí)訓(xùn)練,選擇之前創(chuàng)建好的特征描述和模型描述,點(diǎn)擊確定即可:
創(chuàng)建成功后,點(diǎn)擊訓(xùn)練模型:
開始訓(xùn)練后,可在模型詳情頁,可查看模型訓(xùn)練進(jìn)度:
訓(xùn)練完成后,若模型狀態(tài)會變?yōu)?b>可用狀態(tài),即可進(jìn)行使用(若模型狀態(tài)為不可用,請根據(jù)數(shù)據(jù)校驗(yàn)的完整度等級的升級條件進(jìn)行調(diào)整,滿足要求后,第二天再訓(xùn)練即可,若還有問題,可以提工單聯(lián)系技術(shù)同學(xué)):
創(chuàng)建Cava排序策略
創(chuàng)建一個(gè)cava類型的業(yè)務(wù)排序策略:
填寫策略名稱,應(yīng)用范圍選擇業(yè)務(wù)排序,類型選擇cava腳本:
點(diǎn)擊添加文件,將cava腳本示例貼到腳本代碼中,點(diǎn)擊編譯,如提示編譯成功,點(diǎn)擊保存、發(fā)布后即可進(jìn)行搜索測試。
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) {
//實(shí)現(xiàn)你的代碼,初始請求級別的變量,比如類的成員變量
return true;
}
double score(OpsScoreParams params) {
OpsDoc doc = params.getDoc();
double score = 10;
//實(shí)現(xiàn)你的代碼,并將算分結(jié)果賦值給score
doc.trace("double value:", score);
return score;
}
};
class IntelligenceAlgorithmScorer {
AlgoModel _algoModel;
boolean init(OpsScorerInitParams params) {
//注意tf_checkpoint 為固定參數(shù)
_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;
}
};
搜索測試效果展示
控制臺左側(cè)導(dǎo)航欄“功能擴(kuò)展”下進(jìn)入“搜索測試”頁面,輸入查詢條件即可:
注意:
query、second_rank_type 、second_rank_name 、raw_query 是必填參數(shù),搜索請求時(shí)必須配置。
注意事項(xiàng)
現(xiàn)階段僅支持定制排序模型在Cava插件中使用;
現(xiàn)階段僅支持獨(dú)享集群規(guī)格的實(shí)例創(chuàng)建定制排序模型;
每個(gè)實(shí)例最多支持3個(gè)定制排序模型;
訓(xùn)練晉升條件中的raw_query是搜索請求時(shí)需要攜帶的參數(shù),并且要求是獨(dú)立的、有召回結(jié)果的、非重復(fù)的查詢詞,具體用法可參考搜索Demo;
相關(guān)API/SDK參考:算法周邊;
自定義排序模型的訓(xùn)練需單獨(dú)計(jì)費(fèi),具體參考:HA3引擎實(shí)例計(jì)費(fèi)概述;
最佳實(shí)踐參考:定制排序模型最佳實(shí)踐。