name: 知识图谱构建 description: 当从非结构化数据设计和构建知识图谱时使用。当用户提到实体提取、模式设计、LPG vs RDF、图数据模型、本体对齐、知识图谱构建,或为RAG构建知识图谱时调用。提供提取管道、模式模式和数据模型选择指导。
目录
知识图谱构建
是什么?
这个技能帮助您从非结构化或半结构化数据源设计和构建知识图谱。给定一个领域和数据语料库,它指导您进行数据模型选择、模式设计、实体/关系提取管道和分层架构构建。
回报:构建良好的知识图谱提供结构化、验证的事实,夯实LLM推理,减少幻觉,实现可解释的检索,并支持平面向量搜索无法处理的复杂多跳查询。
工作流程
复制此清单并逐步完成每个步骤:
知识图谱构建进度:
- [ ] 步骤1:识别数据源和领域范围
- [ ] 步骤2:选择图数据模型
- [ ] 步骤3:设计模式和本体
- [ ] 步骤4:配置提取管道
- [ ] 步骤5:定义分层架构
- [ ] 步骤6:验证和质量检查图谱
步骤1:识别数据源和领域范围
编目输入数据:文档类型(论文、临床记录、网页、日志)、数量、更新频率和语言。定义领域边界——哪些实体类型和关系类型对目标用例重要。确定知识图谱将服务于RAG检索、推理/推断、分析还是组合。此范围步骤防止过度提取并保持模式聚焦。
步骤2:选择图数据模型
使用架构选择指南选择底层数据模型。关键权衡:LPG用于灵活性和快速原型设计,RDF/OWL用于基于标准的互操作性和推断,超图用于复杂N元关系,时序图用于时间演化知识。考虑查询语言、工具成熟度和向量集成需求。详细模型比较,见数据模型参考。
步骤3:设计模式和本体
定义节点类型(实体类)、边类型(关系类)和属性模式。应用模式模式中的模式:用于简单领域的实体-关系、用于N元关系的事件具体化、用于多源集成的分层层级。决定受控词汇表、基数约束,以及是否采用或扩展现有本体(例如,Schema.org、UMLS、SNOMED)。方法学细节,见方法学参考。
步骤4:配置提取管道
构建填充图谱的管道。核心组件:带有多轮验证的LLM辅助实体提取、基于提示或依赖解析的关系提取、实体规范化(同义词合并、本体链接)和通过后处理验证的模式执行。在提示中使用少样本示例以提高提取一致性。包括第二轮LLM验证以捕获遗漏的实体。完整管道设计,见方法学参考。
步骤5:定义分层架构
将知识图谱结构化为层级以实现可维护性和信任。常见模式:第1层(实例数据)保存用户特定或案例特定的实体和关系;第2层(领域知识)保存来自文献或领域专家的策划事实;第3层(规范本体)保存正式模式和上层本体。添加出处和证据分层,以便每个事实追溯到其源文档、提取方法和置信度分数。时序子图捕获知识演化领域的时间索引状态。
步骤6:验证和质量检查图谱
在多个级别运行验证:模式一致性(所有节点和边是否匹配声明的类型?)、覆盖率(预期的实体类型是否填充?)、一致性(无矛盾边)和完整性(基于样本的人工审查)。使用第二个LLM作为验证器,对照源文档事实检查提取的三元组。计算图统计(节点度分布、连接组件、孤立节点)以识别提取差距。质量标准定义在质量评分标准中。
架构选择指南
按用例
| 模型 | 灵活性 | 标准化 | 推理 | 向量集成 | 查询语言 | 最适合 |
|---|---|---|---|---|---|---|
| LPG | 高 | 低 | 有限 | 原生(Neo4j) | Cypher, Gremlin | 快速开发、RAG管道 |
| RDF/OWL | 中 | 高 | 完全(OWL-DL) | 通过扩展 | SPARQL | 互操作性、本体重的领域 |
| 超图 | 高 | 低 | 有限 | 自定义 | 自定义API | N元关系、多实体事件 |
| 时序 | 中 | 低 | 基于时间 | 通过扩展 | 时序Cypher | 演化知识、情景记忆 |
按领域
| 领域 | 推荐模型 | 理由 |
|---|---|---|
| 生物医学/临床 | RDF/OWL | UMLS/SNOMED本体,需要推理 |
| 企业/RAG | LPG | 快速迭代,向量搜索集成 |
| 以事件为中心(新闻、日志) | 超图或时序 | 多参与者事件,时间演化 |
| 法律/合规 | RDF/OWL | 形式推理,出处链 |
| 科学文献 | LPG + 分层 | 灵活提取,分层信任 |
模式模式
实体-关系模式
最简单的模式。节点代表实体,边代表二元关系。节点上的属性保存属性;边上的属性保存关系元数据(置信度、来源、时间戳)。
(:Person {name, role}) -[:WORKS_AT {since}]-> (:Organization {name, type})
(:Drug {name, class}) -[:TREATS {efficacy}]-> (:Disease {name, icd_code})
最适合:主要二元关系和中等复杂度的领域。
事件具体化模式
将N元关系和复杂事件建模为一级节点。一个事件节点通过类型化角色边连接到所有参与者。这避免了将N元关系强制为二元边的信息损失。
(:ClinicalTrial {id, phase, start_date})
-[:HAS_DRUG]-> (:Drug {name})
-[:HAS_CONDITION]-> (:Disease {name})
-[:HAS_OUTCOME]-> (:Outcome {measure, value})
-[:CONDUCTED_BY]-> (:Organization {name})
最适合:多参与者事件、临床数据、新闻事件、金融交易。
分层层级模式
将图分离为信任分层的层级,可以独立或一起查询。
第3层(规范本体):正式类层次结构、关系定义、约束
第2层(领域知识):来自文献的策划事实,专家验证
第1层(实例数据):从用户文档提取,案例特定,置信度较低
跨层边将实例链接到领域概念,领域概念链接到本体类。每条边上的出处元数据记录:源文档、提取方法、置信度分数和时间戳。
最适合:多源集成、带有信任评分的RAG、企业知识管理。
输出模板
知识图谱构建规范
============================================
领域:[目标领域和范围]
用例:[RAG / 推理 / 分析 / 混合]
数据源:[输入数据类型和数量列表]
数据模型:[LPG / RDF / 超图 / 时序]
查询语言:[Cypher / SPARQL / Gremlin / 自定义]
存储后端:[Neo4j / Amazon Neptune / Virtuoso / 等]
模式定义:
节点类型:
1. [实体类型] - [描述]
属性:[带类型的列表]
2. [实体类型] - [描述]
属性:[带类型的列表]
3. [继续每个节点类型...]
边类型:
1. [关系类型] (源 -> 目标) - [描述]
属性:[带类型的列表]
2. [继续每个边类型...]
约束:
- [基数、唯一性、必需属性]
提取管道:
1. 实体提取
- 方法:[LLM辅助 / NER / 混合]
- 提示模板:[摘要或参考]
- 验证:[多轮 / 第二LLM / 手动样本]
2. 关系提取
- 方法:[基于提示 / 依赖解析 / 混合]
- 少样本示例:[数量和来源]
3. 规范化
- 去重:[方法]
- 本体链接:[目标本体]
- 同义词解析:[方法]
分层架构:
第1层(实例):[实例级数据描述]
第2层(领域):[策划领域知识描述]
第3层(本体):[正式模式描述]
出处:[如何跟踪来源/置信度/时间戳]
验证计划:
- 模式一致性:[自动化检查]
- 覆盖率:[预期实体/关系数量]
- 一致性:[矛盾检测方法]
- 人工审查:[抽样策略]
估计规模:[节点数量、边数量、每个节点的属性]
关键依赖:[库、API、本体]
下一步:
- 在样本数据上实现提取管道
- 填充图谱并运行验证套件
- 基于提取结果迭代模式
- 与下游应用程序集成(RAG、推理等)