全部產品
Search
文件中心

Artificial Intelligence Recommendation:向量召回介面

更新時間:May 16, 2026

背景

PAI-Rec 引擎提供了擷取 user/item 的向量的介面,方便使用者擷取 dssm 等模型產生的向量,方便使用者整合到系統中。並且可以把資料寫入到 datahub 訊息佇列中,可以提供一致性問題的跟蹤。

image

使用者可以使用 user_id + user_features 或者 item_id + item_features 請求介面,引擎會返迴響應的 embedding, 並且通過配置可以落到 datahub 訊息佇列。

介面說明

介面地址

/api/embedding

請求參數

參數名稱

參數說明

類型

是否必須

用例

uid

使用者id,如果產生 user 向量,需要傳入

string

“1000079”

scene_id

情境id

String

home_feed

user_features

user 側特徵,如果產生 user 向量,需要傳入

json map

{“age”:20, “sex”:”male”}

item_id

item id,如果產生 item 向量,需要傳入

string

248791390

item_features

item 側特徵,如果產生 item 向量,需要傳入

json map

{“age”:20, “sex”:”male”}

debug

debug 用,列印更多的日誌

bool

true

request_id

請求唯一標識ID,此參數為空白時,PAI-Rec 引擎會自動產生,如果使用者傳入,使用參數值當成請求的ID

string

“c46c3f5e-***-1248”

介面返回

名稱

說明

類型

樣本

code

介面返回業務碼

int

200

msg

商務資訊

string

success

request_id

請求的唯一標識

string

e332fe9c-***-d07f6

embedding

產生的向量資料

[]float32

[-0.10198704,0.10990965,0.04562417,***]

model_config

模型返回的透傳配置

map

{"model_version":"20260513"}

錯誤碼說明

錯誤碼

說明

msg

200

介面正常

success

400

參數錯誤,不同的情況, msg 說明不同

uid not empty 或者nexpected end of JSON input 等

500

伺服器錯誤, 以 HTTP 錯誤碼形式返回

請求範例

User 側產生向量

curl -v http://host/api/embedding -d '{"uid":"76295990", "user_features":{"context_industry_index":"0,0,0"}, "scene_id":"dssm_user_embedding"}'

返回資料

{
    "code": 200,
    "msg": "success",
    "request_id": "d96534c7-***-163b1e2f173b",
    "embedding": [
        -0.10198704,
        0.10990965,
        0.04562417,
				...
    ]
}

Item 側產生向量

curl -v http://host/api/embedding -d '{"item_id":"76295990", "item_features":{"context_industry_index":"0,0,0} "scene_id":"dssm_item_embedding"}'

返回資料

{
    "code": 200,
    "msg": "success",
    "request_id": "5f339fef-***-5e72466d4d68",
    "embedding": [
        0.003976563,
        0.22998181,
        0.013637823,
				...
    ]
}

引擎配置

在引擎配置中,提供了 EmbeddingConfs 單獨的模組來配置。主要包含兩部分

  • 如何請求召回模型

  • 如何落日誌,目前支援 datahub

{
"EmbeddingConfs": {
        "dssm_user_embedding": {
            "RankConf": {
                "RankAlgoList": [
                    "test_dssm_rec"
                ],
                "Processor": "EasyRec"
            },
            "DataSource": {
                "Name": "pairec_emb_dh",
                "Type": "datahub"
            }
        },
        "dssm_item_embedding": {
            "RankConf": {
                "RankAlgoList": [
                    "test_dssm_item"
                ],
                "Processor": "EasyRec"
            }
        }
    }
  }

EmbeddingConfs 支援多個情境下的配置。 在上面的例子中分別是

dssm_user_embedding、dssm_item_embedding。

  • RankConf 配置的模型資訊,和正常的引擎服務的模型配置一樣

  • DataSource

    • Type 訊息佇列類型,目前支援 datahub

    • pairec_emb_dh 的資料來源名稱, 在 DatahubConfs 能找到,上面的配置中,dssm_user_embedding 情境下請求會寫入到 pairec_emb_dh 訊息佇列中,而 dssm_item_embedding 沒有配置 DataSource 欄位,則不會落日誌。

模型配置

上面配置中,test_dssm_rec 和 test_dssm_item 分別是模型配置,在 AlgoConfs 裡能找到。

{
"AlgoConfs": [
        {
            "Name": "test_dssm_item",
            "Type": "EAS",
            "EasConf": {
                "Processor": "EasyRec",
                "Timeout": 300,
                "ResponseFuncName": "torchrecEmbeddingResponseFunc",
                "EndpointType": "DIRECT",
                "Url": "http://xxx.vpc.cn-beijing.pai-eas.aliyuncs.com/api/predict/test_dssm_item",
                "Auth": "***"
            }
        },
        {
            "Name": "test_dssm_rec",
            "Type": "EAS",
            "EasConf": {
                "Processor": "EasyRec",
                "Timeout": 300,
                "EndpointType": "DIRECT",
                "ResponseFuncName": "torchrecEmbeddingResponseFunc",
                "Url": "http://xxxx.vpc.cn-beijing.pai-eas.aliyuncs.com/api/predict/test_dssm_rec",
                "Auth": "***"
            }
        }
    ]
   }

這裡需要注意的是,ResponseFuncName 為固定值 torchrecEmbeddingResponseFunc。

資料來源配置

這裡說明 datahub 如何配置,才能採集日誌。

{
"DatahubConfs": {
        "pairec_emb_dh": {
            "Endpoint": "http://dh-cn-beijing-int-vpc.aliyuncs.com",
            "AccessId": "${AccessKey}",
            "AccessKey": "${AccessSecret}",
            "ProjectName": "",
            "TopicName": "",
            "Schemas": [
                {
                    "Field": "request_id",
                    "Type": "string"
                },
                {
                    "Field": "module",
                    "Type": "string"
                },
                {
                    "Field": "scene",
                    "Type": "string"
                },
                {
                    "Field": "request_time",
                    "Type": "integer"
                },
                {
                    "Field": "user_features",
                    "Type": "string"
                },
                {
                    "Field": "item_features",
                    "Type": "string"
                },
                {
                    "Field": "user_id",
                    "Type": "string"
                },
                {
                    "Field": "item_id",
                    "Type": "string"
                },
                {
                    "Field": "embeddings",
                    "Type": "string"
                }
            ]
        }
    }
}

上面只需要配置上 ProjectName 和 TopicName 即可。ProjectName 可以在 datahub 控制台上建立,上述配置後, TopicName 會自動建立。