智能召回引擎搭建完成后,通過API(Application Programming Interface)方式完成對召回引擎的讀請求,以及及對詳情表的寫請求。
通過API可以進行如下操作:
對運行中的x2i、向量的服務進行查詢。
對詳情表進行增量寫入。
域名
智能召回引擎搭建完成后,可以從控制臺上獲取域名。格式為${實例id}.aime.aliyuncs.com。
目前智能引擎對請求來源做了安全限制,該域名僅能在您購買實例關聯的VPC內進行訪問。
簽名
智能召回引擎使用http auth對讀寫請求進行驗權,需要用戶將設置的用戶名密碼加到請求的http header中。
基于Apache http client的實現:
String auth = userName + ":" + passWord;
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1));
String authHeader = "Basic " + new String(encodedAuth);
String query = "aime query here";
HttpGet httpGet = new HttpGet(query);
httpGet.setHeader("Authorization", authHeader);
curl請求
curl "http://aime-cn-xxxx.aime.aliyuncs.com/be?biz_name=searcher&p=test_x2i_biz&s=test_x2i_biz&return_count=10&outfmt=json2&trigger_list=trigger_key:1,trigger_key2:1.5" -u ${userName}:{passWord}
讀請求
請求語法
GET
http://${實例id}.aime.aliyuncs.com/be?biz_name=searcher
&p=${服務名}
&s=${服務名}
&return_count=${返回doc個數}
&outfmt=json2
&trigger_list=${trigger列表}
服務名:智能召回引擎中處于運行狀態的服務名稱
返回doc個數:本次查詢需要返回的召回doc個數
trigger列表:
x2i服務:為召回引擎中trigger的值,多個trigger用','分割。其中每個trigger需要帶上打分的加權值,類型為數值型,以':'分割。例如"trigger_key:1,trigger_key2:1.5",表示需要召回trigger_key1和trigger_key2關聯的doc列表,其中trigger_key1召回的doc的得分最終會乘基數1,trigger_key2召回的doc得分最終會乘基數1.5。
向量服務:為向量對應維度的向量,向量維度間用','分割,多個向量用';'分割。
x2i example
http://aime-cn-xxxx.aime.aliyuncs.com/be?biz_name=searcher&p=test_x2i_biz&s=test_x2i_biz&return_count=10&outfmt=json2&trigger_list=trigger_key:1,trigger_key2:1.5
向量 example
http://aime-cn-xxxx.aime.aliyuncs.com/be?biz_name=searcher&p=test_vec_biz&s=test_vec_biz&return_count=10&outfmt=json2&trigger_list=-0.5430353283882141,-0.0292476424574852,-0.3608616292476654,-0.35043397545814514,-0.23355364799499512,-0.24787241220474243,0.27063214778900146,-0.40489235520362854,0.3900103271007538,0.54123854637146,-0.006652768235653639,0.26998400688171387,-0.08973824232816696,0.5796284079551697,0.1965138018131256,0.6804714798927307,-0.3605094254016876,-0.12562842667102814,0.543321430683136,0.4717116057872772,-0.30192506313323975,0.2214985191822052,0.1516236513853073,0.21026527881622314,-0.6978874206542969,-0.11705683171749115,0.2574385106563568,-0.3885158896446228,-0.4346419870853424,0.1547151654958725
返回結果:
errorCode: 請求錯誤碼,成功為0
errorMessage: 請求錯誤詳情
matchItems:召回結果集
fieldNames:召回字段列表
fieldValues:召回doc內容列表
example
{
"errorCode":0,
"errorMessage":"none",
"matchItems":{
"fieldNames":[
"__score__",
"title",
"id",
"match_type",
"score",
"trigger_id",
"trigger_score"
],
"fieldValues":[
[
"1.0",
"title_1",
"3489628730026797560",
"1",
"0.000009883646271191537",
"indexall_common",
"1.0"
],
[
"1.0",
"title_2",
"-3094066460264965022",
"1",
"0.000005524287644220749",
"indexall_common",
"1.0"
]
]
}
}
寫請求
請求語法
GET
http://${實例id}.aime.aliyuncs.com/sendmsg?
&table=${table名稱}
&h=${內容哈希值}
&msg=${增量內容}
table名稱:智能召回引擎開啟增量模式的詳細表名稱
內容哈希值:增量的分片參數,一般取發送內容的哈希值即可
增量內容:發送的增量內容
格式要求,增量以kv對的格式發送給召回引擎。kv對內使用
%3D
分割,多個kv對之間使用%1F%0A
分割,kv對要以%1F%0A
結尾。增量支持add和delete消息,需要將
CMD%3Dadd
或CMD%3Ddelete
加到多個kv對的首個位置。
add消息需要填充詳細表中的所有字段,否則會因為數據不完整導致消息消費失敗。
delete消息需要包含詳情表的主鍵字段
add example
http://aime-cn-xxxx.aime.aliyuncs.com:80/sendmsg?table=detail_test_inc_table&h=2035815278&msg=CMD%3Dadd%1F%0A_item_hash_id%3D-5656019669429076362%1F%0Aauthor%3Dtest%1F%0Acategory%3D1%1F%0Acategory_level%3D5%1F%0Acategory_level1%3D1%1F%0Acategory_path%3D1_1_1_1_1%1F%0Achannel%3Dnone%1F%0Acity%3Dnone%1F%0Aclick_cnt%3D-1%1F%0Acollect_cnt%3D-1%1F%0Acomm_cnt%3D-1%1F%0Acountry%3Dnone%1F%0Adownload_cnt%3D-1%1F%0Aduration%3D-1%1F%0Aexpire_time%3D4102416000%1F%0Afeatures%3Dnone%1F%0Aid%3D-5656019669429076362%1F%0A
delete example
http://aime-cn-xxxx.aime.aliyuncs.com/sendmsg?table=detail_test_inc_table&h=-71900929&msg=CMD%3Ddelete%1F%0Aid%3D-5656019669429076362%1F%0A
返回結果
成功:{"success":true}
失敗:{"errno":1,"errmsg":"Error"},具體錯誤原因請聯系技術支持