Files
K12Study/docs/plan/modules/知识图谱.md
2026-04-17 16:31:32 +08:00

3.1 KiB
Raw Blame History

问题陈述

按“图谱知识库”独立模块设计知识抽取与图检索链路,明确总部与教师内容入库策略,并把租户隔离作为图检索默认约束。

当前状态(已确认)

  • 架构层已定义图数据库主选 NebulaGraphAI 链路为业务服务 -> 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_typeHQ/TEACHERknowledge_scopeGLOBAL/TENANT/CLASS/COURSEingest_policyBOTH/GRAPH_ONLY同步任务根据策略自动生成。

3) 图检索与租户隔离

  • 图检索默认过滤 tenant_id,并在班级场景附加 class_id/course_id 可见域约束。
  • 总部全局知识仅在授权租户可见,禁止跨租户回查实体细节。
  • 返回结果附带 source_table/source_pk 以支持业务回查,但回查前再次执行租户一致性校验。

4) 与业务域联动

  • course:知识点树与课程节点建立双向可追溯引用。
  • question:题目-知识点关系可回写图谱关系,支持错题知识路径解释。
  • upms:复用班级与租户结构进行图谱可见域控制。

问题点与风险

  • 目前仅有表结构,图谱入库/检索服务未实现,链路停留在设计层。
  • 现有 AI 表缺少“来源归属与入库策略”显式字段,无法直接表达 HQ 双入库、教师图谱单入库规则。
  • 没有图检索访问日志与越权审计,难以定位租户隔离问题。
  • python-ai 未落地图数据库客户端与查询协议,接口冻结前需先定义查询契约。

需确认的设计决策

  • 图检索首期采用“模板化查询 + 场景参数”还是开放式图查询 DSL推荐模板化
  • 总部知识对分校是否默认可见,或需要租户级授权开关。
  • 图谱实体冲突(同名知识点跨租户)采用“租户隔离命名空间”还是“全局实体+租户可见边”模型。