1. 页面概览

1.1 是什么

实体关系抽取页面(EntityExtractPage.vue,V5 Stage 2 B2-1)把知识文档转化为结构化实体/关系,并注入 RAG 检索的第五通道(entity)。页面描述:知识文档 → LLM 抽取实体/关系 → 落表确认 → 注入 RAG 实体检索通道(doc:// URI 溯源)

1.2 核心价值

能力说明
任务化抽取提交后后台执行,前端 2 秒轮询,不阻塞页面
人工确认闭环实体确认保持沉淀,拒绝后不再进入 RAG 召回
doc:// 溯源每个实体带来源 URI,可一键复制
关系可视化力导向图展示实体与谓词边

1.3 一句话总结

实体关系抽取页把「文档知识」变成「可查询的知识图谱」:LLM 抽取 → 人工确认 → RAG 实体通道召回,全程 doc:// 可溯源。

2. 访问入口

2.1 路由与菜单

2.2 认证与权限

2.3 端口与 API 前缀

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

3. 界面布局

实体关系抽取(页头 + 描述)
└─ 操作结果提示条
└─ 最近抽取运行卡片(doc_id + 状态徽标 + 实体/关系计数 + 错误)
└─ 知识文档卡片:按标题过滤 + 「刷新」;表格 ID/标题/格式/版本/更新时间/操作(抽取/查看实体)
└─ 实体卡片:状态过滤下拉 + 「刷新」;表格 名称/类型/别名/属性/置信度/状态/溯源/操作(确认/拒绝)
└─ 关系卡片:表格 主语/谓词/宾语/宾语类型/置信度
└─ 实体关系图卡片:ECharts 力导向图(420px 高)

各板块职责:

4. 交互元素详解

4.1 知识文档

控件含义操作效果后端调用
输入「按标题过滤」+ 按钮「刷新」过滤/刷新文档列表@input 即时过滤(page 1、page_size 50)GET /knowledge/documents
行内「抽取」触发实体/关系抽取任务化提交;同步完成直接刷新,否则启动轮询(按钮变「抽取中...」)POST /knowledge/documents/:id/extract
行内「查看实体」设为活动文档加载该文档实体/关系/关系图GET /entities、/relations、/graph

4.2 实体表格

控件含义操作效果后端调用
下拉「全部状态/待确认/已确认/已拒绝」实体状态过滤切换即重新加载GET /entities?status=
按钮「刷新」刷新实体/关系/关系图refreshActive 并行刷新三块同上
行内「确认」确认实体(auto→confirmed)成功提示「实体「xx」已确认」POST /entities/:id/confirm
行内「拒绝」拒绝实体(→rejected)提示「已拒绝(RAG 不再召回)」POST /entities/:id/reject
溯源 URIdoc://... 链接点击复制 URI 到剪贴板

实体状态文案:auto=待确认、confirmed=已确认、rejected=已拒绝;类型徽标:person/org/product/metric/term/other 各自配色。表格下方提示「确认后的实体保持沉淀;拒绝的实体不再进入 RAG 实体检索通道。」。

4.3 关系表格与关系图

5. 后端关联

5.1 API 客户端

本页使用 action/web/src/api/entityApi.js,复用 aipClient(baseURL /aip-api/v1)。unwrap 解析 {code, data},错误取 body.errorextractDocument timeout 放宽到 120 秒。状态文案常量:ENTITY_STATUS_LABELS(auto/confirmed/rejected)、RUN_STATUS_LABELS(queued/running/success/failed)。

5.2 端点表

方法路径(前缀 /aip-api/v1)用途
GET/knowledge/documents文档列表(复用知识库路由,供抽取选择)
POST/knowledge/documents/:id/extract触发抽取(任务化返回 {run, task}
GET/entities?doc_id=&status=&limit=实体列表
GET/relations?doc_id=&limit=关系列表(subject/object 名称回填)
POST/entities/:id/confirm确认实体
POST/entities/:id/reject拒绝实体
GET/knowledge/documents/:id/graph实体关系图数据(nodes/edges)
GET/extract_runs?doc_id=&limit=抽取运行记录(前端轮询任务状态)

5.3 关键机制

6. 权限与安全

7. 常见问题与排错

7.1 点「抽取」一直停留在「抽取中...」或运行卡片卡在排队

现象:按钮长时间「抽取中...」,运行卡片状态为「排队中」或「抽取中」且不再刷新。原因:任务队列繁忙、LLM 网关 entity_extract 路由缺失,或轮询达到 120 次上限后停止。处理:确认 18080 AIP 后端存活与 LLM 网关路由已种 entity_extract;等队列消化后重新点「抽取」;若报错查看运行卡片的 error 文本。

7.2 抽取失败提示「抽取失败: ...」

现象:轮询到 failed,alert 红条提示失败原因。原因:LLM 调用失败、文档无内容可分块,或任务执行异常。处理:看运行卡片 error 字段;确认文档内容非空;检查 LLM 网关配置后重新触发。

7.3 实体/关系表格为空

现象:「查看实体」后实体表显示「暂无实体(选择文档并抽取)」,关系表「暂无关系」。原因:文档尚未抽取,或抽取未成功;状态过滤与活动文档不匹配。处理:确认已点「抽取」且运行状态为「完成」;确认状态过滤未限制;点「刷新」重载。

7.4 关系图不显示或为空白

现象:选择文档后关系图区空白,或提示「选择左侧文档后展示实体关系图」。原因:GET /graph 未返回 nodes(无抽取结果);或 ECharts 渲染时容器隐藏。处理:确认抽取成功且有实体;点「刷新」重载;浏览器窗口缩放会自动 chart.resize()

8. 已知缺陷与边界

项目说明
抽取依赖 LLM无规则降级路径,LLM 网关未注入时 ExtractDocument 直接报错
轮询上限 120 次超过约 4 分钟未完成则停止轮询(任务仍在后台执行)
实体扫描上限 1000RAG 实体通道单次扫描实体数上限 entityScanLimit=1000
列表限制 200 条实体/关系接口 limit 固定 200,超量需后端扩大
图仅活动文档关系图只展示当前活动文档的实体关系,无全局图谱
关系只读本页不支持编辑/删除关系,仅实体可确认/拒绝

相邻页面知识库管理 · 知识库分层树 · 元数据语义标注