# 创建空知识库

```{raw} html
<div class="mo-api-page-show-toc" aria-hidden="true"></div>
```

创建资源中心的知识库定义并准备同名数据域。创建后可单独添加数据源和语义条目。

```text
POST https://api.moi.matrixorigin.cn/v5/semantic-models
```

## 调用前准备

准备有目标工作区访问权限且具有创建知识库权限的个人访问令牌和目标工作区 ID。


## 请求体

:::::::{div} mo-api-tabs
::::::{tab-set}
:::::{tab-item} 请求示例

```bash
curl -X POST "https://api.moi.matrixorigin.cn/v5/semantic-models" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "<KNOWLEDGE_BASE_NAME>",
    "description": "<DESCRIPTION>",
    "tables": []
  }'
```

:::::
:::::{tab-item} 参数说明

::::{tab-set}
:::{tab-item} 请求体

| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `name` | string | 是 | 知识库名称，非空且最多 255 个 Unicode 字符，不得包含首尾空白；字符规则见下文。 |
| `description` | string | 否 | 覆盖范围和使用说明。 |
| `tables` | array of object | 否 | 兼容的旧式表来源定义。新接入来源请使用添加数据源接口。 |
| `files` | object | 否 | 兼容的旧式文件来源配置。新接入来源请使用添加数据源接口。 |

名称遵循 Catalog 命名规则：首字符可使用小写字母、数字、下划线或汉字，后续字符还可使用连字符（`-`）和点（`.`）。例如 `product_docs`、`产品资料`；不能使用大写字母、空格或斜杠（`/`）。名称创建后不可修改。

::::{tab-set}
:::{tab-item} 数据表

下面表格展开请求示例中 `tables` 数组的每一项；每一行是该数组项的一个字段。

| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `db_name` | string | 条件必填 | 表来源所在的数据库名称。 |
| `table_names` | array of string | 条件必填 | 该数据库中要纳入知识库的表名称。 |

:::
:::{tab-item} 文件来源

下面表格展开请求示例中 `files` 对象；每一行是该对象的一个字段。

| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `file_ids` | array of string | 否 | 文件 ID；创建知识库时服务端不保留此字段，应改用添加数据源接口。 |
| `parents` | array of string | 否 | 文件来源的父路径。 |
| `volume_ids` | array of string | 否 | 文件来源的卷 ID。 |
| `volumes` | array of object | 否 | 文件来源卷及路径。 |
| `vector_table` | string | 否 | 向量表名称；服务端可补齐默认值。 |
| `embedding_model` | string | 否 | Embedding 模型标识；服务端可补齐默认值。 |
| `tags` | array of string | 否 | 文件来源标签。 |

:::
:::{tab-item} 数据卷

下面表格展开请求示例中 `files.volumes` 数组的每一项；每一行是该数组项的一个字段。

| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `volume_id` | string | 条件必填 | 卷 ID。 |
| `parents` | array of string | 否 | 卷来源的父路径。 |
| `path` | array of string | 否 | 卷内文件路径。 |

:::
::::

:::
::::

:::::
::::::
:::::::

## 成功响应

成功时返回 `201`。保存 `data.id`，后续接口将它作为 `model_id` 使用。

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} 响应示例

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "id": 401,
    "name": "product_docs",
    "description": "产品文档",
    "tables": [],
    "source_counts": {
      "files": 0,
      "tables": 0,
      "total": 0
    },
    "created_at": 1735632000,
    "updated_at": 1735632000
  }
}
```

:::::
:::::{tab-item} 字段说明

::::{tab-set}
:::{tab-item} 通用字段

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 成功时为 `OK`。 |
| `msg` | string | 成功时为 `OK`。 |
| `data` | object | 响应数据。 |

:::
:::{tab-item} 知识库概览

下面表格展开响应示例中 `data` 对象；每一行是该对象的一个字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `id` | integer | 新知识库 ID。 |
| `name` | string | 已创建的知识库名称。 |
| `description` | string | 已保存的说明；未设置时可能省略。 |
| `tables` | array of object | 兼容的旧式表来源定义。 |
| `files` | object | 兼容的旧式文件来源定义。 |
| `source_counts` | object | 创建快照中的来源计数；空知识库各项为 `0`。 |
| `created_at` | integer | Unix 时间戳。 |
| `updated_at` | integer | Unix 时间戳。 |

:::
:::{tab-item} 数据表

下面表格展开响应示例中 `data.tables` 数组的每一项；每一行是该数组项的一个字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `db_name` | string | 表来源所在的数据库名称。 |
| `table_names` | array of string | 该数据库中纳入知识库的表名称。 |

:::
:::{tab-item} 文件来源

下面表格展开响应示例中 `data.files` 对象；每一行是该对象的一个字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `file_ids` | array of string | 文件 ID。 |
| `parents` | array of string | 文件来源的父路径。 |
| `volume_ids` | array of string | 文件来源的卷 ID。 |
| `volumes` | array of object | 文件来源卷及路径。 |
| `vector_table` | string | 向量表名称。 |
| `embedding_model` | string | Embedding 模型标识。 |
| `tags` | array of string | 文件来源标签。 |

:::
:::{tab-item} 数据卷

下面表格展开响应示例中 `data.files.volumes` 数组的每一项；每一行是该数组项的一个字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `volume_id` | string | 卷 ID。 |
| `parents` | array of string | 卷来源的父路径。 |
| `path` | array of string | 卷内文件路径。 |

:::
:::{tab-item} 来源统计

下面表格展开响应示例中 `data.source_counts` 对象；每一行是该对象的一个字段。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `files` | integer | 文件来源数。 |
| `tables` | integer | 表来源数。 |
| `total` | integer | 来源总数。 |

:::
::::

:::::
::::::
:::::::

## 错误响应

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} 响应示例

```json
{
  "code": "ErrParamInvalid",
  "msg": "name is required",
  "data": null
}
```

:::::
:::::{tab-item} 字段说明

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 错误代码。 |
| `msg` | string | 面向调用者的错误信息。 |
| `data` | null | 发生错误时为 `null`。 |

:::::
::::::
:::::::

## 后续操作

使用 `data.id` [添加数据源](add-data-sources.md)或[上传本地文件](upload-local-file.md)。
