1. 页面概览

1.1 是什么

知识库管理页面(KnowledgeBasePage.vue,约 1266 行)是 LightAIP 的知识文档管理入口,也是 NLQ 智能查数与 RAG 检索的知识底座。页面围绕「目录 → 文档 → 知识块」组织知识:左侧目录树负责分类,中部文档表格管理文档(新建/编辑/删除/版本),底部「知识检索」区对已入库文档做混合检索并高亮命中片段。

1.2 核心价值

能力说明
目录分类多级目录树,点击过滤文档列表
多格式文档text/markdown/html 直接粘贴,保存即切分向量化
版本管理每次编辑版本 +1,可查看历史并一键回滚
标签浏览聚合标签(GET /knowledge/tags 服务端全量聚合);点击后为客户端全量筛选(逐页 100 条拉取全部文档后本地按标签过滤,带进度/取消/上限)
混合检索语义 + 关键词融合,命中片段高亮

1.3 一句话总结

知识库管理页是 AIP 的知识文档「仓库」:目录管分类、文档管内容、版本管迭代,检索区让知识立即可被 NLQ 查数召回。

2. 访问入口

2.1 路由与菜单

2.2 认证与权限

2.3 端口与 API 前缀

端口:18080(AIP 后端)。API 前缀:/aip-api/v1(Vite 开发代理到 18080 并重写为 /api/v1)。

3. 界面布局

知识库管理(页头 + 「刷新」按钮)
└─ 操作结果提示条(alert,右上角「关闭」)
└─ 主体双栏网格(280px + 1fr)
   ├─ 左:目录卡片
   │   ├─ 「全部目录」+ 目录树(缩进多级,点击过滤)
   │   └─ 「+ 新建目录」→ 表单(名称 */上级目录/描述 + 「创建目录」)
   └─ 右:文档列表卡片
       ├─ 工具栏:搜索标题/内容关键字 + 「检索」+「新建文档」
       ├─ 标签行(聚合标签 chip + 「清除过滤」;点选后黄条提示切换为「客户端全量筛选」进度/结果口径)
       ├─ 表格:标题/格式/状态/版本/标签/目录/操作(详情/编辑/版本/删除)
       └─ 分页:「上一页」第 N / M 页「下一页」(客户端全量筛选态下隐藏)
└─ 知识检索卡片
   ├─ 检索输入(placeholder 如:2024年各产品销量...)+ 「检索」
   └─ 结果列表:标题 + score + 目录 + 版本 + 高亮片段

各板块职责:

4. 交互元素详解

4.1 目录区

控件含义操作效果后端调用
「全部目录」根过滤项清空目录过滤,重载文档列表第 1 页GET /knowledge/documents
目录树项各目录节点(缩进展示层级)点击选中过滤该目录下文档GET /knowledge/documents?directory_id=
按钮「+ 新建目录」/「收起」展开/收起新建目录表单切换表单显隐
输入「名称 *」目录名称必填POST /knowledge/directories
下拉「上级目录」父目录选择空为根目录;下拉按缩进展示同上(parent_id)
输入「描述」目录用途说明选填同上
按钮「创建目录」提交建目录成功后提示「目录"xxx"创建成功」并刷新目录树POST /knowledge/directories

4.2 文档列表区

控件含义操作效果后端调用
检索输入标题/内容关键字回车或点「检索」回到第 1 页重查GET /knowledge/documents?keyword=
按钮「新建文档」打开新建弹窗重置表单(格式默认 text)
标签 chip聚合标签点击触发客户端全量筛选(逐页 page_size=100 拉取全部文档后本地过滤,带进度/取消/上限);再次点击取消过滤GET /knowledge/documents?page=&page_size=100(循环,带当前 keyword/directory_id)
行内「详情」打开详情弹窗展示格式/状态/版本/目录/知识块数/内容/时间GET /knowledge/documents/:id
行内「编辑」打开编辑弹窗预填标题/格式/目录/标签/内容GET 详情 + PUT /knowledge/documents/:id
行内「版本」打开版本管理弹窗版本表 + 「回滚」GET /knowledge/documents/:id/versions
行内「删除」删除文档confirm 确认后删除并刷新DELETE /knowledge/documents/:id
分页「上一页」「下一页」翻页第 N / M 页指示;客户端全量筛选态下隐藏(命中集一次性全展示,分页不再作用其上,避免「第 N/M 页」误导)GET /knowledge/documents?page=

4.3 弹窗

4.4 知识检索区

输入 query 点「检索」(top_k=10),结果卡片展示标题、score(4 位小数)、目录、版本与高亮片段(命中关键字 <mark> 高亮);空结果显示「未检索到相关内容。」。

5. 后端关联

5.1 API 客户端

本页使用 action/web/src/api/aipClient.js(baseURL /aip-api/v1、timeout 30s、aip_token Bearer、401 跳登录),页面直接调用,无独立 API 文件。

5.2 端点表

方法路径(前缀 /aip-api/v1)请求体用途
GET/knowledge/directories目录列表(兼容嵌套 children / 扁平 + parent_id)
POST/knowledge/directories{name, parent_id?, description?}创建目录
GET/knowledge/documentspage, page_size, keyword?, directory_id?文档列表(分页)
POST/knowledge/documents{title, format, content, tags?, directory_id?}创建文档(返回 chunk_count)
GET/knowledge/documents/:id文档详情(含 chunk_count)
PUT/knowledge/documents/:id{title, format, content, tags?, directory_id?}更新文档(版本 +1)
DELETE/knowledge/documents/:id删除文档
GET/knowledge/documents/:id/versions版本列表
POST/knowledge/documents/:id/versions/:v/restore回滚到指定版本
POST/knowledge/search{query, top_k}混合检索
GET/knowledge/tags聚合标签列表

5.3 关键机制

6. 权限与安全

7. 常见问题与排错

7.1 文档列表提示「暂无文档(后端可能未就绪)。」

现象:中部文档区一直空,出现该空态文案。原因:GET /knowledge/documents 请求失败(后端未启动、token 过期 401 或路由未注册)。处理:确认 18080 AIP 后端已启动;打开 Network 面板看接口状态码;401 则重新登录。

7.2 点「检索」提示「请输入检索内容」

现象:知识检索区输入为空点检索,红条提示。原因:searchQuery.trim() 为空,前端校验拦截,未发起请求。处理:输入至少一个非空格字符后重试;确认没有误输入全角空格。

7.3 编辑保存后版本没有 +1

现象:编辑文档保存提示「已保存(版本 +1)」,但列表版本号未变。原因:内容实际未变化时后端可能不产生新版本;或表单未正确回填导致提交了相同内容。处理:修改内容后再保存;在「版本」弹窗确认版本历史是否有新增记录。

7.4 检索结果显示 HTML 乱码

现象:检索片段渲染异常或被注入。原因:理论上不会——highlightSnippetescapeHtml 转义再高亮替换。处理:若出现异常,检查是否有旧缓存页面;刷新页面重新检索。

8. 已知缺陷与边界

项目说明
标签为客户端全量筛选(现实边界)后端列表接口 GET /knowledge/documents 无 tag 参数,按标签过滤无法在服务端完成;页面改为点选标签后按 page_size=100(后端钳制上限)逐页拉取全部文档,再在客户端本地过滤。带进度、可取消(取消回退为「仅当前页过滤」并保留作用范围提示)、有拉取上限(20 页 / 2000 条,触顶终止并提示结果可能不完整);筛选就绪后命中集一次性全展示,分页条隐藏(2026-09-14 修正:此前分页条仍显示「第 N/M 页」且页码可点,但不作用于命中集,构成误导)
版本回滚不保留变更说明回滚后 change_note 无自动补充
大文档保存偏慢切分 + 向量化在保存请求内完成,大文档等待时间变长
检索 top_k 固定 10知识检索区无 top_k 调节入口
后端未就绪的降级提示目录/文档/标签任一加载失败仅 alert 提示,不阻塞其他区域

注:标签筛选历经两次演进——2026-09-06 先以页面黄条明示「仅过滤当前页已加载结果、非全量筛选」消除误导;2026-09-13 改为客户端全量筛选(逐页 100 条拉取 + 本地过滤 + 进度/取消/上限保护),后端列表接口仍无 tag 参数。

相邻页面数据源管理 · 知识库分层树 · 实体关系抽取 · 元数据语义标注