知识图谱基础
课程简介
节点、边、属性的概念,知识图谱建模与存储。
知识图谱基础:节点、边与属性
一、什么是知识图谱?
知识图谱(Knowledge Graph)是一种用图结构来组织和表示知识的数据模型。它的核心思想是:世界上的事物都可以被表示为「实体」以及实体之间的「关系」。这种表达方式最接近人类的认知方式——当我们理解一个新概念时,就是在建立它与其他已知概念的关联。
一个知识图谱由三个基本元素构成:
- 节点(Node):代表现实世界中的实体,如人、公司、地点、产品
- 边(Edge/Relationship):代表实体之间的关系,如「任职于」、「位于」、「生产」
- 属性(Property):描述实体或关系的特征,如人的出生日期、公司的成立年份
这三个元素构成了知识图谱最基本的表达单元——三元组(Triple):(头实体, 关系, 尾实体)。
二、三元组结构详解
2.1 基本三元组
三元组是知识图谱的基本信息单元。以「蒂姆·库克是苹果公司的 CEO」为例:
(蒂姆·库克, 担任CEO, 苹果公司)
其中:
- 头实体(Subject):蒂姆·库克
- 关系(Predicate):担任CEO
- 尾实体(Object):苹果公司
这个三元组表达了一个简单的事实。多个三元组组合起来,就构成了一个知识网络:
(蒂姆·库克, 担任CEO, 苹果公司)
(苹果公司, 总部位于, 库比蒂诺)
(苹果公司, 成立于, 1976年)
(蒂姆·库克, 出生于, 1960年)
(苹果公司, 生产, iPhone)
(iPhone, 属于产品线, 智能手机)
2.2 属性与属性值
有些信息不适合用实体-关系-实体的三元组表示,比如「苹果公司成立于 1976 年」。这里的「1976 年」是一个具体的数值而非另一个实体。知识图谱使用「属性-属性值」对来表示这类信息。
[苹果公司] 成立年份 = 1976
[苹果公司] 员工数量 = 150000
[苹果公司] 市值 = 2.8万亿美元
2.3 带属性的关系
有些关系本身也有属性。比如「某人担任某公司的 CEO 职位」——这个关系有生效日期和到期日期。知识图谱支持在边上附加属性:
(蒂姆·库克, 担任CEO, 苹果公司)
└── 生效日期: 2011-08-24
└── 状态: 在职
三、图数据库 vs 关系型数据库
3.1 为什么需要专用图数据库?
在关系型数据库中,多跳关系查询需要多次 JOIN 操作。例如查询「三星手机使用的芯片由哪家公司设计」:
关系型数据库查询:
SELECT c.company_name
FROM products p
JOIN uses_component uc ON p.product_id = uc.product_id
JOIN components co ON uc.component_id = co.component_id
JOIN designed_by db ON co.component_id = db.component_id
JOIN companies c ON db.company_id = c.company_id
WHERE p.product_name = 'Galaxy S24';
这个查询涉及 4 次 JOIN,随着查询深度增加,JOIN 次数线性增长。
图数据库查询(Cypher):
MATCH (p:Product {name: 'Galaxy S24'})-[:USES]->(c:Component)<-[:DESIGNED_BY]-(com:Company)
RETURN com.name
3.2 图数据库的核心优势
- 关系遍历效率高:图数据库的邻接表结构让从任意节点遍历关系的时间复杂度为 O(1),不受数据规模影响
- 多跳查询自然:图数据库设计之初就为多跳查询优化,查询语法直观表达关系路径
- 灵活的模式:不需要预定义所有关系类型,可以动态添加新关系
- 图形可视化:查询结果天然可以用图结构展示,直观易理解
四、本体建模
4.1 什么是本体?
本体(Ontology)是知识图谱的模式层(Schema),定义了知识图谱中实体类型、关系类型和属性的规范。本体的质量直接决定了知识图谱的可用性和扩展性。
4.2 自顶向下建模
先定义本体,再填充数据。适合领域知识明确、结构稳定的场景。
// 定义节点类型和属性
CREATE CONSTRAINT FOR (c:Company) REQUIRE c.name IS UNIQUE;
CREATE CONSTRAINT FOR (p:Person) REQUIRE p.id IS UNIQUE;
// 创建索引
CREATE INDEX FOR (c:Company) ON (c.industry);
4.3 自底向上建模
先从数据中提取实体和关系,再归纳出本体。适合探索性分析或数据质量参差不齐的场景。
4.4 本体的最佳实践
- 命名规范:实体类型用 PascalCase(如 Company, Product),关系用大写蛇形(如 CEO_OF, PRODUCED_BY)
- 唯一标识:每个节点应有唯一的标识符,如 UUID 或业务 ID
- 属性选择:属性应该是原子性的不可再分的数据
- 关系方向:关系应明确方向,通常从主动方指向被动方
- 避免过度建模:不要为每个细节都创建关系,保持图谱的简洁性
五、知识图谱的构建流程
5.1 数据采集
- 结构化数据:数据库、CSV 文件、API
- 半结构化数据:HTML 页面、XML 文档
- 非结构化数据:纯文本、PDF 文档
5.2 实体识别
- 命名实体识别(NER)
- 实体链接(Entity Linking)
- 共指消解(Coreference Resolution)
5.3 关系抽取
- 基于规则的关系抽取
- 基于机器学习的关系分类
- 基于 LLM 的关系抽取(自然语言理解)
5.4 图存储
- 选择合适的图数据库(Neo4j、ArangoDB、Amazon Neptune)
- 设计存储模型
- 导入数据
5.5 图谱维护
- 定期更新
- 质量评估(完整性、准确性、一致性)
- 版本管理
六、总结
知识图谱通过节点、边和属性构建了机器可理解的知识网络。三元组是基本表达单元,图数据库提供了高效的存储和查询能力,本体建模保证了数据的一致性和可扩展性。理解这些基础知识是后续学习知识图谱与大语言模型融合、图查询语言和高级 RAG 应用的前提。
七、知识图谱的存储与查询
7.1 RDF 与属性图
知识图谱有两种主流的数据模型:
RDF(Resource Description Framework):W3C 标准,以三元组(主体-谓词-客体)为基础。所有知识都表示为“资源-属性-值”的形式。RDF 的优势是标准化和互操作性,适合开放数据和跨系统集成。
属性图(Property Graph):Neo4j 等图数据库使用的模型。节点和边都可以带有属性(键值对)。属性图更灵活、查询更高效,适合应用开发。
7.2 图数据库的核心操作
图数据库支持的核心操作包括:
- 节点操作:创建、读取、更新、删除节点
- 边操作:创建、更新、删除关系
- 遍历操作:从一个节点出发沿关系路径访问邻居节点
- 模式匹配:匹配符合特定图模式的子图
7.3 常见图数据库对比
| 特性 | Neo4j | Amazon Neptune | ArangoDB | JanusGraph |
|---|---|---|---|---|
| 模型 | 属性图 | RDF + 属性图 | 多模型 | 属性图 |
| 查询语言 | Cypher | SPARQL + Gremlin | AQL | Gremlin |
| 开源 | 社区版免费 | 商业 | 开源 | 开源 |
| 分布式 | 支持 | 托管 | 支持 | 原生支持 |
八、总结
知识图谱用节点、边和属性构建了认识世界的结构化方式。
关键要点回顾:
- 三元组(头实体, 关系, 尾实体)是知识图谱的知识原子
- 节点代表实体,边代表关系,属性描述特征
- 图数据库的邻接表结构在多跳查询上效率远超关系型数据库
- 本体设计是知识图谱质量的基石
- 自顶向下和自底向上是两种互补的建模方式
掌握了这些基础,下一节课我们将探讨知识图谱和大语言模型的深度结合。
七、知识图谱的存储与查询
7.1 RDF 与属性图
知识图谱有两种主流的数据模型:
RDF(Resource Description Framework):W3C 标准,以三元组(主体-谓词-客体)为基础。所有知识都表示为“资源-属性-值”的形式。RDF 的优势是标准化和互操作性,适合开放数据和跨系统集成。
属性图(Property Graph):Neo4j 等图数据库使用的模型。节点和边都可以带有属性(键值对)。属性图更灵活、查询更高效,适合应用开发。
7.2 图数据库的核心操作
图数据库支持的核心操作包括:
- 节点操作:创建、读取、更新、删除节点
- 边操作:创建、更新、删除关系
- 遍历操作:从一个节点出发沿关系路径访问邻居节点
- 模式匹配:匹配符合特定图模式的子图
7.3 常见图数据库对比
| 特性 | Neo4j | Amazon Neptune | ArangoDB | JanusGraph |
|---|---|---|---|---|
| 模型 | 属性图 | RDF + 属性图 | 多模型 | 属性图 |
| 查询语言 | Cypher | SPARQL + Gremlin | AQL | Gremlin |
| 开源 | 社区版免费 | 商业 | 开源 | 开源 |
| 分布式 | 支持 | 托管 | 支持 | 原生支持 |
八、总结
知识图谱用节点、边和属性构建了认识世界的结构化方式。
关键要点回顾:
- 三元组(头实体, 关系, 尾实体)是知识图谱的知识原子
- 节点代表实体,边代表关系,属性描述特征
- 图数据库的邻接表结构在多跳查询上效率远超关系型数据库
- 本体设计是知识图谱质量的基石
- 自顶向下和自底向上是两种互补的建模方式
掌握了这些基础,下一节课我们将探讨知识图谱和大语言模型的深度结合。
【深入理解】再来讲一个知识图谱设计中的关键概念:图的稠密性与稀疏性。在实际项目中,很多初学者会犯的一个错误是“过度连接”。他们试图在任意两个相关的节点之间都建立直接关系,结果导致图变得非常稠密,查询性能急剧下降。正确的做法是:只连接那些在业务逻辑上有直接语义关联的实体,通过传递性推理来获得间接关系。
还有一个重要的实践技巧是“分层建模”。将知识图谱分为概念层和实例层。概念层定义本体(模式),实例层存放具体数据。这种分离让系统既能理解和推理抽象概念,又能处理具体实例。例如在金融 KG 中,概念层定义“公司”这个实体类型及其属性(名称、股票代码、行业),实例层则存放“特斯拉”、“苹果”等具体公司的数据。
最后,别忘了图数据的质量衡量标准:完整性(是否缺失关键实体和关系)、一致性(是否有矛盾的三元组)、准确性(三元组是否真实正确)、时效性(知识是否过时)。这四个维度是评估知识图谱质量的核心框架。
七、知识图谱的存储与查询
7.1 RDF 与属性图
知识图谱有两种主流的数据模型:
RDF(Resource Description Framework):W3C 标准,以三元组(主体-谓词-客体)为基础。所有知识都表示为“资源-属性-值”的形式。RDF 的优势是标准化和互操作性,适合开放数据和跨系统集成。
属性图(Property Graph):Neo4j 等图数据库使用的模型。节点和边都可以带有属性(键值对)。属性图更灵活、查询更高效,适合应用开发。
7.2 图数据库的核心操作
图数据库支持的核心操作包括:
- 节点操作:创建、读取、更新、删除节点
- 边操作:创建、更新、删除关系
- 遍历操作:从一个节点出发沿关系路径访问邻居节点
- 模式匹配:匹配符合特定图模式的子图
7.3 常见图数据库对比
| 特性 | Neo4j | Amazon Neptune | ArangoDB | JanusGraph |
|---|---|---|---|---|
| 模型 | 属性图 | RDF + 属性图 | 多模型 | 属性图 |
| 查询语言 | Cypher | SPARQL + Gremlin | AQL | Gremlin |
| 开源 | 社区版免费 | 商业 | 开源 | 开源 |
| 分布式 | 支持 | 托管 | 支持 | 原生支持 |
八、总结
知识图谱用节点、边和属性构建了认识世界的结构化方式。
关键要点回顾:
- 三元组(头实体, 关系, 尾实体)是知识图谱的知识原子
- 节点代表实体,边代表关系,属性描述特征
- 图数据库的邻接表结构在多跳查询上效率远超关系型数据库
- 本体设计是知识图谱质量的基石
- 自顶向下和自底向上是两种互补的建模方式
掌握了这些基础,下一节课我们将探讨知识图谱和大语言模型的深度结合。
【深入理解】再来讲一个知识图谱设计中的关键概念:图的稠密性与稀疏性。在实际项目中,很多初学者会犯的一个错误是“过度连接”。他们试图在任意两个相关的节点之间都建立直接关系,结果导致图变得非常稠密,查询性能急剧下降。正确的做法是:只连接那些在业务逻辑上有直接语义关联的实体,通过传递性推理来获得间接关系。
还有一个重要的实践技巧是“分层建模”。将知识图谱分为概念层和实例层。概念层定义本体(模式),实例层存放具体数据。这种分离让系统既能理解和推理抽象概念,又能处理具体实例。例如在金融 KG 中,概念层定义“公司”这个实体类型及其属性(名称、股票代码、行业),实例层则存放“特斯拉”、“苹果”等具体公司的数据。
最后,别忘了图数据的质量衡量标准:完整性(是否缺失关键实体和关系)、一致性(是否有矛盾的三元组)、准确性(三元组是否真实正确)、时效性(知识是否过时)。这四个维度是评估知识图谱质量的核心框架。
延伸阅读
- 📺 B 站播放列表:Knowledge Graphs for RAG — 知识图谱增强检索
- 📚 更多学习资源,请访问 deeplearning.ai 官网