创建知识库并添加数据源

创建知识库并同时提交初始数据源。请求成功只表示来源记录和处理任务已创建,不表示内容已可检索。

POST https://moi.matrixorigin.cn/newmoi/semantic-models/create-with-sources

调用前准备

先确认来源:Catalog 表、Catalog 文件和批量选择只能引用 Catalog 中已有的数据;本地文件先通过上传本地文件取得文件 ID。准备有目标工作区访问权限且具有创建知识库权限的个人访问令牌和目标工作区 ID。

下方示例使用:

  • $AI_STUDIO_API_KEY:实际个人访问令牌,通过 X-API-Key Header 传递。

  • $WORKSPACE_ID:要创建知识库的工作区 ID,通过 X-Workspace-ID Header 传递。

直接添加来源时,按来源类型提供字段:

来源类型

必填字段

catalog_table

table_id

catalog_file

file_idvolume_id

local_file

上传返回的 file_id、原始 file_name

source_selections 只能在 Catalog 的 Database 或 Volume 范围内选择,不能传入 Catalog 之外的数据源。

请求体

字段路径中的 [] 表示数组中的每一项。例如,sources[].source_type 表示 sources 数组中每一项的 source_type 字段。

除知识库名称外,提交直接来源或来源选择。

字段

类型

是否必填

说明

name

string

知识库名称。

description

string

知识库说明。

image_index_enabled

boolean

是否在创建时启用图片索引。

files

object

文件索引扩展配置;服务会补齐创建知识库所需的固定索引设置。

sources

object(对象数组)

直接添加的来源。

sources[].source_type

string

条件必填

来源类型。

sources[].table_id

integer

条件必填

catalog_table 来源的表 ID。

sources[].file_id

string

条件必填

文件来源的文件 ID。

sources[].file_name

string

条件必填

local_file 来源的原始文件名。

sources[].volume_id

integer

条件必填

catalog_file 来源的卷 ID。

source_selections

object(对象数组)

按数据库或卷选择来源的规则。

source_selections[].kind

string

条件必填

database_tablesvolume_files

source_selections[].database_id

integer

条件必填

database_tables 的 Catalog Database ID。

source_selections[].volume_id

integer

条件必填

volume_files 的 Catalog Volume ID。

source_selections[].all_selected

boolean

true 选择当前范围内全部对象;false 时必须提供对应的显式选择 ID。

source_selections[].selected_table_ids

array

条件必填

all_selectedfalse 时,显式选中的 Catalog 表 ID。

source_selections[].selected_file_ids

array

条件必填

all_selectedfalse 时,显式选中的 Catalog 文件 ID。

source_selections[].excluded_table_ids

array

all_selectedtrue 时要排除的 Catalog 表 ID。

source_selections[].excluded_file_ids

array

all_selectedtrue 时要排除的 Catalog 文件 ID。

请求示例

curl -X POST "https://moi.matrixorigin.cn/newmoi/semantic-models/create-with-sources" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "$KNOWLEDGE_BASE_NAME",
    "sources": [
      {
        "source_type": "catalog_table",
        "table_id": $TABLE_ID
      }
    ]
  }'

成功响应

成功时返回 201,其中包含新知识库、已创建的 sources 和处理 jobs。保存来源的 row_id,后续来源、分段和治理接口均使用它。jobs 已创建不表示来源处理完成。

{
  "code": "OK",
  "msg": "OK",
  "data": {
    "model": {
      "id": 401,
      "name": "product_docs",
      "source_counts": {
        "files": 0,
        "tables": 0,
        "total": 0
      },
      "created_at": 1735632000,
      "updated_at": 1735632000
    },
    "data_domain": {
      "model_id": 401,
      "catalog_id": 10,
      "database_id": 20,
      "raw_volume_id": 30,
      "processed_volume_id": 31,
      "ensure_status": "ready",
      "last_checked_at": 1735632000
    },
    "sources": [
      {
        "row_id": "src_01",
        "source_type": "table",
        "model_id": 401,
        "resource_id": "123",
        "ingest_status": "pending",
        "effective_enabled": true
      }
    ],
    "jobs": [
      {
        "job_id": "job_01",
        "source_id": "src_01",
        "model_id": 401,
        "job_type": "ingest",
        "job_status": "pending",
        "idempotency_key": "idem_01",
        "retry_count": 0
      }
    ]
  }
}

响应字段如下。

字段路径中的 [] 表示数组中的每一项。例如,data.sources[].row_id 表示 data.sources 数组中每一项的 row_id 字段。

字段

类型

说明

code

string

成功时为 OK

msg

string

成功时为 OK

data.model

object

新建知识库的快照。

data.model.id

integer

新知识库 ID。

data.data_domain

object

为该知识库解析的数据域;包含 Catalog、数据库和卷的 ID,以及数据域的检查状态。

data.data_domain.ensure_status

string

数据域的当前确保状态。

data.sources

object(对象数组)

已创建的来源记录。

data.sources[].row_id

string

来源记录 ID,后续来源、分段和治理接口使用该值。

data.sources[].source_type

string

来源类型:filetable

data.sources[].ingest_status

string

来源处理状态;pending 不表示内容已可检索。

data.sources[].effective_enabled

boolean

当前生效的启用状态。

data.jobs

object(对象数组)

为来源创建的处理任务。

data.jobs[].job_id

string

处理任务 ID。

data.jobs[].source_id

string

关联的来源 ID。

data.jobs[].job_type

string

处理任务类型。

data.jobs[].job_status

string

处理任务的当前状态。

data.jobs[].idempotency_key

string

此处理任务的幂等键。

data.jobs[].retry_count

integer

当前已记录的重试次数。

错误响应

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

常见 HTTP 错误

HTTP 状态码

错误代码

常见原因

建议操作

400

ErrParamInvalid

请求体无效、name 为空、来源类型或来源标识无效,或仍传入不支持的 target_catalog_id

修正请求体后重试。

401

ErrUnauthorized

API Key 无效或已失效。

检查 API Key。

403

ErrForbidden

调用者没有创建知识库或读取所选来源的权限。

检查工作区和来源对象授权。

409

ErrConflict

服务拒绝冲突的知识库或来源状态。

读取现有对象后调整请求。

500

ErrServer

服务未能创建知识库或提交来源任务。

保留脱敏后的响应信息后重试。

后续操作

使用 data.jobs[].job_id 查询数据处理任务,确认来源处理完成后再使用知识库。

最后更新于