3.1 KiB
3.1 KiB
问题陈述
按“图谱知识库”独立模块设计知识抽取与图检索链路,明确总部与教师内容入库策略,并把租户隔离作为图检索默认约束。
当前状态(已确认)
- 架构层已定义图数据库主选 NebulaGraph,AI 链路为业务服务 -> ai-client -> python-ai -> 图谱/向量。参考
docs/architecture/base-services.md (9-16)、docs/architecture/logical-view.md (50-72)。 - AI SQL 已有图谱实体、关系、同步任务等基础结构,且同步任务支持
target_store=GRAPH|VECTOR。参考init/pg/ai/10_create_ai_tables.sql (1-215)。 - 现有
python-ai仅暴露/health,尚无图谱入库与检索 API。参考backend/python-ai/app/main.py (1-13)。 - 功能清单强调知识库用于错题关联课程与内容检索,但当前运行时链路未落地。参考
docs/AI智能学习系统功能清单.md (91-98)。
模块拆分与设计细节
1) 子模块边界
kg-ingestion:知识文件到图谱实体/关系抽取、去重、版本管理。kg-model:实体类型体系(知识点/题目/课程/课件)与关系类型体系。kg-sync:图谱同步任务编排、重试、失败补偿。kg-retrieval:图检索 API(按场景返回知识点路径、关联题、关联课程)。kg-governance:内容审核、来源追踪、删除回收策略。
2) 入库策略(按你给定口径)
- 知识库分两类:图谱知识库、向量知识库。
- 总部创建知识库:同时进入图谱 + 向量。
- 教师班级课程/课件内容:仅进入图谱,不进入向量。
- 设计实现:在
tb_ai_knowledge_file增加source_owner_type(HQ/TEACHER)、knowledge_scope(GLOBAL/TENANT/CLASS/COURSE)、ingest_policy(BOTH/GRAPH_ONLY),同步任务根据策略自动生成。
3) 图检索与租户隔离
- 图检索默认过滤
tenant_id,并在班级场景附加class_id/course_id可见域约束。 - 总部全局知识仅在授权租户可见,禁止跨租户回查实体细节。
- 返回结果附带
source_table/source_pk以支持业务回查,但回查前再次执行租户一致性校验。
4) 与业务域联动
course:知识点树与课程节点建立双向可追溯引用。question:题目-知识点关系可回写图谱关系,支持错题知识路径解释。upms:复用班级与租户结构进行图谱可见域控制。
问题点与风险
- 目前仅有表结构,图谱入库/检索服务未实现,链路停留在设计层。
- 现有 AI 表缺少“来源归属与入库策略”显式字段,无法直接表达 HQ 双入库、教师图谱单入库规则。
- 没有图检索访问日志与越权审计,难以定位租户隔离问题。
- python-ai 未落地图数据库客户端与查询协议,接口冻结前需先定义查询契约。
需确认的设计决策
- 图检索首期采用“模板化查询 + 场景参数”还是开放式图查询 DSL(推荐模板化)。
- 总部知识对分校是否默认可见,或需要租户级授权开关。
- 图谱实体冲突(同名知识点跨租户)采用“租户隔离命名空间”还是“全局实体+租户可见边”模型。