1. 课程导论与图谱基础

1.1 什么是知识图谱

知识图谱(Knowledge Graph)是一种用图结构来建模实体及其之间关系的技术体系。它将现实世界中的事物抽象为节点(Node),将事物之间的关联抽象为边(Edge),并通过属性(Property)来丰富节点的描述信息。这种“实体-关系-实体”的三元组结构,使得机器能够像人类一样理解事物之间的语义联系。

核心公式:知识图谱 = (实体 + 关系 + 属性) × 语义网络。与传统关系型数据库不同,图结构天然适合处理多跳关联和深度推理。
对比维度 关系型数据库 知识图谱
数据模型 表 + 行 + 外键 节点 + 边 + 属性
关联查询 多表 JOIN,深度 > 3 性能骤降 图遍历,深度 10+ 仍保持毫秒级
模式灵活性 Schema 固定,改表代价高 Schema-Less 或动态 Schema
典型场景 事务处理、报表统计 关联分析、反欺诈、推荐

一个典型的电商知识图谱包含:用户、商品、订单、店铺等实体,以及“购买”、“收藏”、“属于”、“评价”等关系。通过图谱,我们可以快速回答“用户 A 购买过的商品中,哪些与用户 B 收藏的商品属于同一店铺?”这类复杂关联问题。

1.2 实时图谱的应用场景

传统知识图谱多为离线构建,数据 T+1 更新。但在风控、推荐、社交等场景中,时效性是核心诉求——毫秒级的延迟可能意味着欺诈交易已经完成,或者推荐内容已经过时。实时图谱正是在这种背景下应运而生。

场景一:实时风控

  • 团伙欺诈检测:新注册用户与已知黑名单设备共享同一 IP,且该 IP 在 5 分钟内关联了 3 个以上新账户——实时图谱在毫秒级完成多跳关联,触发拦截。
  • 交易链路分析:一笔转账从 A → B → C → D,实时检测中间节点是否涉及高风险账户。
  • 异常模式识别:同一收货地址在 1 小时内关联超过 10 个不同支付账号,实时图谱标记为“聚合地址异常”。

场景二:实时推荐

  • 协同过滤增强:用户点击商品 A 后,实时图谱在 200ms 内找出“与 A 属于同一类目且被相似用户高频购买”的商品 B。
  • 社交关系推荐:用户关注了 KOL X,实时图谱立即扩展 X 的互动商品列表,生成个性化推荐流。
  • 场景化推荐:结合实时天气、地理位置等属性节点,动态调整推荐策略。

场景三:社交网络分析

  • 实时影响力传播:一条热点内容发布后,实时追踪其在社交图谱中的传播路径和速度。
  • 社区发现:新用户加入群组后,实时更新其所在的社区结构,识别潜在的意见领袖。
  • 关系强度演化:根据互动频率、时间窗口等实时属性,动态调整用户之间的边权重。
关键指标对比:离线图谱通常支持 T+1 更新,端到端延迟 > 1 小时;实时图谱要求从事件发生到图谱更新完成,端到端延迟 ≤ 5 秒,部分场景要求 ≤ 1 秒。

1.3 课程整体技术栈概览

本课程采用 Kafka + Flink + Neo4j 作为核心技术栈,构建端到端的实时图谱流水线。三者的分工清晰明确:

  • Kafka:作为事件总线,负责高吞吐、低延迟地采集和分发业务事件(如用户点击、交易记录、社交互动)。
  • Flink:作为实时计算引擎,负责对事件流进行清洗、关联、聚合,并提取图谱所需的实体和关系。
  • Neo4j:作为图数据库,负责存储最终的图谱数据,并提供毫秒级的图查询和遍历能力。
实时图谱构建技术栈架构 数据源层:业务事件(点击、交易、社交互动) Kafka:事件总线(高吞吐、低延迟、持久化) Flink:实时计算(清洗、关联、图谱提取) Neo4j:图数据库(存储、查询、遍历) 延迟要求 端到端 ≤ 5 秒 吞吐量 ≥ 10万/s 查询 P99 ≤ 50ms

1.4 各组件职责与选型理由

组件 核心职责 选型理由 替代方案
Kafka 事件采集、缓冲、分发 高吞吐(百万级/s)、持久化、分区并行、生态成熟 Pulsar、RabbitMQ
Flink 实时 ETL、状态管理、图谱关系提取 Exactly-Once 语义、事件时间处理、CEP 支持、与 Kafka 原生集成 Spark Streaming、Storm
Neo4j 图存储、图查询、图遍历 原生图存储、Cypher 查询语言、ACID 事务、社区活跃 JanusGraph、ArangoDB
选型注意:本课程选择 Neo4j 而非 JanusGraph,主要考虑到 Neo4j 的原生图存储引擎在单机场景下性能更优,且 Cypher 语言学习曲线更低,适合作为实时图谱的入门和实战首选。如果未来需要水平扩展至百亿节点以上,可考虑迁移至 JanusGraph + HBase/Cassandra 架构。

1.5 实时图谱构建的核心流程

从原始事件到可查询的图谱,需要经过以下关键步骤:

  1. 事件采集:业务系统将用户行为(点击、购买、关注等)发送至 Kafka Topic。
  2. 流式处理:Flink 从 Kafka 消费事件流,进行数据清洗、字段补全、实体识别。
  3. 图谱提取:Flink 根据预定义的图谱模型,将事件转换为“实体节点 + 关系边”的图结构数据。
  4. 图写入:Flink 通过 Neo4j Bolt 协议,将图数据批量写入 Neo4j 数据库。
  5. 图查询:业务应用通过 Cypher 语句查询 Neo4j,获取实时关联分析结果。
实时图谱构建核心流程 ① 事件采集 Kafka Producer ② 流式处理 Flink 清洗/关联 ③ 图谱提取 实体/关系识别 ④ 图写入 Neo4j Bolt 批量 ⑤ 图查询 Cypher 持续消费 → 持续构建 → 实时更新 整个流程从事件产生到图谱更新完成,端到端延迟控制在 5 秒以内,支持每秒 10 万+ 事件的实时处理

1.6 课程学习路径

本课程共 30 章,分为四个阶段:

阶段 章节范围 核心内容 实战产出
基础篇 第 1-8 章 Kafka 核心、Flink 基础、Neo4j 入门、图谱建模 单机实时图谱 Demo
进阶篇 第 9-18 章 Flink 状态管理、CEP 模式匹配、Neo4j 性能调优 风控实时图谱系统
实战篇 第 19-26 章 多数据源集成、Exactly-Once 语义、图算法集成 推荐实时图谱系统
运维篇 第 27-30 章 集群部署、监控告警、数据回溯、生产最佳实践 生产级实时图谱平台
学习建议:建议读者具备 Java/Scala 基础编程能力,了解基本的数据结构和 SQL 语法。每章均提供可运行的代码示例和配套数据集,建议边学边练,在本地搭建实验环境。