Knowledge Graph Extractor 详解:单卡自托管的知识图谱生成器
前面介绍了 Graphify(代码库图谱)和 ai-knowledge-graph(文本图谱),它们都依赖外部 LLM API(Claude / GPT / Ollama)。但如果你想完全自托管——不调任何云 API、数据不出域、一张 GPU 就能跑——Knowledge Graph Extractor(Han Xiao / Jina AI 创始人出品)正是为此而生:它在单张 NVIDIA L4 GPU 上跑 Qwen3.6-35B-A3B-MTP(MoE 架构,激活仅 3B),把任何文档/URL/zip 文件转成交互式知识图谱,每条事实都是一个带证据和置信度的 (subject) --[predicate]--> (object) 三元组。本文讲清它是什么、怎么工作、与同类方案的差异。
GitHub 仓库:hanxiao/knowledge-graph-extractor;在线 Demo:hanxiao.io/knowledge-graph。
1、它是什么
Knowledge Graph Extractor 是一个自托管的知识图谱生成服务。给它一段文本、一个 URL 或一个 zip 包,它用本地运行的 LLM(Qwen3.6-35B-A3B-MTP)提取原子事实三元组,渲染成交互式力导向图谱。核心特点是完全自托管——整个推理过程跑在你自己的 GPU 上,不调用任何外部 API,数据不出域。
// 核心定位
输入:文本 / URL / zip 文件(txt, md, html, pdf, docx, json, csv, 代码...)
模型:Qwen3.6-35B-A3B-MTP(MoE,35B 参数,激活 3B)
硬件:单张 NVIDIA L4(24GB)
输出:交互式力导向知识图谱(JSONL 可下载)
// 基本面
// 作者:Han Xiao(Jina AI 创始人,bert-as-service 作者)
// 语言:Python(FastAPI + llama.cpp)
// 星标:214 Star(新项目,但作者影响力大)
// 许可:MIT
// 创建:2026-05,最后更新:2026-062、为什么重要:自托管的独特价值
// 与 Graphify / ai-knowledge-graph 的关键区别:
// 它们依赖外部 LLM(Claude / GPT / Ollama API)
// Knowledge Graph Extractor = 完全自托管,一卡一模型,不联网也能跑
// 自托管的三个核心优势
隐私 数据不离开你的服务器(法律/医疗/财务/军工文档)
成本 无 API 调用费,一次性硬件投入(一张 L4 约 $0.5/小时)
可控 模型/量化/参数全你说了算,可深度定制
// 为什么 Qwen3.6-35B-A3B-MTP 能跑在单卡上?
// MoE(Mixture of Experts)架构:35B 总参数,但每次只激活 3B
// → 推理时实际计算量 ≈ 3B 模型(快),但知识容量 ≈ 35B(强)
// → 配合 MTP(Multi-Token Prediction)推测解码,速度再提一档
// → 单张 L4 24GB 即可运行(Q3 量化后约 17GB)3、工作原理:四步流水线
// 第一步:输入处理(Input)
// 文本:直接处理
// URL:通过 Jina Reader 抓取并转成 Markdown
// zip:解压后逐文件处理(支持 txt/md/html/pdf/docx/json/csv/代码)
// 大文档:自动切块(chunk),不截断,确保全文覆盖
// 第二步:原子事实提取(Extract)
// LLM 发射 (subject) --[predicate]--> (object) 三元组
// 每条事实是一个"原子":一个主语、一个谓语、一个宾语
// prompt 强制使用规范化的实体名,确保节点能连接而非"文字死胡同"
// 每条事实还携带:
// - title(标题)
// - description(描述)
// - evidence span(原文证据片段)
// - confidence(置信度)
// - tags(标签)
// - source file(来源文件)
// 第三步:语义去重(Dedup)
// 使用 jina-embeddings-v5-text-nano(在 CPU 上跑,不占 GPU)
// 跨轮次、跨文件做语义去重
// → 同一事实从不同角度提取多次 → 合并为一条
// → 去重阈值可调
// 第四步:可视化(Visualize)
// 每条唯一事实 = 一条图边
// 节点名称规范化,变体自动合并
// 力导向布局(force-directed graph)
// 悬停边可查看完整事实卡片(标题/描述/证据/置信度)
// 结果可下载为 JSONL4、技术栈:llama.cpp + FastAPI + Docker
// 架构:两个服务,Docker Compose 一键启动
llama-server(GPU 服务)
llama.cpp + CUDA,提供 OpenAI 兼容 API(端口 8080)
模型:Qwen3.6-35B-A3B-MTP(GGUF Q3 量化,~17GB)
关键优化:
--ctx-size 16384 上下文窗口 16K
--spec-type draft-mtp MTP 推测解码(大幅加速)
--cache-reuse 256 KV 缓存跨轮复用
--flash-attn 1 Flash Attention
--n-predict 8192 最大生成长度
app(CPU 服务)
FastAPI:提取逻辑 + 调度器 + CPU 去重 + Web UI(端口 3000)
纯 Python,不占 GPU
// 单槽调度器(Job Queue)
L4 只有一个 llama 槽位,任务排队执行
新任务可抢占正在运行的任务 → 被抢占任务自动持久化
槽位空闲时自动从断点恢复
所有任务(meta + facts.jsonl + 输入)持久化在 data/jobs/
// 部署:Docker Compose 一键启动
docker compose up -d --build
→ 启动 llama-server + app 两个容器5、安装与部署
// 前置:单张 NVIDIA L4 24GB GPU(如 GCP g2-standard-8)
// 需要安装 Docker + NVIDIA Container Toolkit
// 一键部署(推荐)
git clone https://github.com/hanxiao/knowledge-graph-extractor.git
cd knowledge-graph-extractor
cp .env.example .env // 添加 JINA_API_KEY(用于 URL 抓取,jina.ai/api-key 免费获取)
bash scripts/setup.sh // 下载模型(~17GB)+ 启动两个服务
// 打开浏览器
// http://<your-ip>:3000
// 手动下载模型 + 启动
mkdir -p models
pip install -q huggingface-hub
python3 -c "from huggingface_hub import hf_hub_download; \
hf_hub_download('unsloth/Qwen3.6-35B-A3B-MTP-GGUF', \
'Qwen3.6-35B-A3B-UD-Q3_K_XL.gguf', local_dir='models')"
docker compose up -d --build6、每条事实的富信息
// 与简单的 "(主语, 谓语, 宾语)" 不同,每条事实是一个"富卡片"
{
"subject": "瓦特", // 主语(规范化实体名)
"predicate": "发明了", // 谓语(关系类型)
"object": "改良蒸汽机", // 宾语(规范化实体名)
"title": "瓦特与蒸汽机", // 事实标题
"description": "1769年瓦特获得了...", // 事实描述
"evidence": "James Watt patented...", // 原文证据片段
"confidence": 0.92, // 置信度
"tags": ["工业革命", "发明"], // 标签
"source": "industrial-revolution.pdf" // 来源文件
}
// 这些富信息让图谱不只是"节点+边",而是"每条边都带完整证据链"
// → 悬停边能看到"这个关系的原文依据是什么、置信度多高"
// → 比简单的三元组可信度和可用性高得多7、与同类方案对比:知识图谱三件套
方案 模型 自托管 特色 星标
-------------------------------------------------------------------------------
Graphify Claude/GPT 否(调API) tree-sitter+代码库 95k
ai-knowledge-graph 任意OpenAI兼容 半(需API) 轻量、文本专用 2.5k
Knowledge Graph Extractor Qwen3.6-35B 是(单卡) 完全自托管+富事实+Jina 0.2k三者的定位差异很明显:Graphify 是"代码库全景图谱"(重、强、靠 Claude);ai-knowledge-graph 是"轻量文本图谱"(简单、通用、靠 Ollama);Knowledge Graph Extractor 是"自托管富事实图谱"(隐私、可控、靠 Qwen + Jina)。如果你的核心诉求是"数据不出域 + 一卡就能跑 + 每条事实带证据",它是最对口的。
8、适用场景与局限
// 适合
隐私敏感场景 法律/医疗/金融/军工,数据不能出域
离线场景 无网络或网络受限的环境(内部网络部署)
成本敏感场景 一次性 L4 投入,无限次提取,不花 API 费
研究/教育 自己控制模型/量化/参数,可做实验对比
// 局限
需要 GPU 一张 L4 24GB(或等效),CPU 跑不了 35B 模型
星标少/新项目 214 Star,2026-05 创建,生态和社区仍在早期
单任务排队 单槽调度器,一次只跑一个任务(新任务会抢占旧的)
模型选择固定 默认绑 Qwen3.6-35B-A3B-MTP,换模型需改配置
代码解析弱 不像 Graphify 有 tree-sitter,代码文件走 LLM 提取9、总结
Knowledge Graph Extractor 是 Han Xiao(Jina AI 创始人)出品的自托管知识图谱生成器。核心特点是完全自托管——在单张 NVIDIA L4 上跑 Qwen3.6-35B-A3B-MTP(MoE 架构,3B 激活 + MTP 推测解码),把文档/URL/zip 转成富事实知识图谱。每条事实携带标题、描述、原文证据、置信度、标签和来源——不只是"三元组",而是"带证据链的知识单元"。
关键要点:
- 定位:自托管知识图谱生成器,单卡 L4 跑 Qwen3.6-35B-A3B-MTP,MIT 许可
- 作者:Han Xiao(Jina AI 创始人,bert-as-service 作者),背靠 Jina 生态
- 四步流水线:输入(URL/zip/文本)→ 原子事实提取 → 语义去重 → 交互式图谱
- 富事实:每条三元组带证据/置信度/标签/来源,比裸 SPO 可信度高得多
- 与 Graphify/ai-knowledge-graph 互补:自托管+隐私+富事实,三者各有定位
对于需要处理敏感文档、或想完全控制知识图谱生成流程的团队而言,Knowledge Graph Extractor 提供了一个"一卡一模型一服务"的最简自托管方案。Han Xiao 的工程质量(Jina Reader / bert-as-service 的口碑背书)也让它的代码值得信赖。在数据隐私越来越重要的 2026 年,"自托管 + 单卡 + 富事实"是一个稀缺且有价值的定位。
参考资料:
hanxiao/knowledge-graph-extractor(GitHub 仓库)