全部產品
Search
文件中心

Artificial Intelligence Recommendation:粗排配置

更新時間:Jul 13, 2024

當我們完成召回,過濾(曝光、狀態)等, 為了效能考慮,需要對 item 數量進行裁剪才能進入排序階段。有時候可以通過簡單的數量調整可以進行數量裁剪,比如使用 數量調整過濾(AdjustCountFilter)優先順序數量調整過濾(PriorityAdjustCountFilter) 來手動調整數量。

目前 PAI-REC 也支援通過調用模型來得到粗排得分,通過得分來進行數量裁剪。粗排使用模型可以得到更個人化、更精細的召回。

粗排大致分為三個階段,每個階段都不是必須,看實際情境設定。

  • 特徵載入, 這裡和排序之前的特徵載入配置是一樣的。參考特徵配置

  • 模型調用, 配置與精排裡的排序配置也保持一致。 參考演算法配置

  • 一系列 Action 操作, 這裡可以多種操作,比如調用粗排模型之後,需要先排序, 然後再擷取得分高的部分item。Action 操作包含 sort , filter 等多種操作,這裡配置好後,按照配置順序執行。

在粗排的配置中,需要考慮冷啟動召回的item , 如果用統一的粗排模型, 冷啟動的item由於缺少特徵可能會被打低分,需要對冷啟動召回的item進行單獨的粗排配置。 目前粗排分兩種, 主鏈路配置和冷啟動召回的配置,當然,如果沒有冷啟動的召回,只配置主鏈路的配置也是可以的。如果有冷啟動的鏈路,推薦使用 Pipeline 來設定冷啟動的鏈路。參考自訂Pipeline流程

GeneralRankConfs

主鏈路上的粗排配置對應配置總覽中的 GeneralRankConfs,GeneralRankConfs 是一個 Map[string]object 結構,其中 key 為情境,可以分情境使用不同粗排策略。

配置樣本:

{
"GeneralRankConfs":{
    "scene_name":{
        "FeatureLoadConfs":[
            {
                "FeatureDaoConf":{
                    "AdapterType":"hologres",
                    "HologresName":"",
                    "FeatureKey":"user:uid",
                    "UserFeatureKeyName":"userid",
                    "HologresTableName":"",
                    "UserSelectFields":"*",
                    "FeatureStore":"user"
                },
                "Features":[

                ]
            }
        ],
        "RankConf":{
            "RankAlgoList":[
                "sv_rocket_launching"
            ],
            "RankScore":"${sv_rocket_launching}",
            "ContextFeatures":["none"],
            "BatchCount":100,
            "Processor":"EasyRec"
        },
        "ActionConfs":[
            {
                "ActionType":"sort",
                "ActionName":"ItemRankScore"
            },
            {
                "ActionType":"filter",
                "ActionName":"GeneralCountFilter"
            }
        ]
    }
},
"FilterConfs" :[
{
      "Name": "GeneralCountFilter",
      "FilterType": "AdjustCountFilter",
      "ShuffleItem": false,
      "RetainNum": 500
}
]
}

配置中的 FeatureLoadConfs 和 RankConf 和精排中的特徵載入,演算法配置是一樣的,當然這兩個也不是必須的。

ActionConfs 是一組操作的結合, ActionType 標識操作類型,目前支援 sort 和 filter。 ActionName 標識操作的名稱,名稱必須在各自的類型配置中找到。 比如, ItemRankScore 會根據 score 進行排序, 這個是引擎裡預定義的。 而 GeneralCountFilter 必須在 FilterConfs 裡配置才行。

上面 ActionConfs 總的含義是首先執行 ItemRankScore 排序,得分高的item 排在前面,然後進行數量調整,ShuffleItem 為false 不需要進行位置調整,只保留item 數量為 500。

ColdStartGeneralRankConfs

冷啟動的粗排配置單獨列出,實際上比 GeneralRankConfs 多了 RecallNames 欄位,表示需要對哪些召回進行冷啟動的粗排設定。

配置樣本:

"ColdStartGeneralRankConfs": {
    "scene_name": {
      "RecallNames": [
        "ColdStartRecall",
        "ColdStartVideoVectorRecall",
        "VideoColdStartRecall1",
        "VideoColdStartRecall2",
        "VideoColdStartRecall3",
        "VideoColdStartRecall4",
        "LinUcbRecall",
        "LinUcbRecall_default",
        "LinUcbRecall_highQuality",
        "LinUcbRecall_default2"
      ],
      "ActionConfs": [
        {
          "ActionType": "filter",
          "ActionName": "PriorityAdjustCountFilterV4"
        }
      ]
    }
  }