You need to enable JavaScript to run this app.
导航
add
最近更新时间:2024.12.16 16:46:41首次发布时间:2024.12.16 16:46:41

概述

/api/knowledge/doc/add 接口用于向已创建的知识库导入文档。

说明

前提条件

完成“对接指南“页面的注册账号、实名认证、AK/SK 密钥获取和签名获取后,可调用 API 接口实现知识库的创建功能。

请求接口

URI

/api/knowledge/doc/add

统一资源标识符

请求方法

POST

客户端对向量数据库服务器请求的操作类型

请求头

Content-Type: application/json

请求消息类型

Authorization: HMAC-SHA256 ***

鉴权

请求参数

参数

子参数

类型

是否必选

默认值

参数说明

collection_name

--

string

--

知识库名称

  • 只能使用英文字母、数字、下划线_,并以英文字母开头,不能为空
  • 长度要求:[1, 64]

project

--

string

default

知识库所属项目
即在【访问控制】-【资源管理】-【项目】中创建的项目

resource_id

--

string

--

知识库唯一 id
可选择直接传 resource_id,或同时传 name 和 project 作为知识库的唯一标识

add_type

--

string

--

文档添加的方式,可为以下枚举值:

  • url :提供了可以直接下载的 url 链接
  • tos :tos 的已授权目录,目前只支持华北区域
  • lark:上传飞书文档时,此参数传 lark

doc_id

--

string

--

知识库下的文档唯一标识

  • 只能使用英文字母、数字、下划线_,并以英文字母开头,不能为空
  • 长度要求:[1, 128]

注:

  • 多次上传,重复的 doc_id 会进行覆盖(新上传的覆盖旧的)
  • "add_type" == "url" 时,该字段必传
  • "add_type" == "tos" 时,该字段无效,系统会自动从 tos 文件的 meta 中获取知识库常见问题

doc_name

--

string

--

文档名称

  • 长度要求:[1, 256]
  • "add_type" == "url" 时,该字段必传
  • "add_type" == "tos" 时,该字段无效,系统会自动从 tos 中获取

doc_type

--

string

--

上传文档的类型,非结构化文档支持类型:txt, doc, docx, pdf, markdown/md, faq.xlsx, pptx ;结构化文档支持类型:xlsx, csv, jsonl
注:

  • add_type 为 url 时,该字段必传。
  • add_type 为 tos 时,该字段无效,系统会自动从 tos 文件的扩展名中获取。
  • add_type 为 lark 时,可选上传飞书文档时要对应类型,例如 wiki docx sheet。

【对于faq格式的说明】

  1. 上传文档时,需要通过特殊的后缀 .faq 进行标识,格式为:文档名.faq.xlsx;文档固定格式为一列问题、一列答案,示例:Q&A问答对示例
  2. 解析限制说明:支持解析多个 sheet,不超过 50 个;多个 sheet 总行数上限为 1万,超过文档处理失败;对于问题或答案为空的行会跳过不做处理;当前限制是问题是1024个字符,答案是65535个字符。
  3. 若 faq 包含问题和答案外的其他信息,建议创建结构化知识库

lark_file

--

json

--

飞书文档的地址
参考事例:
{
" url ": "链接", // 支持docs、电子表格、文件夹、wiki
" obj_type " : " docx " , // 枚举:wiki docx folder sheet space
" obj_token " : " xx " , // 对应obj_type的token,可通过飞书开放平台OpenAPI飞书开放平台自行获取,或用/api/knowledge/lark/doc/auth获取
" include_childe " : true/false, //是否要包含子文档 默认为false
}
注:
url和obj_type+obj_token二选一

tos_path

--

string

--

已授权的 tos 目录(注意需要以/结尾)或指定文件路径

  • "add_type" == "url" 时,该字段无效
  • "add_type" == "tos" 时,该字段必传
    • 系统会自动生成 doc_id,若需手动指定,可参考 知识库常见问题,在 tos 元信息中定义
    • 元数据信息上除 doc_id 外的其他信息会被当做文件的 doc_meta 信息保存

注:

  • 导入目录下的文档是一次性的,后续目录下的文档变更不会被自动同步到知识库
  • tos 目录下文档的 doc_id 取值若重复,最终导入知识库只会保留最后一个上传的文档,即 doc_id 唯一
  • 如果目录下文件内容的变更需求,有以下两种方式:
    • 通过 url 方式导入,并指定要替换文档的 doc_id (相对比较快)
    • 通过 tos 方式导入,这种方式会对目录下所有的文档做变更检查,并将新文档替换旧文档。由于需要做文件校验,这种方式耗时较长
  • 导入目录时只会扫描目录下的文件,而不会递归查看子目录

url

--

string

--

上传文档的 url 链接

  • 对应 url 链接的文档不超过 20 MB
  • "add_type" == "url" 时,该字段必传,字段长度范围是[1,1024]
  • add_type 为其他值时,该字段无效

meta

array 或 array 对应的json 字符串

--

meta 信息

  • "add_type" == "url" 时,该字段有效
  • add_type 为其他值时,该字段无效

field_name

string

--

字段名

  • 不能为 “doc_id”
  • 使用英文字母,数字,下划线,并以英文字母开头,长度不得超过 128
  • 存在于 collection 的 fields 中的 field_name 可以用于在检索时的字段筛选,不存在的只能用于信息展示(注意类型需要保持一致)

field_type

string

--

字段类型

field_value

与 field_type指定类型一致

--

字段值

dedup

--

如果任一子参数为 true,表示需要去重,此时如果库中没有重复文档,会当做新文档导入。
content_dedupdoc_name_dedup 均为 true 时:
(C 和 D 分别表示库中相同内容和相同 doc name 的文档数量)

  • C + D = 0 时,当做新文档导入
  • C + D = 1 时,覆盖 C 或 D 对应的文档
  • C = 1 ,D = 1 且 C 和 D 指向同一篇文档时,跳过对应文档处理,且提示已存在
  • 其他情况, 返回对应的文档列表,并提示用户去重后重新导入

注:只会检查 content 和 doc name,其他信息的变更不会检查,覆盖或当做新文档导入以上述标准为准。

content_dedup

bool

false

内容去重
覆盖相同内容的文档,此时会查找库中相同 doc hash 的文档,查询到的数量为 C。当 content_deduptruedoc_name_dedupfalse 时:

  • C = 0 时,当做新文档导入,规则参考 dedup 说明
  • C = 1 时,覆盖对应文档
  • C > 1 时,提示报错信息。

doc_name_dedup

bool

false

文档名称去重
覆盖相同 doc name 的文档。此时会查找库中相同 doc name 的文档,查询到的数量为 D。当 doc_name_deduptruecontent_dedupfalse时:

  • D = 0 时,当做新文档导入,规则参考 dedup 说明
  • D = 1 时,覆盖对应文档
  • D > 1 时,提示报错信息。

响应消息

参数

参数说明

备注

code

状态码

message

返回信息

request_id

标识每个请求的唯一标识符

data

{
"collection_name": 知识库的名字,
"resource_id": 知识库唯一标识,
"project": 项目名,
"doc_id": 文档唯一标识。
}

通过tos目录/飞书导入时,不会返回。

状态码说明

状态码

http状态码

返回信息

状态码说明

0

200

success

成功

1000001

401

unauthorized

鉴权失败

1000002

403

no permission

权限不足

1000003

400

invalid request:%s

非法参数

1000005

400

collection not exist

collection不存在

1001010

400

doc num is exceed 10000

doc数量已满

完整示例

请求消息

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: HMAC-SHA256 ***' \
  https://api-knowledgebase.mlp.cn-beijing.volces.com/api/knowledge/doc/add \
  -d '{
    "collection_name": "test_collection_name",
    "project": "",
    "add_type": "url",
    "doc_id": "test0123",
    "doc_name": "张某某盗窃案",
    "doc_type": "pdf",
    "url": "https://fwh-my-test-bucket.tos-cn-beijing.volces.com/%E6%96%B0%E6%A9%99%E7%A7%91%E6%8A%80/%E5%91%A8%E6%9D%A8%E7%9B%97%E7%AA%83%E6%A1%88.pdf?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Content-Sha256=UNSIGNED-PAYLOAD&X-Tos-Credential=AKTP0UZNtgnE7Lfth5eB2z0Z9qy2gyewikK9nbStjHp0OY%2F20240325%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20240325T114024Z&X-Tos-Expires=3600&X-Tos-SignedHeaders=host&X-Tos-Security-Token=nCgdqdEROend3.ChsKBzNzX056d3cSEGBgA9av-UtVs7ClfMkXS4oQk8WFsAYYo-GFsAYgle7V6QcoAjCSkLEJOhx6aGFpeXVqaWEuMDMyMkBieXRlZGFuY2UuY29tQgN0b3NSHHpoYWl5dWppYS4wMzIyQGJ5dGVkYW5jZS5jb21YBGAB.Nur_XCwZ_1LHmSsfeWGjDUn8SEOo3c6op5hx3lUgLZuxtHN_sqs-Kd0KbKw-51CT6wXKQo3AbmidScqVTu6gLQ&X-Tos-Signature=5c3dff2f8cd67daae99476d54188033cc32932d87f1ff85f4f1afd5862fa35cd",
    "meta":[
    {"field_name":"行业","field_type":"string", "field_value":"企业服务"},
    {"field_name":"是否公开","field_type":"bool", "field_value":True},
    ]
}'

响应消息

执行成功返回:

HTTP/1.1 200 OK
Content-Length: 43
Content-Type: application/json
 
{
    "code":0,
    "message":"success",
    "request_id":"021695029537650fd001de666660000000000000000000230da93",
    "data":{
        "collection_name": "张某某盗窃案",
        "resource_id": "kb-8349ef57441ab57",
        "project": "default",
        "doc_id": _sys_auto_gen_doc_id-17691607628519396693
        }
}

执行失败返回:

HTTP/1.1 400 OK
Content-Length: 43
Content-Type: application/json
 
{"code":1000003, "message":"invalid request:%s", "request_id": "021695029757920fd001de6666600000000000000000002569b8f"}