Skip to content

知识图谱 GraphRAG

Molore的知识图谱由上游抽取引擎 graphifyy(钉版 graphifyy==0.9.16backend/requirements.txt)加一层宿主治理构成:引擎负责把语料逐篇提取为概念节点与关系边,宿主层(backend/app/services/graphify_service.py)负责语料导出、增量建图、覆盖率守卫、版本快照、置信度隔离、证据血缘与自进化调度。它要解决的问题是:让 LLM 批量抽取这种「可能半路失败、可能缩图、可能重复实体」的长任务,在个人知识库场景做到可断点续建、可回滚、可审计、低成本。

核心概念

概念说明
语义图graphifyy 抽取的概念节点 + 13 谓词关系边,需构建,消耗模型调用
物理图(相似度图)向量相似度成边 + UMAP 2D 投影,零 LLM 实时生成,不要求构建
谓词本体13 个收敛谓词(is_a / part_of / contains / causes / supports / …),事实源 app/services/graph_predicates.py
置信度边分 EXTRACTED(提取)/ INFERRED(推断)/ AMBIGUOUS(存疑),权重 0.9 / 0.6 / 0.35
隔离区AMBIGUOUS 边默认不进主图与对话扩展,读侧过滤零 schema 变更
增量建图带入旧 manifest + graph.json,按内容 hash 判变更,只抽变化内容
覆盖率守卫新图节点数不及旧图一半则不 swap,防余额耗尽类事故换出残图
版本快照每次 swap 前自动留底,snapshots/ 保留最近 5 份,可一键回滚

语料与谓词本体

  • 语料 = note / clip / knowledge / document 四类内容(VALID_TYPESgraphify_service.py:100),门槛与向量前拦门同口径:active + 抽取成功 + 文本 ≥200 字(图片文档 ≥20 字)。仓库模式「仅入库检索」(index_only)的内容不进图谱语料。
  • 13 谓词本体层(graph_predicates.py:25):is_a / part_of / causes / supports / contradicts / depends_on / derives_from / applies_to / extends / contains / compares_with / references / related_to(兜底)。旧词经方向安全的映射表归一。
  • 传递闭包:TRANSITIVE_PREDICATES = {is_a, part_of, contains}(传递保真才进此表,causes/supports 永不进)。图谱扩展沿传递谓词 BFS 最多 2 跳,权重每跳 ×0.7 衰减,多跳边标注跳数(endpoints/llm/graph_expansion.py:96-171)。
  • 图谱扩展只在关系意图下开火:_relation_intent 规则识别前移,非关系意图跳过扩展,消掉 junk 邻居注入面;扩展非空时渲染「图谱推理路径」区块,via 带关系语义 + evidence 证据句。

增量建图与产物治理

阶段关键机制代码位置
语料导出四类内容写 graphify_data/{space}/corpus/*.mdgraphify_service.py
增量带入旧产物的 manifest.json + graph.json 复制进构建目录,上游按内容 hash 判变更;删除源走 build_merge(prune_sources) 剪枝graphify_service.py:757-783
模型戳记准入swap 后写 _meta.json 记录构建模型;模型变更或缺戳记退全量重建graphify_service.py:766,911
零变更早退内容 hash 全未变时宿主层直接早退,不起构建graphify_service.py(宿主层)
覆盖率守卫新图节点不及旧图一半不 swap;增量 + 有删除源的合法缩图放行留痕graphify_service.py:860-885
快照留底swap 前自动快照旧图,{space}/snapshots/ 留 5 份snapshot_graphgraphify_service.py:986
回滚产物恢复 + 三张派生表幂等重建(无 LLM 纯聚合)rollback_snapshotgraphify_service.py:1045

两条硬纪律:快照永远放 corpus/ 之外(备份进语料目录会被当语料扫出垃圾节点);构建是后台任务,旧图在构建期间可读,进程重启后断点续建、语义缓存命中不重复扣费。

置信度隔离区与证据血缘

  • 隔离区:AMBIGUOUS 边默认不进主图、不进对话扩展;include_quarantined=1 时全量返回并打标,图谱页 2D 有「显示低置信边」开关;质量指标含 quarantined_edgesgraphify_service.py:1171-1183)。读侧过滤,产物不动。
  • 边证据血缘:graph_edgesevidence_doc_id / evidence_chunk_ids,由边的 source_file 解析回填;推理路径可附证据句(graphify_service.py:1213-1270)。
  • 实体消歧审计:entity_dedup_auditapp/services/graph_audit_service.py:44)生成三段诊断报表(同名漏网组 / 高相似未合并候选对 / 汇总),只读诊断不动数据,报告页折叠区块展示,展开才拉取。

文档入图与双图渲染

  • 文档入图:documentVALID_TYPES(09-17 P2-4),文档作为节点入语义图并可回溯原文;图片文档富化 image_url,节点详情显示缩略图。音频不做(无音频资产)。
  • 物理图:向量相似度成边,UMAP 2D 投影,全程零 LLM。UMAP/numba 计算子进程化(app/services/physical_graph_umap.pypython -m 调用),内存峰值随子进程退出释放——云端主进程基线从 780MB 降到 413MB,产物有水位失效 + 落盘缓存,重算是少数。
  • 前端:2D 用 Canvas 自绘(命令录制与光栅合成两段性能账,贵的东西烘位图),3D 用 React Three Fiber 自研星系(GalaxyScene.tsx)。知识网络页四个视图页签:3D相似 / 3D语义 / 2D相似 / 2D语义(GraphGalaxyPage.tsx:267-270)。
  • 图谱模块页签:知识网络 / 智能查询 / 路径探索 / 图谱报告 / 跨脑桥梁 / 标签图谱 / 百科(GraphLayout.tsx;简洁版无「智能查询」)。

自进化防抖

  • 开启自进化后,写入不再立即重建——全量重建等于全语料逐篇 LLM 提取。防抖口径:停笔静默 300 秒(_EVOLVE_QUIET_SECONDS)且距上次成功构建 ≥1800 秒(_EVOLVE_MIN_INTERVAL)才真正起建,期间写入只置 dirty 并重排计时器(graphify_service.py:1564-1568)。
  • 查库失败不清 dirty 标记,排定的重建不得静默消失;构建期间有新内容写入,本次完成后补建一轮。
  • 构建模型走推理档黑名单(REASONING_MODEL_PATTERNS,见模型管理与双通道计费);平台模型构建前预估费用,余额不足开工前直接提示。

下一步

基于 AGPL-3.0 协议发布。