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用户授权。