AutoSchemaKG
大模型自动从任意文本构建知识图谱,无需预定义Schema,配套9亿节点预训练知识图谱 ATLAS
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
大模型自动从任意文本构建知识图谱,无需预定义Schema,配套9亿节点预训练知识图谱 ATLAS
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在企业文档、学术论文、新闻报道的海量文本中,隐藏着无数相互关联的知识实体——人物、事件、概念、关系。传统的知识图谱构建,需要领域专家手工定义 Schema(本体结构),再由工程师编写抽取规则,这套流程往往需要数月甚至数年。香港科技大学(HKUST)知识计算实验室推出的 AutoSchemaKG,正是为解决这一痛点而生:让大语言模型自己学会" schema 归纳",无需人工预定义,即可从任意文本中自动构建高质量知识图谱。
该论文于 2025 年 5 月发表在 arXiv(arXiv:2505.23628),代码同步开源,由 Bai Jiaxin、Tsang Hong Ting、Huang Haoyu 等研究者开发维护。
AutoSchemaKG 的设计哲学是"让 AI 自己教自己建图谱"。整个框架分为两个核心阶段:
第一阶段:三元组抽取(Triple Extraction)
给定一段文本,系统调用 LLM(支持 OpenAI GPT、Azure OpenAI、Together AI、vLLM、SGLang、TensorRT-LLM 等多种后端),按照预设的 ATLAS_SCHEMA JSON Schema,以结构化方式输出文本中的实体和关系。三元组格式为「头实体 → 关系 → 尾实体」,覆盖实体(Entity)、事件(Event)、关系(Relation)三类节点类型。
技术细节上,atlas_rag/kg_construction/triple_extraction.py 实现了分片并行处理机制(Shard):将大规模数据集切分为 N 个分片,每个分片独立处理后再合并结果,非常适合处理 Wikipedia、Common Crawl 等数十亿级语料。TextChunker 类负责将长文本切分为重叠的短块(默认 512 tokens,overlap 128),避免跨块信息丢失。DatasetProcessor 支持多语言内容过滤,当前支持英文。
第二阶段:Schema 归纳(Schema Induction)
这是 AutoSchemaKG 区别于传统知识图谱抽取方案的关键创新。抽取出的三元组节点(实体/事件/关系名称)往往是具体而碎片化的,例如"2024年苹果公司发布了iPhone 16"中的"iPhone 16"。Schema 归纳阶段使用 LLM 对这些具体节点进行"概念化"(Conceptualization),将"iPhone 16"归纳为"智能手机",建立高层语义抽象。
具体实现见 atlas_rag/kg_construction/concept_generation.py:对于每个节点类型(Entity/Event/Relation),系统构造不同的 Prompt 模板(CONCEPT_INSTRUCTIONS),让 LLM 生成概念化描述,并将其存储为新节点与原节点的语义桥接边。这使得不同领域的数据可以在概念层实现跨域推理(Zero-shot Cross-domain Reasoning)。
AutoSchemaKG 的代码组织围绕 atlas_rag 核心包展开,采用清晰的模块化架构:
| 模块 | 职责 |
|---|---|
kg_construction/ | 三元组抽取 + Schema 归纳流水线 |
llm_generator/ | 多后端 LLM 统一调用接口(API / Transformers Pipeline / vLLM / SGLang / TensorRT-LLM) |
vectorstore/ | embedding 模型管理和向量索引构建(支持 FAISS) |
retriever/ | 知识图谱检索器(ToG / HippoRAG / SimpleRetriever 等多种策略) |
evaluation/ | 知识图谱质量评估、Factual Consistency、Benchmark 评测 |
LLM 统一调用接口(llm_generator/llm_generator.py)是架构亮点:它将不同推理后端(OpenAI API、Transformers 本地推理、vLLM、SGLang、TensorRT-LLM)封装为统一接口,开发者只需切换 backend 参数即可切换推理方式。内置 retry_decorator(tenacity)支持最多 5 次自动重试,单次最长等待 2 分钟,保证大规模抽取的稳定性。
ToG 检索器(Thinking-on-Graph,retriever/tog.py)实现了知识图谱上的多跳推理:给定自然语言问题,首先用 NER 提取问题中的实体,在图谱中锚定这些实体节点,然后迭代执行"扩展→剪枝→推理"三步循环,直到 LLM 判断当前路径足以回答问题。最大推理深度由 Dmax 参数控制,默认 3 跳。
项目团队使用 AutoSchemaKG 框架,从不同数据源构建了三套 ATLAS 系列知识图谱:
三套图谱合计超过 9 亿个节点、59 亿条边,且已导出为 Neo4j 可直接导入的 CSV 格式(HuggingFace 下载)。这使得开发者无需从零构建,即可直接使用大规模预训练知识图谱进行 RAG 实验。
在多跳问答基准(Multi-hop QA)上,ATLAS 系列图谱联合 ToG 检索器取得了 SOTA(State-of-the-Art)性能,展示了"自动化 Schema + 知识图谱推理"路线的实际价值。
安装方式:pip install atlas-rag,依赖 Python >= 3.9,核心依赖包括 OpenAI SDK、Transformers、NetworkX、Neo4j、FastAPI。
构建自己的知识图谱:项目提供了三个完整 Notebook 示例:
atlas_billion_kg_usage.ipynb:直接使用 ATLAS 预训练知识图谱atlas_full_pipeline.ipynb:从原始文本到最终知识图谱的全流程演示atlas_multihopqa.ipynb:多跳问答评测流程对于生产环境,example/example_scripts/neo4j_kg/ 提供了 Neo4j 数据库的 API 托管脚本,可以将知识图谱发布为 FastAPI 服务供外部调用;parallel_generation/ 则展示了多进程并行抽取的生产级脚本。
上手门槛:由于涉及 LLM API 调用、Neo4j 数据库部署、以及可选的 GPU 资源调配,对 AI 开发者有一定技术要求,非技术人员建议优先使用项目提供的预训练 ATLAS 图谱进行下游任务。
AutoSchemaKG 并非完美无缺。以下几点值得注意:
1. 依赖 LLM API 质量:三元组抽取和 Schema 归纳的效果直接受制于底层 LLM 的能力。GPT-4 级别模型效果显著优于 GPT-3.5,轻量模型(如 Llama-2-7B)则可能出现抽取不完整、Schema 归纳泛化差等问题。
2. 大规模部署成本:构建 billion 级别的知识图谱需要大量 LLM API 调用,Wikipedia 全量处理估算需要数千美元的 API 费用。团队提供的 ATLAS 图谱虽可免费使用,但针对特定垂直领域(如医疗、金融)重新构建需要额外投入。
3. Schema 归纳的幻觉风险:概念化过程中,LLM 可能将语义相近的实体错误归纳为不同概念,或将不同实体错误合并。目前项目通过随机采样邻居节点作为上下文([CONTEXT] token)来缓解,但仍未根本解决。
4. 无原生 Web UI:项目以 Python 库和 Notebook 为主,没有开箱即用的 Web 界面,对于非编程用户不够友好。
AutoSchemaKG 代表了知识图谱领域的一个趋势转变:从"专家定义 Schema → 工程师写规则"到"AI 自动归纳 Schema → 任意文本即建图谱"。这一路线与 RAG(检索增强生成)深度结合——ToG 等检索器证明了知识图谱可以在多跳推理场景中显著提升 LLM 的问答准确性。
随着 LLM 能力的持续提升和推理成本下降,"任意领域文本 → 高质量知识图谱"的自动化构建将成为可能。AutoSchemaKG 开源了核心代码和 9 亿节点预训练图谱,为这一方向的研究和应用提供了重要的基础设施。
项目信息:MIT 许可证 · Python · 761 Stars · 104 Forks · 持续活跃更新(最近更新:2026-06-17)