OpenSearch-LLM智能問答版支援通過API的方式批量推送文檔。
前提條件
介面資訊
|
要求方法 |
請求協議 |
請求資料格式 |
|
POST |
HTTP |
JSON |
請求URL
{host}/v3/openapi/apps/[app_group_identity]/actions/knowledge-bulk
-
{host}:調用服務的地址,支援通過公網和VPC兩種方式調用API服務,可參見擷取服務調用地址。 -
{app_group_identity}:應用程式名稱,需要登入OpenSearch-LLM智能問答版控制台,在執行個體管理中查看對應執行個體的應用程式名稱。
請求參數
Header參數
|
參數 |
類型 |
是否必填 |
描述 |
樣本值 |
|
Content-Type |
string |
是 |
請求的資料格式,目前僅支援JSON格式,固定填寫"application/json"。 |
application/json |
|
Authorization |
string |
是 |
請求鑒權的API Key,Bearer開頭。 |
Bearer OS-d1**2a |
Body參數
|
參數 |
類型 |
是否必填 |
描述 |
樣本值 |
|
cmd |
string |
是 |
操作指令。 |
ADD/DELETE |
|
fields |
map |
是 |
欄位組合。 |
|
|
fields.id |
string |
是 |
主鍵ID。 |
13579 |
|
fields.title |
string |
否 |
文檔標題。 |
Something interesting |
|
fields.url |
string |
否 |
文檔的連結。 |
https://www.aliyun.com |
|
fields.content |
string |
是 |
文檔的內容。 |
No, is not. |
請求體樣本
1、上傳主表文檔
['{
"cmd": "ADD",
"fields": {
"id": "13579",
"title": "Something interesting",
"url": "https://www.aliyun.com",
"content": "No, is not."
}
}']
上傳非結構化文檔(pdf/doc/txt/html)
['{
"cmd" : "URL/BASE64",
"fields": {
"id": "文檔id(可選)",
"type": "檔案類型,pdf/doc/txt/html...",
"title": "檔案名稱(可選)",
"content": "URL/Base64編碼資料",
"url": "連結(可選)"
}
}']
URL僅支援OSS的通過ossClient.generatePresignedUrl產生的資料訪問URL
2、上傳輔表
['{
"cmd" : "ADD",
"fields": { # 資料體,根據表格schema定義
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
"table_name": "輔表表名" # 表名,空預設為主表
}']
3、刪除表
['{
"cmd" : "DELETE",
"fields": {
"id": "13579333"
}
}']
-
cmd : 必選欄位。定義該文檔的操作行為,可以為“add”、“delete”。建議在一個請求中進行批次更新操作,提高網路互動及處理效率。“add”表示新增文檔,如果該主鍵對應文檔已經存在,則會覆蓋原來文檔;“delete”表示刪除文檔,如果該主鍵對應文檔已經不存在,則認為刪除成功。
-
fields : 必選欄位。要操作的文檔內容,主鍵欄位必選,系統所有操作都是通過主鍵來進行的。對於“delete”只需要提供文檔主鍵即可。
-
注意:最外層是JsonArray類型,支援多個文檔大量操作。
返回參數
|
參數 |
類型 |
描述 |
|
errors |
list |
錯誤內容 |
|
status |
string |
status:執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
|
request_id |
string |
當前請求的 request_id |
|
result |
boolean |
執行成功返回該參數,值為true,報錯不返回該參數 |
|
total |
int |
上傳文檔的總數 |
|
success |
int |
上傳成功文檔數 |
|
failure |
int |
上傳失敗的文檔數 |
|
failed_ids |
array |
上傳失敗的文檔id |
響應體樣本
{
"request_id" : "abc123-ABC",
"result" : {
"total": 100,
"success": 50,
"failure": 50,
"failed_ids": [
"id1",
"id2",
"id3",
"..."
]
}
"errors" : [
{
"code" : "如果有錯誤,這裡填錯誤碼",
"message" : "如果有錯誤,這裡填錯誤資訊"
}
]
}
注意事項
-
使用API/SDK推送資料時,應用的欄位名稱大小寫不敏感。
-
API/SDK推送資料有次數和大小的限制,目前無法修改上傳大小限制。不同應用的限制不同,請參閱使用限制。
-
資料上傳後請務必檢查傳回值,並對相關錯誤碼進行重試(尤其是3007錯誤),否則會出現資料丟失情況。同時,資料處理是非同步,系統返回“OK”後只表示系統接收資料成功,資料處理過程的錯誤會在控制台錯誤資訊中展示,請注意及時檢查。
-
POST的資料大小有限制,如果您上傳的文檔總量過大(編碼前2M),伺服器將拒絕接收任何參數,同時返回異常。
-
POST推送操作 body 部分的資料若包含中文必須要做 UTF-8 編碼,Header中的Content-MD5 參數也一樣,在計算資料 MD5 值前,必須要先進行 UTF-8 編碼,否則會出現推送報錯問題。
-
若介面調用返回錯誤碼 4016,此錯誤為使用者通過RAM使用者調用文檔推送時許可權不足,請為RAM使用者授予AliyunOpenSearchFullAccess許可權,具體操作請參見管理RAM使用者的許可權。