為了讓用戶更加合理地使用、調試OpenSearch的各種算法,上線A/B Test功能,方便業務在全量使用前可以分配一定比例的流量進行先驗,避免盲用帶來對線上業務的負面影響。A/B Test功能目前支持用戶對查詢分析、基礎排序、業務排序進行實驗配置。
使用介紹
一、配置A/B Test 的基本流程說明
為了最終的實驗指標更全面,在配置A/B Test之前建議先開通單擊行為采集數據。用戶初次使用A/B Test功能需要經過以下四個步驟才能完成具體實驗的配置上線:
1.進入A/B Test創建流程:
通過opensearch控制臺左側導航欄:功能擴展---->A/B測試
進入A/B測試界面,單擊“創建”即可進入A/B Test創建流程:
2.創建實驗組:
實驗組可以對查詢分析、基礎排序、策略排序以及類目預測進行實驗。實驗組名稱:實驗組名稱僅做展示使用,用戶可修改。實驗組名稱不允許超過 30 個字符。
3.創建實驗:
實驗組創建好以后單擊“添加實驗”就可以在實驗組內創建具體的實驗了。每個實驗組里面最多只能創建20個實驗,其中最多只能有10個實驗同時在線生效。
3.1 實驗名稱:實驗名稱必須用戶自定義,不超過 30 個字符。3.2 添加配置:
用戶可選擇對查詢分析、基礎排序、業務排序進行配置。配置項彈框只支持用戶進行選擇已有的查詢分析規則、基礎排序、業務排序
在選擇查詢分析類型與策略時:
用戶選擇“自定義”時,候選項為用戶在當前應用下所創建的所有查詢分析
用戶選擇“線上一致”時表示此處不做任何配置同線上邏輯保持一致,即不是當前實驗要測試的內容
在選擇排序策略類型與策略時:
排序策略類型與策略也是同樣的邏輯,考慮到狀態為“配置中”的策略可能會被用戶無意識的編輯,從而影響線上A/B測試效果,所以排序策略狀態中僅支持“已發布”且不可更改。
3.3 實驗流量:實驗流量最小粒度為1%,同一場景的同一實驗組內在線的所有實驗流量總和應該≤100%。
4.實驗組創建完成:
當實驗配置完成后,單擊“下一步”,完成配置,單擊“完成”,返回A/B測試主頁:剛剛配置的實驗組處于“待測試狀態”:
5.啟動測試:
在實驗組創建成功后,在對應的實驗組“操作”一欄單擊“啟動測試”,測試中的實驗組狀態處于“測試中”:
6.A/B Test實驗生效:
控制臺開通A/B Test功能,并配置好實驗之后,如果想讓實驗對線上的查詢生效,需要在查詢中指定abtest參數。abtest參數主要包含2個部分:scene_tag和flow_divider。
請求的URL:
/v3/openapi/apps/160029126/search?query=query=default:'深圳'&&config=start:0,hit:10,format:fulljson&abtest=scene_tag:test_1,flow_divider:123456
scene_tag:實驗組名稱(原實驗場景標識),用戶在控制臺創建一個或多個實驗組后,將其中一個實驗組的名稱設置為 scene_tag的參數值(如上圖所示),最終實驗流量會進到該實驗組名稱下面對應的各個實驗中。
flow_divider:該參數必須指定。表示:后端系統對該值進行hash將用戶的查詢流量分配到不同的實驗中,分配的比例為用戶在控制臺上配置的實驗流量比例。flow_divider推薦為最終用戶的ID,如果沒有的話可以用最終用戶的設備ID或者IP地址。
注意:
如果通過SDK訪問開放搜索服務,當scene_tag和flow_divider不包含空格和標點時,只需要調用對應的接口即可,scene_tag和flow_divider無需encode處理;若包含標點,則scene_tag和flow_divider也需要先encode. 詳細請參考“實戰示例”。
如果通過API訪問開放搜索服務,scene_tag和flow_divider的值需要urlencode,最終傳給開放搜索的abtest參數格式為abtest=urlencode(scene_tag:urlencode(\$scene),flow_divider:urlencode(\$value)),其中urlencode為URL編碼函數。
若您還有疑問,可以參考A/B測試常見問題文檔。
二、 實驗組和實驗管理
實驗組管理:
創建好實驗組和實驗后,會在A/B測試主頁中生成對應的實驗組列表:用戶可對已創建的實驗組進行基礎的管理操作 :
1.啟動測試:
用戶可以對狀態為“待測試”或“已停止”的實驗組進行“啟動測試”。
2.停止測試:
用戶可以對狀態為“測試中”的實驗組進行“停止測試”。
3.刪除實驗組:
用戶可在A/B測試主頁對任意實驗組進行“刪除”操作。
實驗管理:
創建好實驗組和實驗后,會在實驗組詳情頁中生成對應的實驗列表:實驗列表內展現了實驗名稱、查詢分析類型與策略、排序策略類型與策略、流量占比和操作等基本信息:用戶可對已創建的實驗進行基礎的管理操作 :
編輯實驗:支持對實驗名稱、實驗配置、實驗流量進行修改。
刪除實驗:實驗被刪除后,系統將不再保留其實驗配置信息,并且線上不再生效。
白名單:
為了將特定flow_divider指定到特定的實驗,從而方便查看特定實驗的搜索效果,opensearch提供白名單功能,可將flow_divider添加到特定的實驗:
三、A/B Test 實驗組詳情
行為數據狀態
當您成功創建實驗組之后,進入實驗組詳情頁,行為數據在列表中呈現的狀態可能有以下幾種:
未開通:當前應用無行為數據上傳(詳情請點擊此處)
已開通無數據:當前應用已開通行為數據采集,但一直未接收到數據
數據異常:當前行為數據經質量檢驗發現問題較多不可信
實驗組狀態
當您成功創建實驗組之后,進入實驗組詳情頁,實驗組在列表中呈現的狀態可能有以下幾種:
待測試:當前實驗組的當前狀態,非歷史狀態,因為用戶可能之前進行過測試或停止過測試
測試中:指當前實驗組已在控制臺啟動了測試,且顯示啟動測試時間距離當天的天數
已停止:已停止,累計測試時間是指從首次啟動測試到最后停止測試時間范圍內,真正在測試的累計的天數,中間停止的時間不算
數據統計
從A/B Test實驗組列表頁單擊“詳情”或者直接從應用下的菜單欄內單擊“統計報表-A/B測試報表”即可進入實驗組詳情頁面,在數據統計頁面中查看A/B測試實驗數據報表,控制臺查看的數據是T+1天的(假設今天測試,明天才能在控制臺看到結果)。新控制臺改版之后合并了核心數據指標對比頁和具體指標數據表格,用戶可通過選擇“指標類型”下拉框內容來查看相應的指標。核心指標數據也從原有的數據形式更換成了折線統計圖的形式更直觀的呈現,默認展現的是最近1天的指標數據。用戶可在頁面內的實驗選擇下拉框內勾選多個要對比數據的實驗。目前的可統計的核心指標有搜索PV、搜索UV、無結果率、人均搜索PV、曝光次數、Query數、人均Query數。
注意:當日的A/B測試報表數據可在次日上午8點后查看,即使當日停止了A/B測試,次日也可查看實驗停止前的報表數據。
實戰示例
某電商產品線上使用OpenSearch查詢有以下兩種需求:
第一種需求:來自終端客戶進行的商品關鍵詞搜索流量,查詢方式為:
query=config=format:fulljson&&query=default:'寶寶奶粉'&&sort=price
第二種需求:來自內部其他業務的調用流量,查詢方式為:
query=config=format:fulljson&&query=cat_id:'1'|'2'|'3'&&sort=timestamp
現在該用戶希望在第一種需求下,按照終端用戶會員ID分流進行A/B Test,對比幾種排序表達式或者類目預測模型或者查詢分析規則的效果。那么這個用戶的配置步驟如下:
1.在控制臺A/B Test功能里創建實驗組和實驗。其中在創建實驗組的步驟中,將實驗組名稱填寫為 user_search 代表第一種需求:
2.在查詢中設置A/B Test參數。由于在控制臺已填寫實驗組為 user_search,所以在需求一的查詢中應該設置參數scene_tag:user_search,flow_divider:xxxx(終端用戶會員ID的值)。
2.1 SDK方式( 如下是java sdk用法,php sdk用法類似):aliyun-sdk-opensearch-3.4.1(java版)、opensearch-sdk-php-3.3.0(php版)。
2.2 API方式:
i. query=config=format:fulljson&&query=default:'寶寶奶粉'&&sort=-price&abtest=scene_tag:user_search,flow_divider:%e5%bc%a0%e4%b8%89
注意:這里對abtest的子參數scene_tag和flow_divider的value都做了urlencode)。
ii. 對請求中的每個參數(即query, sort, abtest)的value做urlencode:
query=config%3dformat%3afulljson&&query%3ddefault%3a%27%e5%ae%9d%e5%ae%9d%e5%a5%b6%e7%b2%8
3.以上配置完畢后,就可以實現對第一種場景的流量進行A/B Test的需求了。
業務運營報表
界面
可以通過【功能擴展—->A/B測試】,“統計報表”進入A/B測試的統計報表頁面;
也可以直接在“統計報表—->A/B測試報表”里查:
注意:A/B測試報表對應指標介紹可點擊此處進行查看。