AI入门——什么是知识图谱?

AI入门------什么是知识图谱?

1. 什么是知识图谱

知识图谱(Knowledge Graph)是一种用图结构表达现实世界知识 的方法。它把客观世界中的对象抽象为实体(Entity) ,把实体之间的联系抽象为关系(Relation),并通过**属性(Property)**补充实体或关系的细节信息。

如果用一句话概括,知识图谱就是:

用节点和边来组织知识,让机器不仅能"存数据",还能"理解对象之间的关联"。

与传统二维表相比,知识图谱更擅长回答下面这类问题:

  • 某个人与哪些机构、技术领域有关联?
  • 两个对象之间是如何间接连接起来的?
  • 某项技术背后有哪些研究者、组织和应用场景?

这也是知识图谱在搜索、推荐、风控、问答系统、企业知识管理等场景中非常有价值的原因。


2. 知识图谱的基础概念

2.1 实体

实体是现实世界中可以被唯一识别的对象,例如:

  • 人物:Andrew Ng
  • 组织:DeepLearning.AI
  • 技术:深度学习
  • 课程:Machine Learning

在图数据库中,实体通常表现为节点(Node)

2.2 关系

关系表示实体之间的联系,例如:

  • Andrew Ng WORKS_AT DeepLearning.AI
  • Andrew Ng RESEARCHES 机器学习
  • DeepLearning.AI FOCUSES_ON 深度学习

在图数据库中,关系通常表现为边(Relationship)

2.3 属性

属性用于描述实体或关系的附加信息,例如:

  • 人物节点属性:nametitle
  • 组织节点属性:nametype
  • 技术节点属性:namecategory

例如:

text 复制代码
(:Person {name: "Andrew Ng", title: "AI Educator"})

2.4 三元组

知识图谱常用三元组表示知识:

text 复制代码
(头实体, 关系, 尾实体)

例如:

text 复制代码
(Andrew Ng, RESEARCHES, 机器学习)

三元组是知识图谱最基础的表达形式。大量三元组连接起来,就形成了一个完整的知识网络。

2.5 本体与模式

如果把知识图谱理解为数据库,那么本体(Ontology)模式(Schema) 就相当于建模规则,用来规定:

  • 允许有哪些实体类型
  • 允许有哪些关系类型
  • 不同类型之间如何连接

例如,在一个 AI 领域的小型知识图谱中,可以定义:

  • Person
  • Organization
  • Technology
  • Course

以及关系:

  • WORKS_AT
  • RESEARCHES
  • FOCUSES_ON
  • TEACHES

良好的模式设计可以让图谱更规范,也更容易查询和扩展。


3. 知识图谱与传统关系数据库的区别

传统关系数据库(如 MySQL、PostgreSQL)擅长处理结构稳定、事务明确的数据,例如订单、账户、库存等。它们用表、主键、外键来表示数据之间的关系。

而知识图谱更适合处理下面这些特点明显的场景:

  • 关系复杂,且层级深
  • 数据之间存在大量多跳关联
  • 经常需要探索"路径"和"网络"
  • 实体和关系类型可能不断扩展

例如,在关系型数据库里,要回答"谁与某项技术有关,并且这些人所在机构也关注这项技术"这样的问题,通常需要多表连接;而在图数据库中,这类问题天然就是沿着图上的边做遍历。

简而言之:

  • 关系数据库更适合面向事务与结构化表存储
  • 知识图谱/图数据库更适合面向关联分析与语义连接

4. 知识图谱的常见构建流程

一个完整的知识图谱项目通常包括以下几个环节:

4.1 知识建模

先确定领域边界,定义实体、关系和属性。例如在教育领域,可以建模为:

  • 教师
  • 学生
  • 课程
  • 学校

以及:

  • TEACHES
  • STUDIES
  • BELONGS_TO

4.2 数据采集

数据可以来自:

  • 业务数据库
  • Excel/CSV 文件
  • 网页
  • API
  • 文档与论文
  • 日志或知识库系统

4.3 信息抽取

对于非结构化文本,需要借助自然语言处理技术抽取:

  • 实体识别(NER)
  • 关系抽取(RE)
  • 事件抽取

这一步是机器学习和 AI 在知识图谱中最核心的应用点之一。

4.4 知识融合

不同来源的数据可能存在重复或歧义,例如:

  • OpenAI Inc.
  • OpenAI

需要通过实体对齐、去重、消歧等方法,把它们统一为同一个实体。

4.5 存储与查询

构建好的知识可以存入:

  • RDF 三元组库
  • 图数据库,例如 Neo4j

随后通过查询语言进行检索、统计、路径分析和可视化。

4.6 推理与应用

在图谱基础上,可以继续做:

  • 规则推理
  • 相似实体发现
  • 问答系统
  • 推荐系统
  • 风险传播分析

5. 常见应用场景

知识图谱的应用非常广泛,常见场景包括:

  • 搜索引擎:增强搜索结果的语义理解
  • 智能问答:将自然语言问题映射为图查询
  • 推荐系统:根据用户、物品、属性和行为构建关联网络
  • 金融风控:识别企业、账户、人员之间的风险关联
  • 企业知识管理:统一组织内部系统、文档和流程知识
  • 医疗与科研:组织疾病、药物、症状、论文、实验数据之间的关联

6. 为什么选择 Neo4j

Neo4j 是目前最常见的图数据库之一,采用的是属性图(Property Graph)模型,它非常适合做中小型知识图谱原型、教学演示和业务级图关系分析。

它的主要特点包括:

  • 图模型直观,容易理解
  • 支持节点、关系和属性
  • 查询语言 Cypher 可读性强
  • 适合做关系遍历、路径发现和可视化展示
  • 社区资料丰富,入门成本相对较低

Neo4j 中:

  • 实体通常是节点
  • 节点可以带标签,例如 :Person
  • 关系有类型,例如 :WORKS_AT
  • 节点和关系都可以带属性

例如:

text 复制代码
(:Person {name: "Andrew Ng"})-[:RESEARCHES]->(:Technology {name: "机器学习"})

7. 使用 Neo4j 组织一个简单知识图谱

下面以一个 AI 领域知识图谱 为例,演示如何用 Neo4j 组织数据。

7.1 场景设计

我们希望描述以下知识:

  • 哪些人物在研究哪些技术
  • 哪些人物在哪些组织工作
  • 哪些组织重点关注哪些技术
  • 哪些人物教授哪些课程

7.2 实体设计

我们定义 4 类节点:

  • Person
  • Organization
  • Technology
  • Course

其中可使用的关键属性如下:

节点类型 关键属性
Person name, title
Organization name, type
Technology name, category
Course name, level

7.3 关系设计

我们定义 4 类关系:

关系类型 含义
WORKS_AT 人物就职于某组织
RESEARCHES 人物研究某技术
FOCUSES_ON 组织重点关注某技术
TEACHES 人物教授某课程

7.4 图谱结构示意

可以把这个图谱理解为下面这样的关系网络:

text 复制代码
(Person)-[:WORKS_AT]->(Organization)
(Person)-[:RESEARCHES]->(Technology)
(Organization)-[:FOCUSES_ON]->(Technology)
(Person)-[:TEACHES]->(Course)

8. Neo4j 实操示例

8.1 环境准备

你可以通过以下任一方式启动 Neo4j

  1. 安装 Neo4j Desktop
  2. 使用 Docker 启动 Neo4j
  3. 使用远程 Neo4j AuraDB

如果本地使用 Docker,一个典型命令如下:

bash 复制代码
docker run ^
  --name neo4j-kg ^
  -p 7474:7474 -p 7687:7687 ^
  -e NEO4J_AUTH=neo4j/password123 ^
  -d neo4j:latest

启动后,可通过浏览器访问:

  • http://localhost:7474

8.2 创建约束

为了避免重复节点,建议先为不同标签创建唯一性约束:

cypher 复制代码
CREATE CONSTRAINT person_name_unique IF NOT EXISTS
FOR (p:Person) REQUIRE p.name IS UNIQUE;

CREATE CONSTRAINT org_name_unique IF NOT EXISTS
FOR (o:Organization) REQUIRE o.name IS UNIQUE;

CREATE CONSTRAINT tech_name_unique IF NOT EXISTS
FOR (t:Technology) REQUIRE t.name IS UNIQUE;

CREATE CONSTRAINT course_name_unique IF NOT EXISTS
FOR (c:Course) REQUIRE c.name IS UNIQUE;

8.3 写入示例数据

下面的 Cypher 脚本可以直接创建一个简单的 AI 知识图谱:

cypher 复制代码
MERGE (andrew:Person {name: "Andrew Ng"})
SET andrew.title = "AI Educator"

MERGE (hinton:Person {name: "Geoffrey Hinton"})
SET hinton.title = "Deep Learning Pioneer"

MERGE (lecun:Person {name: "Yann LeCun"})
SET lecun.title = "Chief AI Scientist"

MERGE (dla:Organization {name: "DeepLearning.AI"})
SET dla.type = "Education Company"

MERGE (utoronto:Organization {name: "University of Toronto"})
SET utoronto.type = "University"

MERGE (meta:Organization {name: "Meta"})
SET meta.type = "Technology Company"

MERGE (ml:Technology {name: "机器学习"})
SET ml.category = "AI Core"

MERGE (dl:Technology {name: "深度学习"})
SET dl.category = "AI Core"

MERGE (cv:Technology {name: "计算机视觉"})
SET cv.category = "AI Application"

MERGE (course1:Course {name: "Machine Learning"})
SET course1.level = "Beginner"

MERGE (course2:Course {name: "Deep Learning Specialization"})
SET course2.level = "Intermediate"

MERGE (andrew)-[:WORKS_AT]->(dla)
MERGE (hinton)-[:WORKS_AT]->(utoronto)
MERGE (lecun)-[:WORKS_AT]->(meta)

MERGE (andrew)-[:RESEARCHES]->(ml)
MERGE (andrew)-[:RESEARCHES]->(dl)
MERGE (hinton)-[:RESEARCHES]->(dl)
MERGE (lecun)-[:RESEARCHES]->(dl)
MERGE (lecun)-[:RESEARCHES]->(cv)

MERGE (dla)-[:FOCUSES_ON]->(ml)
MERGE (dla)-[:FOCUSES_ON]->(dl)
MERGE (utoronto)-[:FOCUSES_ON]->(dl)
MERGE (meta)-[:FOCUSES_ON]->(dl)
MERGE (meta)-[:FOCUSES_ON]->(cv)

MERGE (andrew)-[:TEACHES]->(course1)
MERGE (andrew)-[:TEACHES]->(course2);

执行后,你将得到一个包含人物、组织、技术和课程关系的小型知识图谱。


8.4 基本查询示例

查询 1:查看所有人物节点
cypher 复制代码
MATCH (p:Person)
RETURN p;
查询 2:查找研究"深度学习"的人物
cypher 复制代码
MATCH (p:Person)-[:RESEARCHES]->(t:Technology {name: "深度学习"})
RETURN p.name AS person, p.title AS title;
查询 3:查找某个人所在组织及研究方向
cypher 复制代码
MATCH (p:Person {name: "Yann LeCun"})-[:WORKS_AT]->(o:Organization)
MATCH (p)-[:RESEARCHES]->(t:Technology)
RETURN p.name AS person, o.name AS organization, collect(t.name) AS technologies;
查询 4:查找关注"计算机视觉"的组织
cypher 复制代码
MATCH (o:Organization)-[:FOCUSES_ON]->(t:Technology {name: "计算机视觉"})
RETURN o.name AS organization;
查询 5:发现"人物 - 组织 - 技术"的关联路径
cypher 复制代码
MATCH (p:Person)-[:WORKS_AT]->(o:Organization)-[:FOCUSES_ON]->(t:Technology)
RETURN p.name AS person, o.name AS organization, t.name AS technology;

这类查询在关系数据库中往往需要多表连接,而在图数据库中表达非常自然。


9. 结果解读

通过上面的图谱,我们可以快速回答很多问题,例如:

  • Andrew Ng 研究哪些技术?
  • 哪些组织在关注 深度学习
  • 哪些人既与某组织相关,又与某技术相关?
  • 哪门课程与哪个专家有关?

这说明知识图谱的价值不只在"存储数据",而在于把知识组织成一个可遍历、可分析、可扩展的网络。


10. 从简单案例走向真实项目

如果要把这个示例升级为一个更贴近实际业务的知识图谱系统,可以继续扩展以下能力:

10.1 扩展实体类型

例如新增:

  • Paper
  • Dataset
  • Model
  • Company
  • Product

10.2 扩展关系类型

例如新增:

  • AUTHORED
  • USES
  • CITES
  • DEPLOYS
  • COLLABORATES_WITH

10.3 接入真实数据源

例如从以下来源自动构建图谱:

  • CSV 文件导入
  • 爬虫抓取网页数据
  • 调用开放 API
  • 从文档中做实体识别和关系抽取

10.4 引入 AI 能力

在真实项目中,AI 往往会参与知识图谱的多个阶段:

  • 用大语言模型做实体抽取和关系抽取
  • 用向量检索辅助实体对齐
  • 用图谱 + 大模型实现增强问答
  • 利用图算法做社区发现、路径推荐和相似节点分析

因此,知识图谱并不是和 AI 对立的技术,相反,它经常作为 AI 系统中非常关键的结构化知识底座


11. 总结

知识图谱的核心思想是把现实世界中的对象、关系和属性组织为一个图结构,以支持更强的语义关联、路径分析和知识发现。

从工程实现角度看:

  • 知识图谱解决的是"知识如何组织"
  • Neo4j解决的是"图结构如何高效存储与查询"
  • AI / NLP / 大模型解决的是"知识如何从数据中自动抽取和增强"

如果把三者结合起来,就可以构建出面向搜索、推荐、问答、风控、科研管理等场景的智能系统。

对于初学者来说,一个很好的起点是:

  1. 先理解实体、关系、属性和三元组
  2. 再用 Neo4j 手工构建一个小型图谱
  3. 最后逐步接入真实业务数据和自动抽取能力

这样可以从概念、建模、存储到查询,完整走通知识图谱的基础链路。

相关推荐
Xpower 171 小时前
Clawith:开启多智能体协作的新纪元
人工智能·python·语言模型·自动化
TsingtaoAI1 小时前
面向工业互操作性与优化的AI驱动数字孪生语义与模块化编排
人工智能·数字孪生
深小乐2 小时前
AI 周刊【2026.03.16-03.22】:从算力到 Token,AI 竞争进入全栈时代
人工智能
code 小楊2 小时前
深度解析RAG系统与AI Agent:原理、架构及协同落地
人工智能·架构
IT_陈寒2 小时前
JavaScript 闭包陷阱:90%开发者踩过的5个坑,你中招了吗?
前端·人工智能·后端
lucky_syq2 小时前
Windows电脑部署OpenClaw保姆级教程(2026最新版)
人工智能·windows·开源·电脑·openclaw
碳基硅坊2 小时前
OpenClaw接入企业微信
人工智能·企业微信·openclaw
༺ཌༀ傲世万物ༀད༻2 小时前
如何运用好DeepSeek为自己服务:智能增强的范式革命 || 3.1 脑机接口协同训练
人工智能·deepseek
im_AMBER2 小时前
万字长文:编辑器集成Vercel AI SDK
前端·人工智能·react.js·前端框架·编辑器