Files
common_agent/rag-store-page-apis.md

450 lines
8.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 知识库页面后端接口清单
本文对应前端页面:[RagStoresPage.vue](frontend/src/pages/rag/RagStoresPage.vue) 和 [RagDocumentsPage.vue](frontend/src/pages/rag/RagDocumentsPage.vue)。
## 1. 页面目标
知识库页面采用:
- 顶部 4 张全局统计卡片
- 左侧知识库名称搜索与列表
- 右侧当前知识库详情
- 当前知识库级别操作:编辑、批量导入文件、重建索引
因此接口拆成 `全局概览``知识库列表/详情``文档管理``后续索引动作` 四组。
## 2. 本批已实现并已用于前端联调的接口
### 2.1 查询全部知识库
- `POST /api/rag/store/list`
当前返回类型:
- `RequestResult<List<RagStoreResponse>>`
当前字段:
- `id`
- `storeCode`
- `storeName`
- `description`
- `status`
- `remark`
对应代码:
- `src/main/java/com/bruce/rag/controller/RagStoreController.java`
- `src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java`
### 2.2 按条件查询知识库
- `POST /api/rag/store/query`
请求体:
```json
{
"storeCode": "PROD_DOC",
"storeName": "产品制度",
"status": "ENABLED"
}
```
当前支持字段:
- `storeCode`
- `storeName`
- `status`
对应代码:
- `src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java`
### 2.3 查询知识库详情
- `GET /api/rag/store/detail?id={id}`
返回类型:
- `RequestResult<RagStoreResponse>`
### 2.4 新增或修改知识库
- `POST /api/rag/store/save`
请求体:
```json
{
"id": 1,
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料",
"status": "启用",
"remark": "核心制度库"
}
```
返回类型:
- `RequestResult<Boolean>`
说明:
- `id` 为空时新增
- `id` 不为空时修改
### 2.5 删除知识库
- `POST /api/rag/store/delete?id={id}`
返回类型:
- `RequestResult<Boolean>`
### 2.6 知识库总览统计
- `GET /api/rag/store/overview`
返回类型:
- `RequestResult<RagStoreOverviewResponse>`
字段:
- `totalStores`
- `totalDocuments`
- `totalChunks`(当前为 `null`,待切片入库后统计)
- `retrievableStores`
### 2.7 知识库文档概览
- `GET /api/rag/store/documentOverview?storeId={storeId}`
返回类型:
- `RequestResult<RagStoreDocumentOverviewResponse>`
字段:
- `storeId`
- `storeName`
- `documentCount`
- `enabledDocumentCount`
- `parsedDocumentCount`
- `indexedDocumentCount`
- `lastUploadTime`
## 3. 当前文档管理接口
### 3.1 查询全部知识文档
- `POST /api/rag/documents/list`
### 3.2 按条件查询知识文档
- `POST /api/rag/documents/query`
当前可用于按 `storeId` 查询当前知识库下文档。
对应代码:
- `src/main/java/com/bruce/rag/controller/RagDocumentController.java`
- `src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java`
### 3.3 查询知识文档详情
- `GET /api/rag/documents/detail?id={id}`
### 3.4 新增或修改知识文档
- `POST /api/rag/documents/save`
### 3.5 删除知识文档
- `POST /api/rag/documents/delete?id={id}`
### 3.6 批量上传文档到知识库
- `POST /api/rag/documents/batchUpload`
请求类型:
- `multipart/form-data`
表单字段:
- `storeId`:知识库 ID
- `sourceType`:默认为 `RAG`
- `files`:文件数组
- `documentSummary`:可选,批量设置文档摘要
- `remark`:可选
当前行为:
- 逐个调用附件上传服务,写入 `sys_attachment`
- 自动创建 `rag_document`
- 新文档默认 `parseStatus=UPLOADED``indexStatus=PENDING``enabled=true`
### 3.7 批量解析知识文档
- `POST /api/rag/documents/parse`
请求体:
```json
{
"documentIds": [1, 2]
}
```
当前行为:
- 根据附件后缀或 content type 选择 Tika 解析器
- 解析结果写入 `rag_document_parse_result`
- 解析成功后更新 `parseStatus=PARSED`
- 解析失败后更新 `parseStatus=FAILED``errorMessage`
### 3.8 批量切片知识文档
- `POST /api/rag/documents/chunk`
请求体:
```json
{
"documentIds": [1, 2],
"chunkStrategy": 1,
"chunkSize": 800,
"chunkOverlap": 120,
"delimiter": "。"
}
```
当前行为:
- `chunkStrategy` 使用 `RagChunkStrategyEnum` 的整型枚举值,例如 `1` 表示固定长度切片,`5` 表示按分隔符切片。
- 只处理已经存在解析快照的文档。
- 按策略生成 `rag_chunk`,写入前会替换该文档已有切片。
- 当前尚未调用 Embedding 模型写入 `rag_chunk_embedding`
## 4. 下一批建议补充的接口
当前已有接口能支撑知识库、文档、上传、解析和手动切片入口。下一批建议聚焦向量索引、模型配置和任务化。
### 4.1 知识库列表查询增强版
- `POST /api/rag/store/manage/query`
用途:
- 左侧知识库列表
相比当前 `/query`,建议直接返回列表页需要的摘要字段,避免前端再额外聚合文档数据。
请求体建议:
```json
{
"storeName": "FAQ"
}
```
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": [
{
"id": 2,
"storeCode": "FAQ",
"storeName": "FAQ知识库",
"description": "常见问题知识沉淀",
"status": "ENABLED",
"documentCount": 58,
"chunkCount": 920,
"indexStatus": "PROCESSING",
"retrievable": true,
"updateTime": "2026-05-21 11:12:00"
}
]
}
```
建议响应 DTO
- `RagStoreManageListResponse`
字段建议:
- `id`
- `storeCode`
- `storeName`
- `description`
- `status`
- `documentCount`
- `chunkCount`
- `indexStatus`
- `retrievable`
- `updateTime`
### 4.2 查询单个知识库详情增强版
- `GET /api/rag/store/detailPlus?id={id}`
用途:
- 右侧详情区
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"id": 1,
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料",
"status": "ENABLED",
"createTime": "2026-05-03 10:20:00",
"updateTime": "2026-05-21 16:40:00",
"documentCount": 126,
"parseSuccessCount": 120,
"parseFailedCount": 6,
"chunkCount": 3800,
"lastUploadTime": "2026-05-21 15:32:00",
"lastIndexTime": "2026-05-21 15:48:00",
"retrievalMode": "HYBRID",
"embeddingModel": "bge-large-zh",
"chunkSize": 500,
"chunkOverlap": 100,
"topK": 5,
"retrievable": true
}
}
```
建议响应 DTO
- `RagStoreDetailResponse`
### 4.3 发起当前知识库重建索引
- `POST /api/rag/store/reindex?storeId={id}`
用途:
- 右侧“重建索引”按钮
请求体建议:
```json
{
"force": true
}
```
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"taskId": 1002,
"storeId": 1,
"status": "PROCESSING"
}
}
```
### 4.4 查询当前知识库最近任务
- `GET /api/rag/store/tasks?storeId={id}&limit=10`
用途:
- 右侧“最近任务”区
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": [
{
"id": 1002,
"taskType": "REINDEX",
"summary": "全库索引刷新",
"status": "PROCESSING",
"startedAt": "2026-05-21 16:00:00"
},
{
"id": 1001,
"taskType": "IMPORT",
"summary": "12 个文件,制度文档增量导入",
"status": "SUCCESS",
"startedAt": "2026-05-21 15:20:00"
}
]
}
```
建议响应 DTO
- `RagStoreTaskResponse`
## 5. 这页前后端最小联调顺序
当前知识库页和知识文档页已经接入基础接口。下一步联调顺序建议:
1. 完成向量入库:
- `POST /api/rag/documents/chunk` 生成 `rag_chunk`
- 通过模型网关调用 Embedding 并写入 `rag_chunk_embedding`
2. 完成索引入口:
- `POST /api/rag/documents/index`
- `POST /api/rag/store/reindex`
3. 再补任务查询:
- `GET /api/rag/store/tasks`
- `GET /api/rag/documents/tasks`
## 6. 当前前端实现说明
当前前端已经接入:
- 统计卡片:`/api/rag/store/overview`
- 左侧列表:`/api/rag/store/query`
- 右侧详情:`/api/rag/store/detail`
- 文档概览:`/api/rag/store/documentOverview`
- 批量上传:`/api/rag/documents/batchUpload`
- 知识文档列表:`/api/rag/documents/query`
- 批量解析:`/api/rag/documents/parse`
- 批量切片:`/api/rag/documents/chunk`
仍待后端补齐后再联调:
- 重建索引
- 最近任务
- 模型服务商与 Embedding 模型配置
- 检索配置
- 检索测试/召回预览
## 7. 与 Agent 调试链路的关联
当前 RAG 切片与向量数据已经被 Agent 调试页直接消费:
- Agent 调试接口 `POST /api/agents/{agentId}/chat``ragEnabled=true` 时会读取 `rag_chunk_embedding` 进行 TopK 召回。
- 若未完成切片向量化Agent 调试会返回“未召回到可用知识切片”。
关联文档:
- [Agent 页面后端接口清单](agent-page-apis.md)