リトリーバル設定は、設定の概要にある RecallConfs に対応します。
設定
PAI-Rec エンジンは、協調フィルタリング (UserCollaborativeFilterRecall)、ベクターリコール (HologresVectorRecall)、U2I リコール (UserCustomRecall) などの組み込みリコールテンプレート、および Hologres、PAI-FeatureStore、Tablestore などのデータソースをサポートしています。
再現率の共通設定
各再現率の設定は、共通設定のサブセットを使用します。このセクションでは、各再現率の設定のドキュメントで説明を繰り返すのを避けるため、これらの共通設定について説明します。
設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"RecallAlgo": "",
"ItemType": "",
"CacheAdapter": "",
"CacheConfig": "",
"CachePrefix": "",
"CacheTime": 0
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコール設定のカスタム名。 |
RecallType | 文字列 | はい | 組み込みのリコールタイプ。サポートされている値は次のとおりです:
|
RecallCount | 文字列 | はい | リコールするアイテムの数を指定します。 |
RecallAlgo | 文字列 | いいえ | リアルタイムベクターリコールのみに使用されます。使用するベクターモデルの名前を指定します。これは |
ItemType | 文字列 | いいえ | 推奨するアイテムタイプを指定します。 |
CacheAdapter | 文字列 | いいえ | リコール結果をキャッシュするためのアダプターを指定します。サポートされている値は次のとおりです:
|
CacheConfig | 文字列 | いいえ | キャッシュの設定を指定します。 Redis の例:
|
CachePrefix | 文字列 | いいえ | リコール結果のキャッシュキーに付加されるプレフィックスを指定します。 このパラメーターは、キャッシュが有効な場合に異なるリコール設定間のキーの競合を防止するために必須です。たとえば、 " |
CacheTime | 文字列 | いいえ | キャッシュの有効期間を秒単位で指定します。デフォルト値は 1800 です。 |
協調フィルタリング (UserCollaborativeFilterRecall)
Hologres
協調フィルタリングには、固定スキーマを持つ 2 つのテーブルが必要です。user_id に基づいてアイテムリストを取得する u2i テーブルと、類似アイテムを取得する i2i テーブルです。
i2i テーブルから直接類似アイテムを取得する方法 (u2i2i 方式) に加えて、i2x テーブルと x2i テーブルを使用して間接的に取得することもできます (u2i2x2i 方式)。この方法では、「x」はカテゴリ、ブランド、都市などのアイテム属性を表します。このプロセスでは、まずアイテムの「x」属性 (例: category フィールド) を取得し、次に x2i テーブルを使用して、この属性値を共有する人気アイテムを取得して推奨します。
u2i テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。この値は一意である必要があります。 |
item_ids | 文字列 | ユーザーが閲覧したアイテム ID のリスト。サポートされている形式: または |
i2i テーブル (u2i2i の場合のみ必須)
パラメーター | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
similar_item_ids | 文字列 |
|
i2x テーブル (u2i2x2i の場合のみ必須)
パラメーター | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
x | 文字列 | アイテム属性。列名はカスタマイズ可能で、エンジン設定で指定する必要があります。 |
x2i テーブル (u2i2x2i の場合のみ必須)
パラメーター | タイプ | 説明 |
x | 文字列 | アイテム属性。列名はカスタマイズ可能で、エンジン設定で指定する必要があります。 |
item_id | 文字列 | アイテム ID。複数の値を区切るには、カンマ (,) を使用します。 |
u2i2i 設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"UserCollaborativeDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"User2ItemTable": "u2i_table",
"Item2ItemTable": "i2i_table",
"Normalization": "on"
}
}
]
}u2i2x2i 設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"UserCollaborativeDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"User2ItemTable": "u2i_table",
"Item2XTable": "i2x_table",
"X2ItemTable": "x2i_table",
"XKey": "category",
"XDelimiter": ",",
"Normalization": "on"
}
}
]
}UserCollaborativeDaoConfig
パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | 固定値: |
HologresName | 文字列 | はい | データソース設定 ( |
User2ItemTable | 文字列 | はい | u2i テーブルの名前。 |
Item2ItemTable | 文字列 | いいえ | i2i テーブルの名前。このパラメーターは |
Item2XTable | 文字列 | いいえ | i2x テーブルの名前。このパラメーターは |
X2ItemTable | 文字列 | いいえ | x2i テーブルの名前。このパラメーターは |
XKey | 文字列 | いいえ | i2x テーブルと x2i テーブルの属性列 ( |
XDelimiter | 文字列 | いいえ | 「x」値の区切り文字。デフォルトでは、「x」値は分割されません。 |
Normalization | 文字列 | いいえ | リコールされたアイテムを正規化するかどうかを指定します。有効な値: |
PAI-FeatureStore
協調フィルタリングには、固定スキーマを持つ 2 つのテーブルが必要です。user_id に基づいてアイテムリストを取得する u2i テーブルと、類似アイテムを取得する i2i テーブルです。
両方のテーブルのデータは MaxCompute で生成され、オフラインビューとして PAI-FeatureStore に登録する必要があります。必要な MaxCompute テーブルスキーマを以下に説明します。
u2i テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。この値は一意である必要があります。 |
item_ids | 文字列 | ユーザーが閲覧したアイテム ID のリスト。サポートされている形式: または |
ds | 文字列 | MaxCompute テーブルのパーティションフィールド。 |
以下に、PAI-FeatureStore にデータを登録する例を示します。
i2i テーブル
パラメーター | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
similar_item_ids | 文字列 |
|
dt | 文字列 | MaxCompute テーブルのパーティションフィールド。 |
設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"UserCollaborativeDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"User2ItemFeatureViewName": "u2i_recall",
"Item2ItemFeatureViewName": "i2i_collaborative",
"Normalization": "on"
}
}
]
}UserCollaborativeDaoConfig
パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | 固定値: |
FeatureStoreName | 文字列 | はい | データソース設定 ( |
User2ItemFeatureViewName | 文字列 | はい | u2i テーブルに対応するビューの名前。 |
Item2ItemFeatureViewName | 文字列 | はい | i2i テーブルに対応するビューの名前。 |
Normalization | 文字列 | いいえ | リコールされたアイテムを正規化するかどうかを指定します。有効な値: |
Tablestore
協調フィルタリングには、固定スキーマを持つ 2 つのテーブルが必要です。user_id に基づいてアイテムリストを取得する u2i テーブルと、類似アイテムを取得する i2i テーブルです。
u2i テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。この値は一意である必要があります。 |
item_ids | 文字列 | ユーザーが閲覧したアイテム ID のリスト。サポートされている形式: または |
i2i テーブル
パラメーター | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
similar_item_ids | 文字列 |
|
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"UserCollaborativeDaoConf": {
"AdapterType": "tablestore",
"TableStoreName": "tablestore_info",
"User2ItemTable": "u2i_table",
"Item2ItemTable": "i2i_table",
"Normalization": "on"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | 固定値: |
TableStoreName | 文字列 | はい | データソース設定 ( |
User2ItemTable | 文字列 | はい | u2i テーブルの名前。 |
Item2ItemTable | 文字列 | はい | i2i テーブルの名前。 |
Normalization | 文字列 | いいえ | リコールされたアイテムを正規化するかどうかを指定します。有効な値: |
Redis
Redis の協調フィルタリングプロセスは独自のもので、2 つのステップで構成されます。
RedisPrefix値とユーザー ID (uid) を連結してキーを作成し、u2i リストをクエリします。結果は、次のいずれかの形式の文字列です:item_id1,item_id2,item_id3...またはitem_id1:score1,item_id2:score2,item_id3:score3...。i2i リストをクエリします。前のステップで取得したアイテム ID を使用して
MGETコマンドを実行します。i2i データも文字列で、次の形式です:item_id1:score1,item_id2:score2,item_id3:score3...。
設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter",
"RecallType": "UserCollaborativeFilterRecall",
"RecallCount": 1000,
"UserCollaborativeDaoConf": {
"AdapterType": "redis",
"RedisName": "redis_info",
"RedisPrefix": "cr_",
"Normalization": "on"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | 固定値: |
RedisName | 文字列 | はい | データソース設定 ( |
RedisPrefix | 文字列 | いいえ | u2i データキーのプレフィックス。このプレフィックスは、キーを作成するためにユーザー ID ( |
Redis はサポート対象の唯一のデータキャッシュです。
RealTimeU2IRecall
Hologres
この方式は、協調フィルタリングと同じロジックでデータを取得しますが、ユーザー行動履歴テーブルから U2I データをリアルタイムで計算します。
システムは、ログに基づいてユーザー行動履歴テーブルをリアルタイムで更新し、リアルタイムリコールを実現します。
協調フィルタリングと同様に、この方式も u2i2x2i をサポートしています。まず、アイテムの x 属性を取得し、次に同じ属性を持つ他のアイテムをリコールします。
ユーザー行動履歴テーブル
フィールド | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。 |
item_id | 文字列 | ユーザーが閲覧したアイテムの ID。 |
event | 文字列 | イベント名。 |
play_time | float | 動画の視聴時間などのイベントの継続時間。該当しない場合は 0 に設定します。 |
timestamp | int | イベントのタイムスタンプ (秒単位)。 |
i2i テーブル (u2i2i の場合のみ必要)
フィールド | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
similar_item_ids | 文字列 |
|
i2x テーブル (u2i2x2i の場合のみ必要)
フィールド | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
x | 文字列 | アイテムの属性。列名はカスタマイズ可能であり、エンジン設定で指定する必要があります。 |
x2i テーブル (u2i2x2i の場合のみ必要)
フィールド | タイプ | 説明 |
x | 文字列 | アイテムの属性。列名はカスタマイズ可能であり、エンジン設定で指定する必要があります。 |
item_id | 文字列 | アイテム ID。複数の値を区切るには、カンマ (,) を使用します。 |
行動テーブルを作成するステートメント:
BEGIN;
CREATE TABLE "sv_rec"."user_behavior_seq" (
"user_id" text NOT NULL,
"item_id" text NOT NULL,
"event" text NOT NULL,
"play_time" float8 NULL,
"timestamp" int8 NOT NULL
);
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior_seq"', 'orientation', 'column');
call set_table_property('"sv_rec"."user_behavior_seq"', 'distribution_key', '"user_id"');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior_seq"', 'clustering_key', '"user_id:asc","timestamp:desc"');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior_seq"', 'bitmap_columns', '"user_id","event"');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior_seq"', 'dictionary_encoding_columns', '"user_id:auto","item_id:auto","event"');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior_seq"', 'time_to_live_in_seconds', '2592000');
comment on table "sv_rec"."user_behavior_seq" is 'ユーザーのリアルタイム行動シーケンス';
comment on column "sv_rec"."user_behavior_seq"."user_id" is 'ユーザーID';
comment on column "sv_rec"."user_behavior_seq"."item_id" is 'アイテムID';
comment on column "sv_rec"."user_behavior_seq"."event" is 'イベントタイプ';
comment on column "sv_rec"."user_behavior_seq"."play_time" is '閲覧または再生時間';
comment on column "sv_rec"."user_behavior_seq"."timestamp" is 'タイムスタンプ(秒単位)';
COMMIT;設定例:
{
"RecallConfs": [
{
"Name": "RealTimeEtrecRecall",
"RecallType": "RealTimeU2IRecall",
"RecallCount": 200,
"RealTimeUser2ItemDaoConf": {
"UserTriggerDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "user_behavior_table",
"WhereClause": "event='xxx'",
"Limit": 200,
"EventPlayTime": "playback:5000;playvslide:5000",
"EventWeight": "playback:1;playvslide:2",
"WeightExpression": "exp((-0.2)*((currentTime-eventTime)/3600/24))",
"WeightMode": "sum",
"NoUsePlayTimeField": false
},
"Item2ItemTable": "i2i_table",
"SimilarItemIdField": "similar_item_ids"
}
}
]
}u2i2x2i 設定例:
{
"RecallConfs": [
{
"Name": "RealTimeU2I2X2IRecall",
"RecallType": "RealTimeU2IRecall",
"RecallCount": 200,
"RealTimeUser2ItemDaoConf": {
"UserTriggerDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "user_behavior_table",
"WhereClause": "event='xxx'",
"Limit": 200,
"EventPlayTime": "playback:5000;playvslide:5000",
"EventWeight": "playback:1;playvslide:2",
"WeightExpression": "exp((-0.2)*((currentTime-eventTime)/3600/24))",
"WeightMode": "sum",
"NoUsePlayTimeField": false
},
"Item2XTable": "i2x_table",
"X2ItemTable": "x2i_table",
"XKey": "category",
"XDelimiter": ","
}
}
]
}RealTimeUser2ItemDaoConf:
フィールド | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | 固定値: |
HologresName | 文字列 | はい |
|
HologresTableName | 文字列 | はい | Hologres のユーザー行動履歴テーブルの名前。 |
WhereClause | 文字列 | いいえ | フィルター条件。SQL の WHERE 句に相当します。 |
Limit | int | いいえ | クエリの制限。SQL の LIMIT 句に相当します。 |
EventPlayTime | 文字列 | いいえ | 再生時間によってイベントをフィルタリングします。例えば、 |
EventWeight | 文字列 | いいえ | 各イベントの重みを定義できます。デフォルト値は 1 です。 |
WeightExpression | 文字列 | いいえ | 時間減衰に基づいてイベントの重みを計算するための式。 |
WeightMode | 文字列 | いいえ | トリガーの重みを計算する方法。有効な値は |
NoUsePlayTimeField | bool | いいえ |
|
Item2ItemTable | 文字列 | いいえ | Hologres の i2i テーブルの名前。このパラメーターは u2i2i 方式の場合に必要です。 |
SimilarItemIdField | 文字列 | いいえ | Hologres の i2i テーブルのフィールド名。デフォルト値: |
Item2XTable | 文字列 | いいえ | i2x テーブルの名前。このパラメーターは u2i2x2i 方式の場合に必要です。 |
X2ItemTable | 文字列 | いいえ | x2i テーブルの名前。このパラメーターは u2i2x2i 方式の場合に必要です。 |
XKey | 文字列 | いいえ | x キー。i2x テーブルと x2i テーブルの x 列の名前です。このパラメーターは u2i2x2i 方式の場合に必要です。 |
XDelimiter | 文字列 | いいえ | x 値のデリミタ。デフォルトでは、x 値は分割されません。 |
PAI-FeatureStore
この方式は、協調フィルタリングと同じロジックでデータを取得しますが、ユーザー行動履歴テーブルから U2I データをリアルタイムで計算します。
システムは、ログに基づいてユーザー行動履歴テーブルをリアルタイムで更新し、リアルタイムリコールを実現します。
PAI-FeatureStore プラットフォームでは、行動シーケンス特徴量ビューを使用してユーザー行動履歴データを保存できます。
ユーザー行動履歴テーブル
フィールド | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。 |
item_id | 文字列 | ユーザーが閲覧したアイテムの ID。 |
event | 文字列 | イベント名。 |
playtime | float | 動画の視聴時間などのイベントの継続時間。該当しない場合は 0 に設定します。 |
event_unix_time | int | イベントのタイムスタンプ (秒単位)。 |
i2i テーブル
フィールド | タイプ | 説明 |
item_id | 文字列 | アイテム ID。この値は一意である必要があります。 |
similar_item_ids | 文字列 |
|
設定例:
{
"RecallConfs": [
{
"Name": "realtimeu2i",
"RecallType": "RealTimeU2IRecall",
"RecallCount": 200,
"RealTimeUser2ItemDaoConf": {
"UserTriggerDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "user_behavior_table",
"TriggerCount": 100,
"EventWeight": "click:1;order:1",
"WeightExpression": "exp((-0.2)*((currentTime-eventTime)/3600/24))",
"WeightMode": "sum",
"NoUsePlayTimeField": false,
"ItemIdFieldName": "item_id",
"EventFieldName": "event",
"PlayTimeFieldName": "playtime",
"TimestampFieldName": "event_unix_time"
},
"Item2ItemFeatureViewName": "i2i_collaborative",
"SimilarItemIdField": "similar_item_ids"
}
}
]
}RealTimeUser2ItemDaoConf:
フィールド | タイプ | 必須 | 説明 |
UserTriggerDaoConf | |||
| 文字列 | はい | 固定値: |
| 文字列 | はい |
|
| 文字列 | はい | PAI-FeatureStore のユーザー行動履歴シーケンス特徴量ビューの名前。 |
| int | はい | ユーザー行動トリガーの数。 |
| 文字列 | いいえ | 再生時間によってイベントをフィルタリングします。例えば、 |
| 文字列 | はい | 各イベントに重みを定義できます。デフォルトの重みは 1 です。複数のイベントの設定は、セミコロン ( |
| 文字列 | はい | 時間減衰に基づいてイベントの重みを計算するための式。 |
| 文字列 | いいえ | トリガーの重みを計算する方法。有効な値は |
| bool | いいえ |
|
| 文字列 | いいえ | ユーザー行動シーケンスにおける |
| 文字列 | いいえ | ユーザー行動シーケンスにおける |
| 文字列 | いいえ | ユーザー行動シーケンスにおける再生時間フィールドの名前。デフォルト値: |
| 文字列 | いいえ | ユーザー行動シーケンスにおけるタイムスタンプフィールドの名前。デフォルト値: |
Item2ItemFeatureViewName | 文字列 | いいえ | PAI-FeatureStore の i2i テーブルの特徴量ビューの名前。このパラメーターは u2i2i 方式の場合に必要です。 |
SimilarItemIdField | 文字列 | いいえ | PAI-FeatureStore の i2i テーブルのフィールド名。デフォルト値: |
MergeMode | 文字列 | いいえ |
|
I2ICacheSize | int | いいえ | この値が 0 より大きい場合、キャッシングが有効になります。 |
I2ICacheTime | int | いいえ | キャッシングが有効な場合、このパラメーターはキャッシュの有効期間を秒単位で設定します。 |
Hologres のベクトルリコール
ベクトルリコールでサポートされているデータソースは Hologres のみです。すべてのベクトルデータは Hologres テーブルに格納する必要があります。
設定例:
{
"RecallConfs": [
{
"Name": "vector_recall",
"RecallType": "HologresVectorRecall",
"RecallCount": 100,
"VectorDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "user_embedding_table",
"KeyField": "user_id",
"EmbeddingField": "emb"
},
"HologresVectorConf": {
"VectorTable": "item_embedding_table",
"VectorEmbeddingField": "emb",
"VectorKeyField": "item_id"
}
}
]
}VectorDaoConf:
パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | データソースのタイプです。 |
HologresName | 文字列 | はい |
|
HologresTableName | 文字列 | はい | Hologres のベクトルテーブルの名前です。 |
KeyField | 文字列 | はい | ベクトルテーブルのプライマリキーフィールドです。 |
EmbeddingField | 文字列 | はい | ベクトル埋め込みを格納するフィールドです。 |
HologresVectorConf:
パラメーター | タイプ | 必須 | 説明 |
VectorTable | 文字列 | はい | Hologres のアイテムベクターテーブルです。 |
VectorEmbeddingField | 文字列 | はい | アイテムベクターテーブル内でベクターを格納するフィールドです。 |
VectorKeyField | 文字列 | はい | アイテムベクターテーブルのプライマリキーフィールドです。 |
VectorDaoConf オブジェクトは、ユーザーベクターテーブルを定義するものです。テーブル定義は次のとおりです。
BEGIN;
CREATE TABLE "public"."graphsage_user_embedding" (
"user_id" text NOT NULL,
"emb" float4[] NOT NULL,
"dt" text,
PRIMARY KEY ("user_id")
);
CALL SET_TABLE_PROPERTY('"public"."graphsage_user_embedding"', 'orientation', 'row');
CALL SET_TABLE_PROPERTY('"public"."graphsage_user_embedding"', 'clustering_key', '"user_id:asc"');
CALL SET_TABLE_PROPERTY('"public"."graphsage_user_embedding"', 'time_to_live_in_seconds', '3153600000');
comment on column "public"."graphsage_user_embedding"."user_id" is 'ユーザー ID';
comment on column "public"."graphsage_user_embedding"."emb" is 'ユーザーの特徴ベクトル';
comment on column "public"."graphsage_user_embedding"."dt" is 'yyyyMMdd 形式の日付';
COMMIT;HologresVectorConf テーブルは、アイテムベクトルを格納します:
BEGIN;
CREATE TABLE "public"."graphsage_item_embedding" (
"item_id" text NOT NULL,
"emb" float4[] NOT NULL,
PRIMARY KEY ("item_id")
);
CALL SET_TABLE_PROPERTY('"public"."graphsage_item_embedding"', 'orientation', 'column');
CALL SET_TABLE_PROPERTY('"public"."graphsage_item_embedding"', 'bitmap_columns', '"item_id"');
CALL SET_TABLE_PROPERTY('"public"."graphsage_item_embedding"', 'time_to_live_in_seconds', '3153600000');
comment on column "public"."graphsage_item_embedding"."item_id" is 'アイテム ID';
comment on column "public"."graphsage_item_embedding"."emb" is 'アイテムの特徴ベクトル';
COMMIT;リアルタイム Hologres ベクターリコール (OnlineHologresVectorRecall)
リアルタイムベクトルリコールは標準ベクトルリコールと似ており、どちらも Hologres テーブルのデータを使用します。主な違いは、ユーザーベクトルがテーブルから取得されるのではなく、モデルによってリアルタイムで生成される点です。次に、このベクトルを使ってアイテムベクトルテーブルにクエリを実行します。このプロセスには、主に 3 つのステップがあります:
データテーブルにクエリを実行し、ユーザーの特徴を取得します。
Elastic Algorithm Service (EAS) にデプロイされたベクターモデルを呼び出し、ユーザーベクターを生成します。
同様に、アイテムベクターテーブルにクエリを実行し、アイテムベクターを取得します。
設定例:
{
"RecallConfs": [
{
"Name": "online_vector_recall",
"RecallType": "OnlineHologresVectorRecall",
"RecallCount": 500,
"UserFeatureConfs": [
{
"FeatureDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"FeatureKey": "user:uid",
"UserFeatureKeyName": "userid",
"HologresTableName": "user_all_feature_table",
"UserSelectFields": "*",
"FeatureStore": "user"
},
"Features": []
}
],
"RecallAlgo": "sv_v2_mind",
"HologresVectorConf": {
"HologresName": "holo_info",
"VectorTable": "item_embedding_table",
"VectorEmbeddingField": "item_emb",
"VectorKeyField": "item_id"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | カスタムリコール名を指定します。 |
RecallType | 文字列 | はい | リコールタイプを指定します。値は |
RecallCount | 整数 | はい | リコール数を指定します。 |
RecallAlgo | 文字列 | はい | 使用するベクトルモデル名を指定します。これは |
UserFeatureConfs:
パラメーター | タイプ | 必須 | 説明 |
AdapterType | 文字列 | はい | データソースのタイプ。 |
HologresName | 文字列 | はい |
|
FeatureKey | 文字列 | はい | エンジンの |
UserFeatureKeyName | 文字列 | はい | ユーザー特徴テーブルのプライマリキーフィールド。 |
HologresTableName | 文字列 | はい | ユーザー特徴テーブルの名前。 |
UserSelectFields | 文字列 | はい | 選択する特徴を指定します。すべての特徴を選択するには |
FeatureStore | 文字列 | はい | エンジン内で特徴を格納する場所を指定します。有効な値: |
HologresVectorConf:
パラメーター | タイプ | 必須 | 説明 |
HologresName | 文字列 | はい |
|
VectorTable | 文字列 | はい | Hologres のアイテムベクトルテーブルの名前。 |
VectorEmbeddingField | 文字列 | はい | アイテムベクトルテーブル内のベクトル埋め込みを格納するフィールド。 |
VectorKeyField | 文字列 | はい | アイテムベクトルテーブルのプライマリキーフィールド。 |
sv_v2_mind モデルは、AlgoConfs で次のように定義されています。
{
"AlgoConfs": [
{
"Name": "sv_v2_mind",
"Type": "EAS",
"EasConf": {
"Processor": "EasyRec",
"Timeout": 100,
"ResponseFuncName": "easyrecUserEmbResponseFunc",
"Url": "http://xxx.vpc.cn-beijing.pai-eas.aliyuncs.com/api/predict/sv_v2_mind",
"Auth": "xxx"
}
}
]
}構成はランキングモデルと同様ですが、ResponseFuncName パラメーターを easyrecUserEmbResponseFunc に設定する必要があります。
FAISS オンラインベクターリコール
OnlineVectorRecall コンポーネントは、TorchEasyRec プロセッサで実装されたオンラインベクトルリコールサービスに接続します。OnlineHologresVectorRecall とは異なり、OnlineVectorRecall はオンライン検索のために Hologres アイテムベクトルテーブルに依存しません。代わりに、PAI-EAS サービス内で特徴量エンコーディング、ユーザータワー推論、および FAISS TopK 検索を実行し、リコールされたアイテムのリストを直接返します。
オンラインリクエストのプロセス:
PAI-Rec エンジンは、生のユーザーフィーチャーを含むリクエストを送信します。
TorchEasyRec プロセッサは、FG モジュールの特徴量エンコーディングを内部で実行します。これはオフラインプロセスと一貫しています。
ユーザー タワーは、オンライン推論によってユーザー埋め込みを生成します。
ユーザー埋め込みを使用して、FAISS インデックスからトップ K の類似アイテムを取得します。
アイテム ID と対応する距離スコアのリストが、ファインランキング用に返されます。
レコメンデーションエンジンの設定ファイルの例:
{
"RecallConfs": [{
"Name": "{model_name}",
"RecallType": "OnlineVectorRecall",
"RecallCount": 200,
"RecallAlgo": "{model_name}",
"VectorAlgoType": "torchrec_vector"
}],
"AlgoConfs": [{
"Name": "{model_name}",
"Type": "EAS",
"EasConf": {
"Processor": "EasyRec",
"ResponseFuncName": "torchrecEmbeddingItemsResponseFunc",
"Url": "http://{aliyun_id}.vpc.{region}.pai-eas.aliyuncs.com/api/predict/{model_name}",
"EndpointType": "DIRECT",
"Auth": "{eas_token}"
}
}]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。値は |
RecallCount | 整数 | はい | リコールするアイテムの数。 |
RecallAlgo | 文字列 | はい | 呼び出すオンラインモデルの名前。このモデルを |
VectorAlgoType | 文字列 | はい | オンラインベクトルリコールのアルゴリズム。値は |
EasConf 構成パラメーター
パラメーター | タイプ | 必須 | 説明 |
Processor | 文字列 | はい |
|
ResponseFuncName | 文字列 | はい |
|
Url | 文字列 | はい | EAS のサービスエンドポイント。 |
EndpointType | 文字列 | いいえ | アクセスモード。例: |
Auth | 文字列 | はい | EAS サービスへのアクセスに使用する認証情報。 |
注
RecallAlgoはAlgoConfs.Nameと一致する必要があります。OnlineVectorRecallは、リコールに EasyRec プロセッサ オンラインサービスを使用するため、別途 Hologres アイテム ベクトル テーブルは必要ありません。現在の参照構成では、
VectorAlgoTypeはtorchrec_vectorです。ResponseFuncNameはtorchrecEmbeddingItemsResponseFuncである必要があります。オンラインサービスは、内部で FG エンコーディング、ユーザー タワー推論、FAISS 検索を実行し、リコール結果を直接返します。
オンラインHologresベクトルリコールとの違い
OnlineVectorRecall:ユーザー埋め込みを計算し、内部で FAISS リトリーバルを実行して、アイテムのリストを返します。OnlineHologresVectorRecall:ユーザー埋め込みのみを返し、PAI-Rec が Hologres のアイテムベクターテーブルを使用してリコールを実行できるようにします。
U2I 再現率 (UserCustomRecall)
Hologres
ユーザー ID に基づいてアイテムのリストを取得します。このテーブルは、事前定義されたスキーマを使用します。
U2I テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。 |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall",
"RecallType": "UserCustomRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "user_item_table"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールタイプ。値を |
RecallCount | 整数 | はい | リコールするアイテム数。 |
DaoConf | JSON オブジェクト | はい | DAO 設定。 |
AdapterType | 文字列 | はい | データソースのタイプ。値を |
HologresName | 文字列 |
| |
HologresTableName | 文字列 | はい | Hologres の U2I テーブルの名前。 |
PAI-FeatureStore
ユーザー ID に基づいてアイテムのリストを取得します。このテーブルは、事前定義されたスキーマを使用します。
このテーブルのデータは MaxCompute で生成され、PAI-FeatureStore にオフライン特徴量ビューとして登録する必要があります。MaxCompute テーブルでは、次のスキーマを使用する必要があります。
U2I テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。 |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
ds | 文字列 | MaxCompute テーブルのパーティションフィールド。このフィールド名はカスタマイズ可能です。 |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall",
"RecallType": "UserCustomRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "u2i_recall"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールタイプ。値を |
RecallCount | 整数 | はい | リコールするアイテム数。 |
DaoConf | JSON オブジェクト | はい | DAO 設定。 |
AdapterType | 文字列 | はい | データソースのタイプ。値を |
FeatureStoreName | 文字列 |
| |
FeatureStoreViewName | 文字列 | はい | U2I テーブルの特徴量ビューの名前。 |
Tablestore
ユーザー ID に基づいてアイテムのリストを取得します。このテーブルは、事前定義されたスキーマを使用します。
U2I テーブル
パラメーター | タイプ | 説明 |
user_id | 文字列 | ユーザー ID。 |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall",
"RecallType": "UserCustomRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "tablestore",
"TableStoreName": "ots_info",
"TableStoreTableName": "user_item_table"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールタイプ。値を |
RecallCount | 整数 | はい | リコールするアイテム数。 |
DaoConf | JSON オブジェクト | はい | DAO 設定。 |
AdapterType | 文字列 | はい | データソースのタイプ。値を |
TableStoreName | 文字列 |
| |
TableStoreTableName | 文字列 | はい | Tablestore の U2I テーブルの名前。 |
Redis
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall",
"RecallType": "UserCustomRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "redis",
"RedisName": "redis_info",
"RedisPrefix": ""
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールタイプ。値を |
RecallCount | 整数 | はい | リコールするアイテム数。 |
DaoConf | JSON オブジェクト | はい | DAO 設定。 |
AdapterType | 文字列 | はい | データソースのタイプ。値を |
RedisName | 文字列 |
| |
RedisPrefix | 文字列 | はい | U2I データキーのプレフィックス。完全なキーは、このプレフィックスとユーザー ID を連結して構築されます。値は、次のいずれかの形式の文字列です: |
グラフリコール
グラフリトリーブは、U2I リトリーブの一種で、GraphCompute グラフデータベースを使用します。
設定例:
{
"RecallConfs": [
{
"Name": "graph_recall",
"RecallType": "GraphRecall",
"RecallCount": 500,
"GraphConf": {
"GraphName": "graph_test",
"ItemId": "item_id",
"QueryString": "g(\"test\").V(\"$1\").hasLabel(\"user\").outE().inV()",
"Params": [
"user.uid"
]
}
}
]
}GraphConf :
パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。値は |
RecallCount | 整数 | はい | リコールするアイテムの数。 |
GraphName | 文字列 | はい |
|
ItemId | 文字列 | はい | グラフクエリ結果内のアイテムのプライマリキー。 |
QueryString | 文字列 | はい | グラフリコール用の Gremlin クエリ文字列です。 |
Params | 文字列 | はい |
|
ユーザーグループ ホットリコール (UserGroupHotRecall)
Hologres
ユーザーグループホットリコールテーブルには、事前定義されたスキーマがあります。
group_hot_table
フィールド | タイプ | 説明 |
trigger_id | 文字列 | 複数の特徴量の値から構成される ID。 |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
trigger_id は、地域や OS などのユーザー特徴量とコンテキスト情報を組み合わせたものです。
特徴量の値をアンダースコア (
_) で順序通りに連結してtrigger_idを作成します。特徴量の値が空の場合は、文字列 "NULL" を使用します。
Boundariesパラメーターを含む特徴量は、左開右閉区間に離散化する必要があります。例えば、年齢の境界値が[20, 30, 40, 50]の場合、結果のトリガー値は<=20、20-30、30-40、40-50、および>50となります。
ユーザーの年齢が 23 の場合、"20-30" に対応します。
ユーザーの年齢が空の場合、"NULL" に対応します。
ユーザーの年齢が 60 の場合、">50" に対応します。
ユーザーの年齢が 19 の場合、"<=20" に対応します。
Hologres テーブルの例:
この例では、性別、年齢、OS の 3 つの特徴量を使用します。
trigger_id | item_ids |
Male_<=20_IOS | item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
Female_20-30_Android | item_id4:recall_id4:score4,item_id5:recall_id5:score5... |
... | ... |
設定例:
{
"RecallConfs": [
{
"Name": "user_group_hot_recall",
"RecallType": "UserGroupHotRecall",
"RecallCount": 500,
"Triggers": [
{
"TriggerKey": "gender"
},
{
"TriggerKey": "age",
"Boundaries": [20,30,40,50]
},
{
"TriggerKey": "os"
}
],
"DaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "group_hot_table"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコール設定のカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。 |
RecallCount | 整数 | はい | リコールするアイテムの数。 |
Triggers | JSON 配列 | はい |
|
| 文字列 | はい | ユーザー特徴量からトリガー値を取得するキー。 |
| JSON 整数配列 | いいえ | 数値特徴量を離散化するための境界値の配列。 |
DaoConf | JSON オブジェクト | はい | データアクセスオブジェクト (DAO) の定義。 |
| 文字列 | はい | データソースのタイプ。 |
| 文字列 | はい |
|
| 文字列 | はい | Hologres データテーブルの名前。 |
PAI-FeatureStore
ユーザーグループホットリコールテーブルには、事前定義されたスキーマがあります。
このテーブルのデータは MaxCompute で準備します。テーブルを PAI-FeatureStore にオフライン特徴量ビューとして登録する必要があります。MaxCompute テーブルには次のスキーマが必要です:
group_hot_table
フィールド | タイプ | 説明 |
trigger_id | 文字列 | 複数の特徴量の値から構成される ID。 |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
ds | 文字列 | MaxCompute テーブルのパーティションフィールド。フィールド名はカスタマイズできます。 |
trigger_id は、地域や OS などのユーザー特徴量とコンテキスト情報を組み合わせたものです。
特徴量の値をアンダースコア (
_) で順序通りに連結してtrigger_idを作成します。特徴量の値が空の場合は、文字列 "NULL" を使用します。
Boundariesパラメーターを含む特徴量は、左開右閉区間に離散化する必要があります。例えば、年齢の境界値が[20, 30, 40, 50]の場合、結果のトリガー値は<=20、20-30、30-40、40-50、および>50となります。
ユーザーの年齢が 23 の場合、"20-30" に対応します。
ユーザーの年齢が空の場合、"NULL" に対応します。
ユーザーの年齢が 60 の場合、">50" に対応します。
ユーザーの年齢が 19 の場合、"<=20" に対応します。
MaxCompute テーブルの例:
この例では、性別、年齢、OS の 3 つの特徴量を使用します。
trigger_id | item_ids |
Male_<=20_IOS | item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
Female_20-30_Android | item_id4:recall_id4:score4,item_id5:recall_id5:score5... |
... | ... |
この設定では、トリガー特徴量エンティティを使用します。
設定例:
{
"RecallConfs": [
{
"Name": "user_group_hot_recall",
"RecallType": "UserGroupHotRecall",
"RecallCount": 500,
"Triggers": [
{
"TriggerKey": "gender"
},
{
"TriggerKey": "age",
"Boundaries": [20,30,40,50]
},
{
"TriggerKey": "os"
}
],
"DaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "group_hot_recall"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコール設定のカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。 |
RecallCount | 整数 | はい | リコールするアイテムの数。 |
Triggers | JSON 配列 | はい |
|
| 文字列 | はい | ユーザー特徴量からトリガー値を取得するキー。 |
| JSON 整数配列 | いいえ | 数値特徴量を離散化するための境界値の配列。 |
DaoConf | JSON オブジェクト | はい | データアクセスオブジェクト (DAO) の定義。 |
| 文字列 | はい | データソースのタイプ。 |
| 文字列 | はい |
|
| 文字列 | はい | ホットリコールテーブルの特徴量ビューの名前。 |
グルーピングのホットリコールカウントが継続的に 0 の場合は、エンジン設定におけるトリガーの連結順序が、リコールテーブルにおける順序と一致していることを確認してください。
グローバルホットリコール (UserGlobalHotRecall)
Hologres
グローバルホットリコールのテーブルスキーマはグループリコールのものと同じですが、グローバルホットリコールテーブルにはレコードが 1 つのみ含まれ、その trigger_id は -1 です。
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall",
"RecallType": "UserGlobalHotRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "global_hotness_table"
}
}
]
}PAI-FeatureStore
グローバルホットリコールのテーブルスキーマはグループリコールのものと同じですが、グローバルホットリコールテーブルにはレコードが 1 つのみ含まれ、その trigger_id は -1 です。
テーブルデータは MaxCompute で生成されます。オフライン FeatureView を使用して、テーブルを特徴量ストアに登録する必要があります。MaxCompute テーブルのスキーマは次のとおりです:
フィールド | タイプ | 説明 |
trigger_id | 文字列 | テーブルには 1 行のみが含まれており、このフィールドの値は |
item_ids | 文字列 | アイテム ID のリスト。サポートされている形式: |
ds | 文字列 | MaxCompute テーブルのパーティションフィールド。フィールド名はカスタマイズ可能です。 |
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall",
"RecallType": "UserGlobalHotRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "global_hot_recall"
}
}
]
}Tablestore
グローバルホットリコールのテーブルスキーマはグループリコールのものと同じですが、グローバルホットリコールテーブルにはレコードが 1 つのみ含まれ、その trigger_id は -1 です。
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall",
"RecallType": "UserGlobalHotRecall",
"RecallCount": 500,
"DaoConf": {
"AdapterType": "tablestore",
"TableStoreName": "ots_info",
"TableStoreTableName": "global_hotness_recall"
}
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコール設定のカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。 |
RecallCount | 整数 | はい | リコールするアイテムの数。 |
DaoConf | JSON オブジェクト | はい | データアクセスオブジェクト (DAO) 設定を指定します。 |
AdapterType | 文字列 | はい | データソースタイプ。 |
TableStoreName | 文字列 | はい |
|
TableStoreTableName | 文字列 | はい | Tablestore インスタンス内のデータテーブルの名前。 |
コールドスタート再現率
アイテムテーブルを条件または時間に基づいてフィルタリングして、指定されたルールを満たす候補セットをクエリします。
Hologres
{
"RecallConfs": [
{
"Name": "AllLiveItemRecall",
"RecallType": "ColdStartRecall",
"RecallCount": 3000,
"ColdStartDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"HologresTableName": "item_status_table",
"WhereClause": "islist_status=1",
"PrimaryKey": "\"item_id\"",
"TimeInterval": 0
}
}
]
}ColdStartDaoConf:
パラメーター | タイプ | 必須 | 説明 |
Name | string | はい | リコールのカスタム名 |
RecallType | string | はい | リコールタイプです。値は |
RecallCount | int | はい | リコールするアイテムの数です。 |
ColdStartDaoConf | json object | はい | コールドスタートデータの設定です。 |
AdapterType | string | はい |
|
HologresName | string | はい | HologresConfs で設定された |
HologresTableName | string | はい |
|
WhereClause | string | いいえ | フィルター条件です。時間でフィルタリングするには、 |
PrimaryKey | string | はい | テーブルのプライマリキーです。 |
TimeInterval | int | いいえ |
|
API リクエストの特徴量やユーザー特徴量に基づいて候補セットをフィルタリングするために WhereClause を使用できます。例えば、言語とユーザーの都市で候補セットをフィルタリングするには、WhereClause を次のように設定できます:
"language=${context.features.language} AND city=${user.city}"この例では、language は API リクエストの特徴量フィールドから取得され、city はユーザー特徴量です。
パラメーターのソースは次のフォーマットに従います:
user.xxx:xxx という名前のユーザー特徴量の値を取得します。context.features.xxx:API リクエストの特徴量フィールドから xxx という名前の特徴量の値を取得します。
PAI-FeatureStore
この機能は、オンラインデータソースとして FeatureDB を使用する FeatureView のみをサポートします。
この機能は、アイテム ID をプライマリキーとして使用する FeatureView からアイテム ID のバッチをランダムにリコールします。
{
"RecallConfs": [
{
"Name": "item_cold_start_recall",
"RecallType": "ColdStartRecall",
"RecallCount": 200,
"ColdStartDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "rec_sln_demo_item_table_preprocess_all_feature_v1"
},
"FilterParams": [
]
}
]
}パラメーター | タイプ | 必須 | 説明 |
Name | string | はい | リコールのカスタム名 |
RecallType | string | はい | リコールタイプです。値は |
RecallCount | int | はい | リコールするアイテムの数です。 |
ColdStartDaoConf | json object | はい | コールドスタートデータの設定です。 |
AdapterType | string | はい | データソースのタイプです。値は |
FeatureStoreName | string | はい | FeatureStoreConfs で設定された |
FeatureStoreViewName | string | はい | コールドスタートリコール用の |
FilterParams | json object array | いいえ | コールドスタートリコール用のフィルター条件です。 |
FeatureStoreViewName で指定された FeatureView は、オフラインまたはリアルタイムの FeatureView のいずれかです。リアルタイムの FeatureView を使用する場合、この設定により、新しく追加されたアイテム ID のリアルタイムリコールも有効になります。
FilterParams が空の場合、フィルター条件は適用されず、アイテム ID はランダムにリコールされます。特定のアイテム ID をフィルターするには、FilterParams を使用します。
{
"Name": "item_cold_start_recall",
"RecallType": "ColdStartRecall",
"RecallCount": 200,
"ColdStartDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "rec_sln_demo_item_table_preprocess_all_feature_v1"
},
"FilterParams": [
{
"Name": "click_count",
"Type": "int",
"Operator": "greater",
"Value": "15"
},
{
"Name": "category",
"Type": "string",
"Operator": "in",
"Value": "user.category"
}
]
}上記の例では、Value フィールドの user. プレフィックスは、値をユーザー特徴量から取得することを示します。例えば、user.category はユーザーの category 特徴量から値を取得します。
Operator パラメーターの使用方法の詳細については、「付録」をご参照ください。
コンテキスト アイテム リコール
また、item_list パラメーターを使用して、カスタムでリコールされたアイテムをエンジン API に渡すこともできます。エンジン API の詳細については、API テストをご参照ください。
エンジンの組み込みリコール名 ContextItemRecall を、次のように RecallNames で直接使用します。
{
"SceneConfs": {
"${scene_name}": {
"default": {
"RecallNames": [
"ContextItemRecall"
]
}
}
}
}I2I リコール (ItemCollaborativeFilterRecall)
Hologres
I2I リコールは類似性レコメンデーションに使用されます。類似アイテムを取得するには、ソースアイテムの item_id を渡す必要があります。API 定義については、「APIテスト」をご参照ください。
設定例:
{
"RecallConfs": [
{
"Name": "I2IRecall",
"RecallType": "ItemCollaborativeFilterRecall",
"RecallCount": 500,
"ItemCollaborativeDaoConf": {
"AdapterType": "hologres",
"HologresName": "holo_info",
"Item2ItemTable": "item_collaborative_list"
}
}
]
}次の表で、設定パラメーターを説明します。
パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。この値は |
RecallCount | 整数 | はい | 取得する類似アイテムの数。 |
ItemCollaborativeDaoConf | JSON オブジェクト | はい | I2I データテーブルの設定。 |
| 文字列 | はい | データソースのタイプ。 |
| 文字列 | はい |
|
| 文字列 | はい | I2I データテーブルの名前。 |
Item2ItemTable テーブルは次のように定義されます。
パラメーター | タイプ | 説明 |
item_id | 文字列 | ソースアイテム ID。 |
item_ids | 文字列 | 類似アイテム ID のリストを含む文字列。サポートされているフォーマット: |
PAI-FeatureStore
I2I リコールは類似性レコメンデーションに使用されます。類似アイテムを取得するには、ソースアイテムの item_id を渡す必要があります。API 定義については、「APIテスト」をご参照ください。
FeatureStoreViewName で指定されたデータテーブルビューは、次のように定義されます。
パラメーター | タイプ | 説明 |
item_id | 文字列 | ソースアイテム ID。 |
item_ids | 文字列 | 類似アイテム ID のリストを含む文字列。サポートされているフォーマット: |
設定例:
{
"RecallConfs": [
{
"Name": "I2IRecall",
"RecallType": "ItemCollaborativeFilterRecall",
"RecallCount": 200,
"ItemCollaborativeDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "i2i_recall"
}
}
]
}次の表で、設定パラメーターを説明します。
パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名。 |
RecallType | 文字列 | はい | リコールのタイプ。この値は |
RecallCount | 整数 | はい | 取得する類似アイテムの数。 |
ItemCollaborativeDaoConf | JSON オブジェクト | はい | I2I データテーブルの設定。 |
| 文字列 | はい | データソースのタイプ。 |
| 文字列 | はい |
|
| 文字列 | はい | I2I のデータテーブルビューの名前。 |
EnableMultipleItemId | ブール値 | いいえ |
|
MultipleItemIdDelimiter | 文字列 | いいえ |
|
API に渡される item_id が複数値フォーマットで、, で区切られている場合は、次の設定をご参照ください。
{
"RecallConfs": [
{
"Name": "I2IRecall",
"RecallType": "ItemCollaborativeFilterRecall",
"RecallCount": 200,
"ItemCollaborativeDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "i2i_recall"
},
"EnableMultipleItemId": true,
"MultipleItemIdDelimiter": ","
}
]
}Redis またはローカルキャッシュの場合、キャッシュキーは item_id です。
I2I リコールの場合は、API リクエストで item_id フィールドを設定してください。
OpenSearch の再現率
OpenSearch service を呼び出してリコールリストを取得します。詳細については、「Industry Algorithm Edition」をご参照ください。
設定例:
{
"RecallConfs": [
{
"Name": "OpenSearchRecall",
"RecallType": "OpenSearchRecall",
"OpenSearchConf": {
"OpenSearchName": "OpenSearch",
"AppName": "test_search",
"ItemId": "log_id",
"RequestParams": {
"query": "query=result:'$1'&&config=start:0,hit:10,format:fulljson&&sort=-log_id&&filter=request_time>1703952000000",
"format": "fulljson",
"second_rank_type": "expression",
"fetch_fields": "log_id;result_data"
},
"Params": [
"context.features.topic"
]
}
}
]
}上記の例は、result インデックスに対するクエリであり、クエリ用語は API リクエストのコンテキストにある features の topic フィールドから取得されます。
OpenSearchConf の設定フィールド:
パラメーター | タイプ | 必須 | 説明 |
Name | 文字列 | はい | リコールのカスタム名です。 |
RecallType | 文字列 | はい | リコールタイプです。値は |
RecallCount | 整数 | はい | リコールするアイテムの数です。 |
OpenSearchName | 文字列 | はい |
|
AppName | 文字列 | はい | OpenSearch アプリケーションの名前です。 |
ItemId | 文字列 | はい | OpenSearch の結果におけるアイテムのプライマリキーフィールドです。 |
RequestParams | map[string]interface{} | はい | OpenSearch のクエリ文です。 |
Params | 文字列の配列 | はい | クエリプレースホルダーの値のソースです。次のフォーマットがサポートされています:
|
使用方法
設定概要の SceneConfs で再現率設定を設定できます。 SceneConfs は Map[string]object で、シーンごとに異なる再現率設定を適用できます。設定は次のとおりです:
"SceneConfs": {
"${scene_name}": {
"default": {
"RecallNames": [
"collaborative_filter"
]
}
}
}${scene_name}を実際のシーン名に置き換えてください。defaultはディレクトリです。デフォルトのままでかまいません。RecallNamesは、リコール設定からカスタムリコール名を指定する[]文字列です。