# 重新向量化

重新对来源分段执行向量化。请求提交成功后仍需读取来源或处理任务状态确认实际结果。

```text
POST https://moi.matrixorigin.cn/newmoi/semantic-models/{model_id}/sources/{source_row_id}/segments/re-embedding
```

## 调用前准备

先[查询文档详情](get-document.md)，取得当前分段版本 ID 和索引版本作为基线。准备有目标工作区访问权限的个人访问令牌和目标工作区 ID。

下方示例使用：

- `$AI_STUDIO_API_KEY`：实际个人访问令牌，通过 `X-API-Key` Header 传递。
- `$WORKSPACE_ID`：目标工作区 ID，通过 `X-Workspace-ID` Header 传递。
- `$MODEL_ID`：知识库 ID。
- `$SOURCE_ROW_ID`：来源记录 ID。

## 路径参数

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `model_id` | integer | 知识库 ID。 |
| `source_row_id` | string | 来源记录 ID。 |

## 请求体

提交来源当前的版本基线。

| 字段 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| `base_segment_version_id` | string | 是 | 调用前读取到的当前分段版本 ID。 |
| `base_index_version` | integer | 是 | 调用前读取到的当前索引版本。 |

## 请求示例

```bash
curl -X POST "https://moi.matrixorigin.cn/newmoi/semantic-models/$MODEL_ID/sources/$SOURCE_ROW_ID/segments/re-embedding" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "base_segment_version_id": "<SEGMENT_VERSION_ID>",
    "base_index_version": <INDEX_VERSION>
  }'
```

## 成功响应

成功时返回 `200` 和更新后的来源文档快照；仍应通过来源或任务状态确认向量化的最终结果。

```json
{
  "code": "OK",
  "msg": "OK",
  "data": {
    "document": {
      "source": {
        "row_id": "src_01",
        "model_id": 401,
        "ingest_status": "processing"
      },
      "segment_status": {
        "available": true,
        "total": 2
      },
      "current_segment_version_id": "ver_03",
      "current_index_version": 3,
      "segment_versions": [
        {
          "version_id": "ver_03",
          "current": true,
          "index_version": 3,
          "chunk_count": 2
        }
      ],
      "segments": [
        {
          "segment_id": "seg_01",
          "enabled": true
        }
      ]
    }
  }
}
```

响应字段如下。

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `code` | string | 成功时为 `OK`。 |
| `msg` | string | 成功时为 `OK`。 |
| `data.document` | object | 更新后的来源文档快照。 |
| `data.document.source.ingest_status` | string | 当前处理状态；不以 HTTP 成功替代处理完成。 |
| `data.document.segment_status` | object | 分段可用状态和数量。 |
| `data.document.current_segment_version_id` | string | 当前分段版本。 |
| `data.document.current_index_version` | integer | 当前索引版本。 |
| `data.document.segment_versions` | object（对象数组） | 当前可用分段版本。 |
| `data.document.segments` | object（对象数组） | 当前版本中的分段。 |

## 错误响应

```json
{
  "code": "ErrConflict",
  "msg": "segment version conflict",
  "data": null
}
```

### 常见 HTTP 错误

```{list-table}
:header-rows: 1
:widths: 12 22 32 34

* - HTTP 状态码
  - 错误代码
  - 常见原因
  - 建议操作
* - `400`
  - `ErrParamInvalid`
  - 路径 ID 或分段版本基线无效。
  - 重新读取文档后使用当前基线。
* - `401`
  - `ErrUnauthorized`
  - API Key 无效或已失效。
  - 检查 API Key。
* - `403`
  - `ErrForbidden`
  - 调用者没有更新来源的权限。
  - 检查工作区和对象授权。
* - `404`
  - `ErrNotFound`
  - 知识库或来源不存在，或当前调用者不可见。
  - 重新确认路径 ID。
* - `409`
  - `ErrConflict`
  - 当前分段版本已变化。
  - 读取最新文档后重试。
* - `500`
  - `ErrServer`
  - 服务未能执行重新向量化。
  - 保留脱敏后的响应信息后重试。
```

## 后续操作

向量化是异步执行。通过[查询数据处理任务](list-data-processing-jobs.md)或[查询文档详情](get-document.md)确认向量化的最终结果。
