You need to enable JavaScript to run this app.
导航
create
最近更新时间:2024.11.07 11:13:26首次发布时间:2024.04.17 14:21:08

概述

/api/knowledge/collection/create 接口用于创建一个新的知识库。创建成功后,可以导入数据。

前提条件

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

请求接口

URI

/api/knowledge/collection/create

统一资源标识符

请求方法

POST

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

请求头

Content-Type: application/json

请求消息类型

Authorization: HMAC-SHA256 ***

鉴权

请求参数

参数

子参数

类型

是否必选

默认值

参数说明

name

--

string

--

知识库的名字

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

project

--

string

default

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

description

--

string

""

知识库描述信息

  • 长度要求:[1, 65535]

data_type

string

unstructured_data

知识库内的数据类型。

  • unstructured_data:非结构化数据
  • structured_data:结构化数据。

preprocessing

object

文档处理策略,当data_type为“unstructured_data”时生效,为“structured_data”时无效。

chunking_strategy

string

选用的切片策略,枚举值:["custom_balance", "custom"]

  • “custom_balance” 是方舟知识库系统提供的最新默认文档处理策略,该策略:
    1. 升级了对 PDF, DOCX 等复杂文档的解析和理解能力,对复杂文档版面结构、语义结构的解析能力获得大幅提升;特别优化了图片内容及其上下文的理解和加工能力,支持将图片和文本 chunk 混合编排,增强上下文一致性;特别优化了表格内容的理解加工能力,对长表格解析和切片更具优势;结合VikingDB 语义和关键词融合检索算法,提高了多模态内容的检索能力,大幅提升相关信息的召回能力;提高了切片算法信噪比,无关信息更少,语义损失更小。
    2. 选用此策略后,可生效的文档处理策略子参数包括:
    • "chunk_length" (仅当“chunk_identifier"为空时生效)
    • "merge_small_chunks" (仅当“chunk_identifier"为空时生效)
    • "multi_mode" (仅当“chunk_identifier"为空时生效)
  • “custom” 是使用自定义分隔符的文档处理策略,选用此策略后,可生效的文档处理策略子参数包括:
    • “chunking_identifier"
    • "chunk_length" (仅当“chunk_identifier"为空时生效)
    • "merge_small_chunks" (仅当“chunk_identifier"为空时生效)
    • "multi_mode" (仅当“chunk_identifier"为空时生效)
  • 请注意原“default”策略目前仅用于兼容存量知识库,不再维护,新建知识库建议采用“custom_balance”

chunking_identifier

list

--

自定义分隔符号

chunk_length

int

500

切片最大长度
范围为 [100,500]、[100,4000] 或 [100,8000](根据选择的 embedding_model 判定,bge-large-zh-and-m3 和 bge-large-zh 范围为 [100,500],doubao-embedding-and-m3 和 doubao-embedding 为 [100,4000],bge-m3 为 [100,8000]),默认为 500,不在范围内会报错

merge_small_chunks

bool

true

是否合并短文本片

multi_modal

--

--

图片召回策略
枚举值:

  • "image_ocr":图片ocr

传参示例:

  • "multi_modal": ["image_ocr"] 时,开启图片ocr,不传值即代表不开启图片ocr

使用旧参数命名“multi_mode"创建的库仍保留原命名,但新创建知识库不推荐继续使用。

table_config

object

当 data_type为“structured_data”时生效

{
  "table_type": "row","col",
  // row表示从行开始解析,col表示从列开始解析,
  "table_pos": "int",
  // 字段位于第几行或第几列,
  "start_pos": "int",
  // 起始数据在第几行,
  "table_fields": [
      { "field_name": "xxx", //字段名称
          "field_type": "int64", //字段类型, 支持string, int64, float32, bool
          "if_embedding": true, //是否参与索引
          "default_value":"xxx", //默认值
          "if_filter": false //设置为过滤字段
    },
    .....
  ]
}

index

object

--

索引配置

index_config

object

--

{
    "fields": [
        {
            "field_name": "type",
            //字段名
            "field_type": "string",
            //字段类型
            "default_val": "instruction"
            //字段默认值
         },
         {...}
    ],
    "cpu_quota": 1,
    // cpu 配额,整数型,大于 0, 默认值为 1
    "embedding_model": "doubao-embedding-and-m3",
    // 指定向量化模型
    "embedding_dimension": 2048,
    // 向量维度
    "quant": "int8"
    // 向量的量化方式

    // "embedding_model"、"embedding_dimension"和"quant"可选范围参考
}

注:

  • fields 数量限制为 50 个,且名称不可重复。
  • fields 的名字不能以 "_sys_auto" 开头,否则会创建失败。
  • 对于 fields,如果不传或 value 为空,将不会加入任何的筛选字段。
  • 如果 field 设置 doc_id 字段,doc_id 字段需要为 string 类型,这时系统会将 doc 的 doc_id 字段加入筛选字段

index_type

string

hnsw_hybrid

指定索引算法,支持 hnsw_hybrid、hnsw 和 flat
推荐选择 “hnsw_hybrid”,能够兼具对关键词和语义的理解,综合提高检索精度
向量化模型和索引算法的对照关系参考 向量化模型及索引算法对照表

向量化模型及索引算法对照表

向量化模型

产出类型

索引类型

向量维度

量化方式

检索类型

doubao-embedding-and-m3

稠密向量和稀疏向量

hnsw_hybrid

1024、2048

int8、float、fix16

混合检索(兼顾语义检索和关键词匹配)

doubao-embedding

稠密向量

hnsw、flat

1024、2048

int8、float、fix16

语义检索(字节自研模型)

bge-large-zh

稠密向量

hnsw、flat

1024

int8、float、fix16

语义检索

bge-m3

稠密向量和稀疏向量

hnsw_hybrid

1024

int8、float、fix16

混合检索(兼顾语义检索和关键词匹配)

hnsw、flat

1024

int8、float、fix16

语义检索(此时稀疏向量被忽略,适用于只需要长文本窗口、多语言检索的纯语义检索场景)

bge-large-zh-and-m3

稠密向量和稀疏向量

hnsw_hybrid

1024

int8、float、fix16

混合检索(兼顾语义检索和关键词匹配)

响应消息

参数

参数说明

code

状态码

message

返回信息

data

返回的详细信息
{
"resource_id": 知识库的唯一id
}

request_id

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

状态码说明

状态码

http状态码

返回信息

状态码说明

0

200

success

成功

1000001

403

unauthorized

鉴权失败

1000002

403

no permission

权限不足

1000003

400

invalid request:%s

非法参数

  • 缺失必选参数
  • collection命名不符合规范
  • 字段类型与相关字段属性不满足约束条件

1000004

400

collection exist

collection已存在

完整示例

请求消息

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: HMAC-SHA256 ***' \
  https://api-knowledgebase.mlp.cn-beijing.volces.com/api/knowledge/collection/create \
  -d '{
    "name": "apiexample",
    "description": "test",
    "index": {
        "index_type": "hnsw_hybrid",
        "index_config": {
            "fields": [],
            "quant": "int8",
            "cpu_quota": 1,
            "embedding_model": "doubao-embedding-and-m3",
            "embedding_dimension": 2048
        }
    },
    "table_config": {
        "table_type": "row",
        "table_pos": 1,
        "start_pos": 2,
        "table_fields": [
            {
                "field_type": "string",
                "field_name": "讲解模块",
                "if_embedding": True,
                "if_filter": False
            },
            {
                "field_type": "string",
                "field_name": "子模块",
                "if_embedding": True,
                "if_filter": False
            },
            {
                "field_type": "string",
                "field_name": "问题示例",
                "if_embedding": True,
                "if_filter": False
            },
            {
                "field_type": "string",
                "field_name": "记忆化 ————讲解要点",
                "if_embedding": True,
                "if_filter": False
            }
            

        ]
    },
    "data_type": "structured_data",
    "project": "default"
    }
}'

响应消息

执行成功返回:

HTTP/1.1 200 OK
Content-Length: 43
Content-Type: application/json
 
{
    "code":0,
    "message":"success",
    "data": {
        "resource_id": "kb-8349ef57441ab57"
    },
    "request_id":"021695029537650fd001de666660000000000000000000230da93"
}

执行失败返回:

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