定制排序模型

更新时间: 2023-11-24 14:07:13

定制排序模型介绍及操作步骤。

定制排序模型介绍

为了更好的满足用户的搜索排序体验,OpenSearch推出了定制排序模型功能,用户可以根据实际的业务场景添加自定义特征数据用于排序模型训练,并且可以自定义python或TensorFlow脚本编写排序模型描述,实现在搜索排序方面的灵活性和个性化。

操作步骤

创建定制排序模型前,需先创建特征描述模型描述

创建特征描述流程

  1. 创建独享型集群规格的OpenSearch-行业算法版实例之后,进入开放搜索控制台页面,左侧导航栏选择:OpenSearch 行业算法版>搜索算法中心>排序配置>定制排序模型,在右侧的特征描述页签下,点击创建按钮:image.png

  2. 填写特征描述名称,并添加排序模型特征(需填写排序模型特征名称,选择排序模型特征类型选择特征,参考:特征管理),点击确定即可:

image.pngimage.png

说明

创建模型描述流程

  1. 创建独享型规格应用之后,进入开放搜索控制台页面,左侧导航栏选择:OpenSearch行业算法版>搜索算法中心>排序配置>定制排序模型,在右侧的模型描述页签下,点击创建按钮:image.png

  2. 填写模型描述名称,编写python脚本内容,点击确定即可。image.png

相关代码示例参考:定制排序模型开发指南

创建排序模型流程

  1. 进入开放搜索控制台页面,左侧导航栏选择:OpenSearch行业算法版>搜索算法中心>排序配置>定制排序模型,在右侧的排序模型页签下,点击创建按钮:image.png

  2. 填写模型名称,选择模型类型(默认为自定义排序模型),可以设置是否开启定时训练,选择之前创建好的特征描述模型描述,点击确定即可:image.png

  3. 创建成功后,点击训练模型image.pngimage.png

  4. 开始训练后,可在模型详情页,可查看模型训练进度:image.png

  5. 训练完成后,若模型状态会变为可用状态,即可进行使用(若模型状态为不可用,请根据数据校验完整度等级升级条件进行调整,满足要求后,第二天再训练即可,若还有问题,可以提工单联系技术同学):image.png

创建Cava排序策略

  1. 创建一个cava类型的业务排序策略:image.png

  2. 填写策略名称,应用范围选择业务排序,类型选择cava脚本:image.png

  3. 点击添加文件,将cava脚本示例贴到脚本代码中,点击编译,如提示编译成功,点击保存发布后即可进行搜索测试image.pngimage.pngcava脚本示例如下:

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参考:算法周边

  • 自定义排序模型的训练需单独计费,具体参考:OpenSearch-行业算法版计费概述

  • 最佳实践参考:定制排序模型最佳实践

阿里云首页 智能开放搜索 OpenSearch 相关技术圈