第 1 课
← 返回系列列表

知识图谱基础

Knowledge Graphs for RAG — 知识图谱增强检索

节点、边、属性的概念,知识图谱建模与存储。

知识图谱基础

课程简介

节点、边、属性的概念,知识图谱建模与存储。

🎬 本课程视频:Knowledge Graphs for RAG — 知识图谱增强检索


知识图谱基础:节点、边与属性

一、什么是知识图谱?

知识图谱(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 图数据库的核心优势

  1. 关系遍历效率高:图数据库的邻接表结构让从任意节点遍历关系的时间复杂度为 O(1),不受数据规模影响
  2. 多跳查询自然:图数据库设计之初就为多跳查询优化,查询语法直观表达关系路径
  3. 灵活的模式:不需要预定义所有关系类型,可以动态添加新关系
  4. 图形可视化:查询结果天然可以用图结构展示,直观易理解

四、本体建模

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 本体的最佳实践

  1. 命名规范:实体类型用 PascalCase(如 Company, Product),关系用大写蛇形(如 CEO_OF, PRODUCED_BY)
  2. 唯一标识:每个节点应有唯一的标识符,如 UUID 或业务 ID
  3. 属性选择:属性应该是原子性的不可再分的数据
  4. 关系方向:关系应明确方向,通常从主动方指向被动方
  5. 避免过度建模:不要为每个细节都创建关系,保持图谱的简洁性

五、知识图谱的构建流程

5.1 数据采集

5.2 实体识别

5.3 关系抽取

5.4 图存储

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 中,概念层定义“公司”这个实体类型及其属性(名称、股票代码、行业),实例层则存放“特斯拉”、“苹果”等具体公司的数据。

最后,别忘了图数据的质量衡量标准:完整性(是否缺失关键实体和关系)、一致性(是否有矛盾的三元组)、准确性(三元组是否真实正确)、时效性(知识是否过时)。这四个维度是评估知识图谱质量的核心框架。

延伸阅读

知识图谱与大语言模型 →