取得設定は、設定概要の RecallConfs に対応します。
設定方法
PAI-Rec DPI エンジンには、協調フィルタリング (UserCollaborativeFilterRecall)、ベクトル取得 (HologresVectorRecall)、U2I 取得 (UserCustomRecall) など、いくつかの組み込み取得テンプレートがあります。また、Hologres、PAI-FeatureStore、TableStore (OTS) など、複数のデータソースもサポートしています。
共通の取得設定
各取得設定では、一連の共通パラメーターを使用します。このセクションでは、これらの共通パラメーターについて説明します。これらは、個々の取得メソッドのセクションでは繰り返されません。
設定例:
{
"RecallConfs": [
{
"Name": "collaborative_filter", // 協調フィルタリング
"RecallType": "UserCollaborativeFilterRecall", // ユーザー協調フィルタリングリコール
"RecallCount": 1000, // リコール数
"RecallAlgo": "", // リコールアルゴリズム
"ItemType": "", // アイテムタイプ
"CacheAdapter": "", // キャッシュアダプター
"CacheConfig": "", // キャッシュ設定
"CachePrefix": "", // キャッシュプレフィックス
"CacheTime": 0 // キャッシュ時間
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。SceneConfs でこの名前を参照できます。 |
RecallType | string | はい | DPI エンジンの組み込み取得タイプ。これは列挙値です。次の値がサポートされています:
|
RecallCount | string | はい | 取得するアイテムの数。 |
RecallAlgo | string | いいえ | 呼び出すベクトルモデルの名前。最初に AlgoConfs でモデルを設定する必要があります。このパラメーターは、リアルタイムのベクトル取得にのみ使用されます。 |
ItemType | string | いいえ | 推奨するアイテムのタイプ。 |
CacheAdapter | string | いいえ | 取得結果をキャッシュします。列挙値:
|
CacheConfig | string | いいえ | キャッシュの設定。 Redis を使用してキャッシュする場合、設定例は "{\"host\":\"xxx.redis.rds.aliyuncs.com\", \"port\":6379,\"maxIdle\":10, \"password\":\"xxxx\"}" です。 localCache を使用する場合、設定例は "{\"defaultExpiration\":600, \"cleanupInterval\":600}" です。 |
CachePrefix | string | いいえ | 現在の取得結果のキーにプレフィックスを追加します。 このパラメーターは、キャッシュを有効にする場合に必須です。これにより、異なる取得メソッド間のキャッシュの競合が防止されます。たとえば、 "group_hot_" は、グループベースの人気アイテム取得における特定のユーザーのキャッシュ結果を示します。 |
CacheTime | string | いいえ | キャッシュ期間 (秒単位)。デフォルト値は 1800 です。 |
協調フィルタリング (UserCollaborativeFilterRecall)
Hologres
協調フィルタリングには 2 つのテーブルが必要です。user_id に基づいてアイテムのリストを取得するための u2i テーブルと、類似アイテムを取得するための i2i テーブルです。これら 2 つのテーブルのスキーマは固定フォーマットです。
i2i テーブル (u2i2i) から類似アイテムを取得するだけでなく、i2x テーブルと x2i テーブル (u2i2x2i) から間接的に取得することもできます。このメソッドでは、x はカテゴリ、ブランド、都市などの属性を表します。プロセスはまず、カテゴリフィールドなどのアイテムの x 属性を取得します。次に、対応する x 値を持つ人気アイテムを x2i テーブルから取得し、推奨として使用します。
u2i テーブル
テーブルフィールド | タイプ | 説明 |
user_id | string | ユーザー ID。ID は一意である必要があります。 |
item_ids | string | ユーザーが閲覧したアイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:score1,item_id2:score2,item_id3:score3... |
i2i テーブル (u2i2i の場合にのみ必須)
テーブルフィールド | タイプ | 説明 |
item_id | string | アイテム ID。ID は一意である必要があります。 |
similar_item_ids | string | item_id に類似したアイテムのリスト。サポートされているフォーマット: item_id1:score1,item_id2:score2,item_id3:score3... |
i2x テーブル (u2i2x2i の場合にのみ必須)
item_id | string | アイテム ID。ID は一意である必要があります。 |
x | string | アイテムの属性。列名をカスタマイズし、DPI エンジン設定で実際の名前を指定できます。 |
x2i テーブル (u2i2x2i の場合にのみ必須)
x | string | アイテムの属性。列名をカスタマイズし、DPI エンジン設定で実際の名前を指定できます。 |
item_id | string | アイテム 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", // Hologres名
"User2ItemTable": "u2i_table", // U2Iテーブル
"Item2XTable": "i2x_table", // I2Xテーブル
"X2ItemTable": "x2i_table", // X2Iテーブル
"XKey": "category", // Xキー
"XDelimiter": ",", // Xデリミタ
"Normalization": "on" // 正規化
}
}
]
}UserCollaborativeDaoConfig:
フィールド | タイプ | 必須 | 説明 |
AdapterType | string | はい | 静的フィールド。値を hologres に設定します。 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
User2ItemTable | string | はい | u2i テーブル。 |
Item2ItemTable | string | いいえ | i2i テーブル。このパラメーターは u2i2i メソッドで必須です。 |
Item2XTable | string | いいえ | i2x テーブル。このパラメーターは u2i2x2i メソッドで必須です。 |
X2ItemTable | string | いいえ | x2i テーブル。このパラメーターは u2i2x2i メソッドで必須です。 |
XKey | string | いいえ | x キー。値は i2x および x2i テーブルの x 列の名前です。このパラメーターは u2i2x2i メソッドで必須です。 |
XDelimiter | string | いいえ | x 値の区切り文字。デフォルトでは、x 値は分割されません。 |
Normalization | string | いいえ | 列挙値。有効な値: on、off。取得したアイテムを正規化するかどうかを指定します。デフォルト値は「on」です。 |
PAI-FeatureStore
協調フィルタリングには 2 つのテーブルが必要です。user_id に基づいてアイテムのリストを取得するための u2i テーブルと、類似アイテムを取得するための i2i テーブルです。これら 2 つのテーブルのスキーマは固定フォーマットです。
両方のテーブルのデータは MaxCompute で生成されます。オフライン機能ビューを使用して、データを Feature Store に登録する必要があります。MaxCompute テーブルのスキーマは次のとおりです:
u2i テーブル
テーブルフィールド | タイプ | 説明 |
user_id | string | ユーザー ID。ID は一意である必要があります。 |
item_ids | string | ユーザーが閲覧したアイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:score1,item_id2:score2,item_id3:score3... |
ds | string | MaxCompute テーブルのパーティションフィールド。 |
次の図は、テーブルを Feature Store に登録する方法を示しています:
i2i テーブル
テーブルフィールド | タイプ | 説明 |
item_id | string | アイテム ID。ID は一意である必要があります。 |
similar_item_ids | string | item_id に類似したアイテムのリスト。サポートされているフォーマット: item_id1:score1,item_id2:score2,item_id3:score3... |
dt | string | 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 | string | はい | 静的フィールド: featurestore |
FeatureStoreName | string | はい | データソース設定 (FeatureStoreConfs) で設定されている Feature Store のカスタム名。例: fs_pairec。 |
User2ItemFeatureViewName | string | はい | u2i テーブルに対応する機能ビューの名前。 |
Item2ItemFeatureViewName | string | はい | i2i テーブルに対応する機能ビューの名前。 |
Normalization | string | いいえ | 列挙値。有効な値: on、off。取得したアイテムを正規化するかどうかを指定します。デフォルト値は「on」です。 |
TableStore (OTS)
協調フィルタリングには 2 つのテーブルが必要です。user_id に基づいてアイテムのリストを取得するための u2i テーブルと、類似アイテムを取得するための i2i テーブルです。これら 2 つのテーブルのスキーマは固定フォーマットです。
u2i テーブル
テーブルフィールド | タイプ | 説明 |
user_id | string | ユーザー ID。ID は一意である必要があります。 |
item_ids | string | ユーザーが閲覧したアイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:score1,item_id2:score2,item_id3:score3... |
i2i テーブル
テーブルフィールド | タイプ | 説明 |
item_id | string | アイテム ID。ID は一意である必要があります。 |
similar_item_ids | string | item_id に類似したアイテムのリスト。サポートされているフォーマット: item_id1:score1,item_id2:score2,item_id3:score3... |
{
"RecallConfs": [
{
"Name": "collaborative_filter", // 協調フィルタリング
"RecallType": "UserCollaborativeFilterRecall", // ユーザー協調フィルタリングリコール
"RecallCount": 1000, // リコール数
"UserCollaborativeDaoConf": {
"AdapterType": "tablestore", // アダプタータイプ
"TableStoreName": "tablestore_info", // TableStore名
"User2ItemTable": "u2i_table", // U2Iテーブル
"Item2ItemTable": "i2i_table", // I2Iテーブル
"Normalization": "on" // 正規化
}
}
]
}フィールド | タイプ | 必須 | 説明 |
AdapterType | string | はい | 静的フィールド。値を tablestore に設定します。 |
TableStoreName | string | はい | データソース設定 (TableStoreConfs) で設定されている Table Store データソースのカスタム名。例: tablestore_info。 |
User2ItemTable | string | はい | u2i テーブル。 |
Item2ItemTable | string | はい | i2i テーブル。 |
Normalization | string | いいえ | 列挙値。有効な値: on、off。取得したアイテムを正規化するかどうかを指定します。デフォルト値は「on」です。 |
Redis
Redis の collaborative_filter プロセスは独特で、2 つのステップを含みます:
RedisPrefix と UID を連結してキーを構築し、U2I リストをクエリします。キーは文字列を返します。サポートされているフォーマットは item_id1,item_id2,item_id3... または item_id1:score1,item_id2:score2,item_id3:score3... です。
I2I リストをクエリします。前のステップで取得した item_ids に基づいてクエリするには、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", // Redis名
"RedisPrefix": "cr_", // Redisプレフィックス
"Normalization": "on" // 正規化
}
}
]
}フィールド | タイプ | 必須 | 説明 |
AdapterType | string | はい | 静的フィールド。値を redis に設定します。 |
RedisName | string | はい | データソース設定 (RedisConfs) で設定されている Redis データソースのカスタム名。例: redis_info。 |
RedisPrefix | string | いいえ | U2I データ用のプレフィックス。キーは RedisPrefix と UID を連結して構築されます。 |
データキャッシュには Redis のみがサポートされています。
リアルタイム U2I2I(RealTimeU2IRecall)
Hologres
データ取得ロジックは協調フィルタリングと同じですが、U2I データはユーザーの履歴動作テーブルからリアルタイムで計算されます。
ユーザーの履歴動作テーブルはリアルタイムログに基づいてリアルタイムで更新されるため、リアルタイムの取得が可能です。
協調フィルタリングと同様に、このメソッドは u2i2x2i もサポートしています。まずアイテムの x 属性を取得し、次に同じ x 属性を持つ他のアイテムを取得します。
ユーザー履歴動作テーブル
フィールド | タイプ | 説明 |
user_id | string | ユーザー ID。 |
item_id | string | ユーザーが閲覧したアイテムの ID。 |
event | string | イベント名。 |
play_time | float | ビデオ視聴などのイベントの期間。0 に設定することはできません。 |
timestamp | int | イベント発生の UNIX タイムスタンプ (秒単位)。 |
i2i テーブル (u2i2i の場合にのみ必須)
テーブルフィールド | タイプ | 説明 |
item_id | string | アイテム ID。ID は一意である必要があります。 |
similar_item_ids | string | item_id に類似したアイテムのリスト。サポートされているフォーマット: item_id1:score1,item_id2:score2,item_id3:score3... |
i2x テーブル (u2i2x2i の場合にのみ必須)
item_id | string | アイテム ID。ID は一意である必要があります。 |
x | string | アイテムの属性。列名をカスタマイズし、DPI エンジン設定で実際の名前を指定できます。 |
x2i テーブル (u2i2x2i の場合にのみ必須)
x | string | アイテムの属性。列名をカスタマイズし、DPI エンジン設定で実際の名前を指定できます。 |
item_id | string | アイテム 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('table_name', '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 'UNIX タイムスタンプ (秒単位)';
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 | string | はい | 静的フィールド。値を hologres に設定します。 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
HologresTableName | string | はい | Hologres のユーザー履歴動作テーブルの名前。 |
WhereClause | string | いいえ | フィルター条件。SQL の WHERE 句に相当します。 |
Limit | int | いいえ | クエリの制限。SQL の LIMIT 句に相当します。 |
EventPlayTime | string | いいえ | 再生時間に基づいてイベントをフィルターします。各イベントをフィルターできます。たとえば、e_sv_func_svplayback:5000 は、e_sv_func_svplayback イベントの play_time 値が 5000 より大きい必要があることを意味します。条件を満たさないレコードは除外されます。セミコロン (;) で区切って複数のイベントを設定できます。 |
EventWeight | string | いいえ | イベントの重み。各イベントの重みを定義できます。設定しない場合、デフォルト値は 1 です。 |
WeightExpression | string | いいえ | 重み式。時間減衰に基づいてイベントの重みを計算します。currentTime は現在の UNIX タイムスタンプを表し、eventTime は動作テーブルのタイムスタンプを表します。 |
WeightMode | string | いいえ | トリガーの重みを計算するメソッド。有効な値: sum、max。デフォルト値は sum です。 |
NoUsePlayTimeField | bool | いいえ | play_time フィールドを使用しない場合は、これを true に設定します。 |
Item2ItemTable | string | いいえ | Hologres の i2i テーブルの名前。このパラメーターは u2i2i メソッドで必須です。 |
SimilarItemIdField | string | いいえ | Hologres の i2i テーブルのフィールド名。デフォルト値は similar_item_ids です。 |
Item2XTable | string | いいえ | i2x テーブルの名前。このパラメーターは u2i2x2i メソッドで必須です。 |
X2ItemTable | string | いいえ | x2i テーブルの名前。このパラメーターは u2i2x2i メソッドで必須です。 |
XKey | string | いいえ | x キー。値は i2x および x2i テーブルの x 列の名前です。このパラメーターは u2i2x2i メソッドで必須です。 |
XDelimiter | string | いいえ | x 値の区切り文字。デフォルトでは、x 値は分割されません。 |
PAI-FeatureStore
データ取得ロジックは協調フィルタリングと同じですが、U2I データはユーザーの履歴動作テーブルからリアルタイムで計算されます。
ユーザーの履歴動作テーブルはリアルタイムログに基づいてリアルタイムで更新されるため、リアルタイムの取得が可能です。
PAI-FeatureStore プラットフォームでは、機能ビューの動作シーケンスタイプを使用して、ユーザーの履歴動作データを保存できます。
ユーザー履歴動作テーブル
フィールド | タイプ | 説明 |
user_id | string | ユーザー ID。 |
item_id | string | ユーザーが閲覧したアイテムの ID。 |
event | string | イベント名。 |
playtime | float | ビデオ視聴などのイベントの期間。0 に設定することはできません。 |
event_unix_time | int | イベント発生の UNIX タイムスタンプ (秒単位)。 |
i2i テーブル
テーブルフィールド | タイプ | 説明 |
item_id | string | アイテム ID。ID は一意である必要があります。 |
similar_item_ids | string | item_id に類似したアイテムのリスト。サポートされているフォーマット: item_id1:score1,item_id2:score2,item_id3:score3... |
設定例:
{
"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 | |||
| string | はい | 静的フィールド: featurestore |
| string | はい | データソース設定 (FeatureStoreConfs) で設定されている Feature Store のカスタム名。例: fs_pairec。 |
| string | はい | Feature Store のユーザー履歴動作シーケンスビューの名前。 |
| int | はい | ユーザー動作トリガーの数。 |
| string | いいえ | 再生時間に基づいてイベントをフィルターします。各イベントをフィルターできます。たとえば、e_sv_func_svplayback:5000 は、e_sv_func_svplayback イベントの play_time 値が 5000 より大きい必要があることを意味します。条件を満たさないレコードは除外されます。セミコロン (;) で区切って複数のイベントを設定できます。 |
| string | はい | イベントの重み。各イベントの重みを定義できます。設定しない場合、デフォルト値は 1 です。複数のイベント設定を区切るにはセミコロン ( |
| string | はい | 重み式。時間減衰に基づいてイベントの重みを計算します。currentTime は現在の UNIX タイムスタンプを表し、eventTime は動作テーブルのタイムスタンプを表します。 |
| string | いいえ | トリガーの重みを計算するメソッド。有効な値: sum、max。デフォルト値は sum です。 |
| bool | いいえ | play_time フィールドを使用しない場合は、これを true に設定します。 |
| string | いいえ | ユーザー動作シーケンスの item_id フィールドの名前。デフォルト値は item_id です。 |
| string | いいえ | ユーザー動作シーケンスの event フィールドの名前。デフォルト値は event です。 |
| string | いいえ | ユーザー動作シーケンスの再生時間フィールドの名前。デフォルト値は play_time です。 |
| string | いいえ | ユーザー動作シーケンスのタイムスタンプフィールドの名前。デフォルト値は timestamp です。 |
Item2ItemFeatureViewName | string | いいえ | Feature Store の i2i テーブルビューの名前。このパラメーターは u2i2i メソッドで必須です。 |
SimilarItemIdField | string | いいえ | Feature Store の i2i テーブルのフィールド名。デフォルト値は similar_item_ids です。 |
MergeMode | string | いいえ | triggerId によって取得されたアイテムをマージする方法を制御します。デフォルトでは、取得されたアイテムはマージ、ソート、重複排除されます。オプション値: snake。この値は、triggerId によって取得されたアイテムリストをラウンドロビン方式でマージします。 |
I2ICacheSize | int | いいえ | この値が 0 より大きい場合、キャッシュが有効になります。triggerId がキーとして使用され、i2i テーブルから取得されたアイテムのリストが値として使用されます。 |
I2ICacheTime | int | いいえ | キャッシュが有効な場合、このパラメーターはキャッシュ期間を秒単位で制御します。 |
ベクトル取得 (HologresVectorRecall)
現在、ベクトル取得はデータソースとして Hologres のみをサポートしています。すべてのベクトルデータは Hologres テーブルに保存されます。
設定例:
{
"RecallConfs": [
{
"Name": "vector_recall", // ベクトルリコール
"RecallType": "HologresVectorRecall", // Hologresベクトルリコール
"RecallCount": 100, // リコール数
"VectorDaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"HologresTableName": "user_embedding_table", // ユーザー埋め込みテーブル
"KeyField": "user_id", // キーフィールド
"EmbeddingField": "emb" // 埋め込みフィールド
},
"HologresVectorConf": {
"VectorTable": "item_embedding_table", // アイテム埋め込みテーブル
"VectorEmbeddingField": "emb", // ベクトル埋め込みフィールド
"VectorKeyField": "item_id" // ベクトルキーフィールド
}
}
]
}VectorDaoConf:
フィールド | タイプ | 必須 | 説明 |
AdapterType | string | はい | データソースのタイプ。値を hologres に設定します。 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
HologresTableName | string | はい | Hologres 内の対応するベクトルテーブルの名前。 |
KeyField | string | はい | ベクトルテーブルのプライマリキーフィールド。 |
EmbeddingField | string | はい | ベクトルを保存するベクトルテーブルのフィールド。 |
HologresVectorConf:
フィールド | タイプ | 必須 | 説明 |
VectorTable | string | はい | Hologres のアイテムベクトルテーブル。 |
VectorEmbeddingField | string | はい | アイテムベクトルテーブルのプライマリキーフィールド。 |
VectorKeyField | string | はい | ベクトルを保存するアイテムベクトルテーブルのフィールド。 |
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;リアルタイムベクトル取得 (OnlineHologresVectorRecall)
リアルタイムベクトル取得の実装は、ベクトル取得の実装と似ており、これも Hologres テーブルデータに基づいています。違いは、ユーザーベクトルがテーブルから取得されるのではなく、モデルによってリアルタイムで生成されることです。その後、アイテムベクトルテーブルがクエリされます。実装プロセスは 3 つのステップで構成されます:
ユーザー関連の特徴を取得します。ユーザー特徴はデータテーブルからクエリできます。
ベクトルモデルを呼び出してユーザーベクトルを取得します。この実装では、モデルは Elastic Algorithm Service (EAS) にデプロイされます。
アイテムベクトルテーブルをクエリします。これはベクトル取得のプロセスと似ています。
設定例:
{
"RecallConfs": [
{
"Name": "online_vector_recall", // オンラインベクトルリコール
"RecallType": "OnlineHologresVectorRecall", // オンラインHologresベクトルリコール
"RecallCount": 500, // リコール数
"UserFeatureConfs": [
{
"FeatureDaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"FeatureKey": "user:uid", // 特徴量キー
"UserFeatureKeyName": "userid", // ユーザー特徴量キー名
"HologresTableName": "user_all_feature_table", // ユーザー全特徴量テーブル
"UserSelectFields": "*", // ユーザー選択フィールド
"FeatureStore": "user" // 特徴量ストア
},
"Features": []
}
],
"RecallAlgo": "sv_v2_mind", // リコールアルゴリズム
"HologresVectorConf": {
"HologresName": "holo_info", // Hologres名
"VectorTable": "item_embedding_table", // アイテム埋め込みテーブル
"VectorEmbeddingField": "item_emb", // アイテム埋め込みフィールド
"VectorKeyField": "item_id" // ベクトルキーフィールド
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を OnlineHologresVectorRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
RecallAlgo | string | はい | 呼び出すベクトルモデルの名前。AlgoConfs でモデルを設定する必要があります。設定の詳細については、「ファイングレインランキング設定」をご参照ください。 |
UserFeatureConfs:
フィールド | タイプ | 必須 | 説明 |
AdapterType | string | はい | データソースのタイプ。値を hologres に設定します。 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
FeatureKey | string | はい | DPI エンジン内の user_id のソース。user:uid はユーザーの uid 特徴を示します。 |
UserFeatureKeyName | string | はい | ユーザー特徴テーブルのプライマリキーフィールド。 |
HologresTableName | string | はい | ユーザー特徴テーブル。 |
UserSelectFields | string | はい | 選択する特徴。アスタリスク (*) またはカンマ区切りのリスト (「f1,f2...」など) を使用できます。 |
FeatureStore | string | はい | DPI エンジンで特徴が保存される場所。列挙値: user、item。 |
HologresVectorConf:
フィールド | タイプ | 必須 | 説明 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
VectorTable | string | はい | Hologres のアイテムベクトルテーブルの名前。 |
VectorEmbeddingField | string | はい | ベクトルを保存するアイテムベクトルテーブルのフィールド。 |
VectorKeyField | string | はい | アイテムベクトルテーブルのプライマリキーフィールド。 |
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 に設定する必要があります。
U2I 取得 (UserCustomRecall)
Hologres
このメソッドは、ユーザー ID に基づいて対応するアイテムリストを検索します。テーブル定義は規則に基づいています。
u2i テーブル
フィールド | タイプ | 説明 |
user_id | string | ユーザー ID。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall", // user2itemリコール
"RecallType": "UserCustomRecall", // ユーザーカスタムリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"HologresTableName": "user_item_table" // ユーザーアイテムテーブル
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserCustomRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
DaoConf | JSON オブジェクト | はい | DAO の定義 |
AdapterType | string | はい | データソースタイプ。値を hologres に設定します。 |
HologresName | string | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 | |
HologresTableName | string | はい | データテーブルの名前。 |
PAI-FeatureStore
このメソッドは、ユーザー ID に基づいて対応するアイテムリストを検索します。テーブル定義は規則に基づいています。
テーブルデータは MaxCompute で生成されます。オフライン機能ビューを使用して、データを Feature Store に登録する必要があります。MaxCompute テーブルデータスキーマは次のとおりです:
u2i テーブル
フィールド | タイプ | 説明 |
user_id | string | ユーザー ID。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
ds | string | MaxCompute テーブルのパーティションフィールド。名前はカスタマイズできます。 |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall", // user2itemリコール
"RecallType": "UserCustomRecall", // ユーザーカスタムリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "featurestore", // アダプタータイプ
"FeatureStoreName": "fs_pairec", // FeatureStore名
"FeatureStoreViewName": "u2i_recall" // u2iリコール
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserCustomRecall に設定します。 |
RecallCount | int | はい | リコール数 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
AdapterType | string | はい | データソースタイプ。値を featurestore に設定します。 |
FeatureStoreName | string | データソース設定 (FeatureStoreConfs) で設定されている Hologres データソースのカスタム名。例: fs_pairec。 | |
FeatureStoreViewName | string | はい | u2i テーブルに登録されたビューの名前。 |
TableStore (OTS)
このメソッドは、ユーザー ID に基づいて対応するアイテムリストを検索します。テーブル定義は規則に基づいています。
u2i テーブル
フィールド | タイプ | 説明 |
user_id | string | ユーザー ID。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall", // user2itemリコール
"RecallType": "UserCustomRecall", // ユーザーカスタムリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "tablestore", // アダプタータイプ
"TableStoreName": "ots_info", // OTS情報
"TableStoreTableName": "user_item_table" // ユーザーアイテムテーブル
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserCustomRecall に設定します。 |
RecallCount | int | はい | リコール数 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
AdapterType | string | はい | データソースタイプ。値を tablestore に設定します。 |
TableStoreName | string | データソース設定 (TableStoreConfs) で設定されている Table Store データソースのカスタム名。例: tablestore_info。 | |
TableStoreTableName | string | はい | データテーブルの名前。 |
Redis
設定例:
{
"RecallConfs": [
{
"Name": "user2item_recall", // user2itemリコール
"RecallType": "UserCustomRecall", // ユーザーカスタムリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "redis", // アダプタータイプ
"RedisName": "redis_info", // Redis名
"RedisPrefix": "" // Redisプレフィックス
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserCustomRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
AdapterType | string | はい | データソースタイプ。値を redis に設定します。 |
RedisName | string | データソース設定 (RedisConfs) で設定されている Redis データソースのカスタム名。例: redis_info。 | |
RedisPrefix | string | はい | U2I データ用のプレフィックス。キーは RedisPrefix と UID を連結して構築されます。値のフォーマットは: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
グラフ取得 (GraphRecall)
グラフ取得は、Graph Database である GraphCompute を使用する U2I 取得の一種です。
設定例:
{
"RecallConfs": [
{
"Name": "graph_recall", // グラフリコール
"RecallType": "GraphRecall", // グラフリコール
"RecallCount": 500, // リコール数
"GraphConf": {
"GraphName": "graph_test", // グラステスト
"ItemId": "item_id", // アイテムID
"QueryString": "g(\"test\").V(\"$1\").hasLabel(\"user\").outE().inV()", // クエリ文字列
"Params": [
"user.uid" // ユーザーUID
]
}
}
]
}GraphConf:
フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を GraphRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
GraphName | string | はい | データソース設定 (GraphConfs) で設定されているグラフのカスタム名。例: graph_info。 |
ItemId | string | はい | グラフ結果のアイテムのプライマリキーフィールド。 |
QueryString | string | はい | グラフ取得のための検索文。文中の $1 は、Params から値を取得するプレースホルダーです。 |
Params | string | はい | パラメーターを埋めるためのソース。フォーマットは次のとおりです:
|
ユーザーグループの人気アイテム取得 (UserGroupHotRecall)
Hologres
グループ人気アイテム取得のテーブルフォーマットは、規則に基づいています。
group_hot_table
テーブルフィールド | タイプ | 説明 |
trigger_id | string | 複数の特徴から組み立てられたトリガー情報。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
ユーザー特徴や、リージョンやデバイスモデルなどのコンテキスト情報に基づいて trigger_id を組み立てることができます。
特徴をアンダースコア (_) で順番に連結して trigger_id を形成します。
空の特徴値は NULL に対応します。
Boundaries フィールドを含む特徴は、左排他、右包括の間隔に離散化する必要があります。たとえば、[20, 30, 40, 50] の年齢範囲は、<=20、20-30、30-40、40-50、および >50 のトリガーに対応します。
ユーザーの年齢が 23 の場合は「20-30」に対応します。
ユーザーの年齢が null の場合は「NULL」に対応します。
ユーザーの年齢が 60 の場合は「>50」に対応します。
ユーザーの年齢が 19 の場合は「<=20」に対応します。
Hologres テーブルの例:
この例では、性別、年齢、デバイスモデルの 3 つの特徴を使用します。
trigger_id | item_ids |
男性_<=20_IOS | item_id1::score1,item_id2::score2... |
女性_20-30_Android | item_id4::score4,item_id5::score5... |
... | ... |
設定例:
{
"RecallConfs": [
{
"Name": "user_group_hot_recall", // ユーザーグループホットリコール
"RecallType": "UserGroupHotRecall", // ユーザーグループホットリコール
"RecallCount": 500, // リコール数
"Triggers": [
{
"TriggerKey": "gender" // 性別
},
{
"TriggerKey": "age", // 年齢
"Boundaries": [20,30,40,50] // 境界
},
{
"TriggerKey": "os" // OS
}
],
"DaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"HologresTableName": "group_hotness_table" // グループホットネステーブル
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserGroupHotRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
Triggers | JSON 配列 | はい | trigger_id を構築するための特定の情報。 |
| string | はい | ユーザーの特徴からトリガー値を取得します。 |
| JSON 整数配列 | いいえ | フィールドの境界値の範囲。 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
| string | はい | データソースタイプ。値を hologres に設定します。 |
| string | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 | |
| string | はい | データテーブルの名前。 |
PAI-FeatureStore
グループ人気アイテム取得のテーブルフォーマットは、規則に基づいています。
テーブルデータは MaxCompute で生成されます。オフライン機能ビューを使用して、データを Feature Store に登録する必要があります。MaxCompute テーブルデータスキーマは次のとおりです:
group_hot_table
テーブルフィールド | タイプ | 説明 |
trigger_id | string | 複数の特徴から組み立てられたトリガー情報。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
ds | string | MaxCompute テーブルのパーティションフィールド。このフィールドはカスタマイズできます。 |
ユーザー特徴や、リージョンやデバイスモデルなどのコンテキスト情報に基づいて trigger_id を組み立てることができます。
特徴をアンダースコア (_) で順番に連結して trigger_id を形成します。
空の特徴値は NULL に対応します。
Boundaries フィールドを含む特徴は、左排他、右包括の間隔に離散化する必要があります。たとえば、[20, 30, 40, 50] の年齢範囲は、<=20、20-30、30-40、40-50、および >50 のトリガーに対応します。
ユーザーの年齢が 23 の場合は「20-30」に対応します。
ユーザーの年齢が null の場合は「NULL」に対応します。
ユーザーの年齢が 60 の場合は「>50」に対応します。
ユーザーの年齢が 19 の場合は「<=20」に対応します。
テーブルの例:
この例では、性別、年齢、デバイスモデルの 3 つの特徴を使用します。
trigger_id | item_ids |
男性_<=20_IOS | item_id1::score1,item_id2::score2... |
女性_20-30_Android | item_id4::score4,item_id5::score5... |
... | ... |
このプロセスでは、トリガー特徴エンティティを使用します。
設定例:
{
"RecallConfs": [
{
"Name": "user_group_hot_recall", // ユーザーグループホットリコール
"RecallType": "UserGroupHotRecall", // ユーザーグループホットリコール
"RecallCount": 500, // リコール数
"Triggers": [
{
"TriggerKey": "gender" // 性別
},
{
"TriggerKey": "age", // 年齢
"Boundaries": [20,30,40,50] // 境界
},
{
"TriggerKey": "os" // OS
}
],
"DaoConf": {
"AdapterType": "featurestore", // アダプタータイプ
"FeatureStoreName": "fs_pairec", // FeatureStore名
"FeatureStoreViewName": "group_hot_recall" // グループホットリコール
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserGroupHotRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
Triggers | JSON 配列 | はい | trigger_id を構築するための特定の情報。 |
| string | はい | ユーザーの特徴からトリガー値を取得します。 |
| JSON 整数配列 | いいえ | フィールドの境界値の範囲。 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
| string | はい | データソースタイプ。値を featurestore に設定します。 |
| string | データソース設定 (FeatureStoreConfs) で設定されている Hologres データソースのカスタム名。例: fs_pairec。 | |
| string | はい | 人気アイテム取得テーブルに対応する機能ビューの名前。 |
ユーザーグループの人気アイテム取得が常に 0 アイテムを返す場合は、Triggers の連結順序を確認してください。DPI エンジンは、Triggers 設定で指定された上から下の順序でトリガーを連結します。この順序が取得テーブルの順序と一致することを確認する必要があります。
グローバル人気アイテム取得 (UserGlobalHotRecall)
Hologres
グローバル人気アイテム取得のテーブルスキーマは、グループ取得のスキーマと同じです。唯一の違いは、グローバル人気アイテム取得テーブルには 1 つのレコードしか含まれず、その trigger_id が -1 であることです。
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallType": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"HologresTableName": "global_hotness_table" // グローバルホットネステーブル
}
}
]
}PAI-FeatureStore
グローバル人気アイテム取得のテーブルスキーマは、グループ取得のスキーマと同じです。唯一の違いは、グローバル人気アイテム取得テーブルには 1 つのレコードしか含まれず、その trigger_id が -1 であることです。
テーブルデータは MaxCompute で生成されます。オフライン機能ビューを使用して、データを Feature Store に登録する必要があります。MaxCompute テーブルデータスキーマは次のとおりです:
テーブルフィールド | タイプ | 説明 |
trigger_id | string | テーブルには 1 行のデータしかなく、値は -1 です。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
ds | string | MaxCompute テーブルのパーティションフィールド。このフィールドはカスタマイズできます。 |
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallType": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "featurestore", // アダプタータイプ
"FeatureStoreName": "fs_pairec", // FeatureStore名
"FeatureStoreViewName": "global_hot_recall" // グローバルホットリコール
}
}
]
}TableStore (OTS)
グローバル人気アイテム取得のテーブルスキーマは、グループ取得のスキーマと同じです。唯一の違いは、グローバル人気アイテム取得テーブルには 1 つのレコードしか含まれず、その trigger_id が -1 であることです。
設定例:
{
"RecallConfs": [
{
"Name": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallType": "UserGlobalHotRecall", // ユーザーグローバルホットリコール
"RecallCount": 500, // リコール数
"DaoConf": {
"AdapterType": "tablestore", // アダプタータイプ
"TableStoreName": "ots_info", // OTS情報
"TableStoreTableName": "global_hotness_recall" // グローバルホットネスリコール
}
}
]
}フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を UserGlobalHotRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
DaoConf | JSON オブジェクト | はい | DAO 定義。 |
AdapterType | string | はい | データソースタイプ。値を tablestore に設定します。 |
TableStoreName | string | データソース設定 (TableStoreConfs) で設定されている Table Store データソースのカスタム名。例: tablestore_info。 | |
TableStoreTableName | string | はい | データテーブルの名前。 |
コールドスタート取得 (ColdStartRecall)
このメソッドは、アイテムマテリアルテーブルを提供し、条件や時間に基づいてフィルタリングすることで、指定されたルールを満たす候補セットをクエリします。
Hologres
{
"RecallConfs": [
{
"Name": "AllLiveItemRecall", // 全ライブアイテムリコール
"RecallType": "ColdStartRecall", // コールドスタートリコール
"RecallCount": 3000, // リコール数
"ColdStartDaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"HologresTableName": "item_status_table", // アイテムステータステーブル
"WhereClause": "islist_status=1", // 条件句
"PrimaryKey": "\"item_id\"", // プライマリキー
"TimeInterval": 0 // 時間間隔
}
}
]
}ColdStartDaoConf:
フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を ColdStartRecall に設定します。 |
RecallCount | int | はい | リコール数 |
ColdStartDaoConf | JSON オブジェクト | はい | コールドスタートデータ定義。 |
AdapterType | string | はい | データソースのタイプ (hologres など)。 |
HologresName | string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
HologresTableName | string | はい | Hologres のコールドスタート取得テーブルの名前。 |
WhereClause | string | いいえ | フィルター条件。時間でフィルターするには、${time} を使用します。たとえば、作成時間でフィルターするには、create_time > ${time} を使用します。 |
PrimaryKey | string | はい | テーブルのプライマリキー。 |
TimeInterval | int | いいえ | 時間差に基づいて ${time} 値を計算します。 ${time} = 現在時刻 - TimeInterval |
上記の設定では、WhereClause を使用して候補セットをフィルタリングする場合、API で渡された features フィールドまたはユーザーの特徴フィールドに基づいてフィルタリングできます。たとえば、言語とユーザーの都市属性に基づいて候補セットをフィルタリングするには、WhereClause を次のように記述します:
"language=${context.features.language} AND city=${user.city}"この例では、language は API の features フィールドで渡すことができ、city はユーザー特徴です。
パラメーターのソースは次の形式で指定されます:
user.xxx は、ユーザーの特徴から xxx 特徴の値を取得します。
context.features.xxx は、API の features フィールドから xxx 特徴の値を取得します。
PAI-FeatureStore
オンラインストアとして FeatureDB を使用する機能ビューのみがサポートされています。
プライマリキーがアイテム ID である機能ビューを提供します。このビューからランダムなバッチのアイテム 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 | はい | 取得タイプ。静的フィールド。値を ColdStartRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
ColdStartDaoConf | json object | はい | コールドスタートデータ定義。 |
AdapterType | string | はい | データソースのタイプ。静的フィールド。値を featurestore に設定します。 |
FeatureStoreName | string | はい | データソース設定 (FeatureStoreConfs) で設定されている Feature Store のカスタム名。 |
FeatureStoreViewName | string | はい | コールドスタート取得のための機能ビューの名前。 |
FilterParams | string | いいえ | コールドスタート取得のフィルター条件。 |
FeatureStoreViewName に指定された機能ビューは、オフラインまたはリアルタイムの機能ビューにすることができます。リアルタイムビューの場合、この取得メソッドは新しいアイテム ID をリアルタイムで取得します。
FilterParams パラメーターを使用して、特定のアイテム ID をフィルタリングできます。このパラメーターを空のままにすると、フィルター条件は設定されず、アイテム ID はランダムに取得されます。
{
"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"
}
]
}上記の例では、user. で始まる Value は、その値がユーザー特徴から取得されることを示します。カテゴリなどのこれらの特徴は、API の features フィールドで渡すことができます。
Operator の詳細については、「付録」をご参照ください。
コンテキストアイテム取得 (ContextItemRecall)
取得されたアイテムが DPI エンジン API を介して渡されることがあります。item_list を使用してカスタム取得データを渡すことができます。DPI エンジン API の詳細については、「API テスト」をご参照ください。
ContextItemRecall は DPI エンジンの組み込み取得名であり、RecallNames で直接使用できます。次の例は、サンプル設定を示しています:
{
"SceneConfs": {
"${scene_name}": { // シーン名
"default": { // デフォルト
"RecallNames": [
"ContextItemRecall" // コンテキストアイテムリコール
]
}
}
}
}I2I 取得 (ItemCollaborativeFilterRecall)
Hologres
I2I 取得は、類似性ベースの推奨に使用されます。このタイプの推奨では、類似の item_id を渡す必要があります。特定の API 定義の詳細については、「API テスト」をご参照ください。
設定例:
{
"RecallConfs": [
{
"Name": "I2IRecall", // I2Iリコール
"RecallType": "ItemCollaborativeFilterRecall", // アイテム協調フィルタリングリコール
"RecallCount": 500, // リコール数
"ItemCollaborativeDaoConf": {
"AdapterType": "hologres", // アダプタータイプ
"HologresName": "holo_info", // Hologres名
"Item2ItemTable": "item_collaborative_list" // アイテム協調リスト
}
}
]
}設定フィールドの説明:
フィールド | タイプ | 必須 | 説明 |
Name | string | はい | 取得メソッドのカスタム名。 |
RecallType | string | はい | 取得タイプ。静的フィールド。値を ItemCollaborativeFilterRecall に設定します。 |
RecallCount | int | はい | 取得するアイテムの数。 |
ItemCollaborativeDaoConf | json object | はい | I2I テーブルデータ定義。 |
| string | はい | データソースのタイプ。値を hologres に設定します。 |
| string | はい | データソース設定 (HologresConfs) で設定されている Hologres データソースのカスタム名。例: holo_info。 |
| string | はい | I2I データテーブルの名前。 |
Item2ItemTable テーブルの定義:
フィールド | タイプ | 説明 |
item_id | string | アイテム ID。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
PAI-FeatureStore
I2I 取得は、類似性ベースの推奨に使用されます。このタイプの推奨では、類似の item_id を渡す必要があります。特定の API 定義の詳細については、「API テスト」をご参照ください。
Item2ItemTable テーブルの定義:
フィールド | タイプ | 説明 |
item_id | string | アイテム ID。 |
item_ids | string | アイテム ID のリスト。サポートされているフォーマット: item_id1,item_id2,item_id3... または item_id1:recall_id1,item_id2:recall_id2... または item_id1:recall_id1:score1,item_id2:recall_id2:score2... |
設定例:
{
"RecallConfs": [
{
"Name": "I2IRecall", // I2Iリコール
"RecallType": "ItemCollaborativeFilterRecall", // アイテム協調フィルタリングリコール
"RecallCount": 200, // リコール数
"ItemCollaborativeDaoConf": {
"AdapterType": "featurestore", // アダプタータイプ
"FeatureStoreName": "fs_pairec", // FeatureStore名
"FeatureStoreViewName": "i2i_recall" // i2iリコール
}
}
]
}設定フィールドの説明:
フィールド | タイプ | 必須 | 説明 |
名前 | 文字列 | はい | 取得メソッドのカスタム名。 |
再呼び出しタイプ | 文字列 | はい | 取得タイプ。静的フィールド。値を ItemCollaborativeFilterRecall に設定します。 |
呼び戻し回数 | int | はい | 取得するアイテム数。 |
ItemCollaborativeDaoConf | json オブジェクト | はい | I2I テーブルデータ定義。 |
| 文字列 | はい | データソースのタイプ。値を featurestore に設定します。 |
| 文字列 | はい | データソース構成 (FeatureStoreConfs) で設定されているカスタム名。例: fs_pairec。 |
| 文字列 | はい | I2I データテーブルビューの名前。 |
EnableMultipleItemId | bool | いいえ | 渡された item_id が複数値フォーマットであるかどうかを指定します。 |
MultipleItemIdDelimiter | 文字列 | いいえ | EnableMultipleItemId=true の場合、item_id の区切り文字を定義します。デフォルト値はカンマ ( |
インターフェイスに渡す item_id が、カンマ (,) で区切られた複数値フォーマットの場合は、以下の構成を使用できます。
{
"RecallConfs": [
{
"Name": "I2IRecall",
"RecallType": "ItemCollaborativeFilterRecall",
"RecallCount": 200,
"ItemCollaborativeDaoConf": {
"AdapterType": "featurestore",
"FeatureStoreName": "fs_pairec",
"FeatureStoreViewName": "i2i_recall"
},
"EnableMultipleItemId": true,
"MultipleItemIdDelimiter": ","
}
]
}Redis または localCache を使用してデータをキャッシュする場合、キャッシュキーは item_id です。
I2I 取得の場合、API リクエストで item_id フィールドに値を渡す必要があります。
OpenSearch Recall (OpenSearchRecall)
このメソッドは、OpenSearch サービスを直接呼び出して、リコールリストを返します。OpenSearch ドキュメントの詳細については、「業界アルゴリズム版の概要」をご参照ください。
設定例:
{
"RecallConfs": [
{
"Name": "OpenSearchRecall", // OpenSearchリコール
"RecallType": "OpenSearchRecall", // OpenSearchリコール
"OpenSearchConf": {
"OpenSearchName": "opensearch", // OpenSearch名
"AppName": "test_search", // アプリ名
"ItemId": "log_id", // ログ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" // コンテキスト特徴量トピック
]
}
}
]
}上記の例は、結果インデックスに対するクエリを示しています。クエリ term は、インターフェイスコンテキストにおける特徴の Topic フィールドから取得されます。
OpenSearchConf では、以下のパラメーターを指定できます。
フィールド | タイプ | 必須 | 説明 |
Name | string | はい | カスタム取得名。 |
RecallType | string | はい | 取得タイプ。値は OpenSearchRecall に固定されます。 |
RecallCount | int | はい | 取得数 |
OpenSearchName | string | はい | OpenSearch インスタンスのカスタム名。この名前は、データソース構成 (OpenSearchConfs) で構成されます。 |
AppName | string | はい | OpenSearch アプリケーション名。 |
ItemId | string | はい | OpenSearch の結果におけるアイテムのプライマリキーフィールド。 |
RequestParams | map[string]interface{} | はい | OpenSearch の検索文。$1 は、Params から値を取得するプレースホルダーです。構文の詳細については、「デベロッパーガイド」をご参照ください。 |
Params | string | はい | パラメーターを埋めるために使用されるソース。フォーマットは次のとおりです:
|
手順
構成概要にある SceneConfs パラメーターは、取得シナリオを指定します。このパラメーターは Map[string]object 構造です。構成は以下のとおりです。
"SceneConfs": {
"${scene_name}": { // シーン名
"default": { // デフォルト
"RecallNames": [
"collaborative_filter" // 協調フィルタリング
]
}
}
}${scene_name} をシナリオ名に置き換えてください。
default はフォルダです。デフォルト設定のままでかまいません。
RecallNames は []string です。値は、リコール構成内のカスタムリコール名です。