金融图谱Python批流一体链路案例集 - 第1节
1.1 金融图谱的定义与核心价值
金融图谱(Financial Knowledge Graph)是一种基于图结构组织金融实体及其关系的技术体系。它将分散在结构化数据库、非结构化文档、实时事件流中的金融信息,抽象为节点(实体)与边(关系)的语义网络,支撑大规模关联推理与实时决策。
| 维度 | 传统关系型数据库 | 金融图谱 |
|---|---|---|
| 数据模型 | 表 + 外键 | 节点 + 边 + 属性 |
| 关联查询深度 | 3~5 层 JOIN 性能急剧下降 | 10+ 层遍历毫秒级响应 |
| 实时更新 | 批量 ETL 为主 | 批流一体,秒级事件入图 |
| 推理能力 | 规则引擎硬编码 | 图算法 + 规则推理 |
核心公式:金融图谱 = (实体 + 关系 + 属性) × (批处理 + 流处理) × (图算法 + 业务规则)
1.2 三大核心应用场景
1.2.1 风控场景
- 关联风险传导:通过担保圈、持股链、供应链图谱,识别 2~5 度关联风险传染路径。
- 团伙欺诈检测:基于设备指纹、IP 共现、联系人重叠构建社群图,发现异常聚集子图。
- 实时交易拦截:流式图计算在 100ms 内完成交易链路的风险评分。
1.2.2 反欺诈场景
- 身份伪造识别:手机号、身份证、设备 ID 的多对多映射异常检测。
- 黑产图谱挖掘:从历史欺诈样本出发,通过图传播算法扩展可疑节点。
- 实时多头借贷:流式聚合同一申请人 24 小时内的跨平台申请记录。
1.2.3 投研场景
- 产业链传导:从原材料到终端消费的上下游图谱,量化事件冲击。
- 事件驱动分析:将新闻、公告、社交媒体事件实体化,关联股价波动。
- 智能研报生成:基于图谱自动提取公司、行业、宏观的关联事实链。
1.3 批流一体架构总览
传统金融数据架构将批处理(离线数仓)与流处理(实时计算)分离,导致数据口径不一致、链路重复建设。批流一体架构在存储、计算、服务三层实现统一,核心设计原则如下:
- 统一数据源:Kafka / Pulsar 作为实时事件总线,同时对接离线批量导入。
- 统一计算引擎:Flink 同时承担流式图构建与批量图算法计算。
- 统一图存储:JanusGraph / NebulaGraph 支持实时写入与批量导入。
- 统一服务层:图查询 API 与图算法 API 对上层应用透明。
1.4 批流一体 vs 传统架构对比
| 对比维度 | 传统分离架构 | 批流一体架构 |
|---|---|---|
| 数据口径 | 批与流口径不一致,常出现对账差异 | 同一套数据模型,批流共享 Schema |
| 开发效率 | 批、流两套代码,维护成本高 | 一套代码,两种运行模式 |
| 实时性 | 批处理 T+1,流处理秒级 | 流处理秒级,批处理复用流链路 |
| 资源利用率 | 批、流集群独立部署,资源浪费 | 统一资源池,弹性调度 |
| 图算法支持 | 离线图算法为主,实时图计算困难 | 流式图算法 + 批量图算法统一框架 |
1.5 本课程技术栈概览
本课程案例全部基于 Python 生态实现,核心组件如下:
- 流处理:PyFlink(Flink 的 Python API),支持 DataStream 与 Table API。
- 图计算:NetworkX(离线原型)、GraphX on PySpark(大规模批量)、自定义流式图算法。
- 图数据库:NebulaGraph Python Client,支持实时写入与图查询。
- 消息队列:Kafka Python 客户端(confluent-kafka),模拟实时事件流。
- 批处理:PySpark,用于历史数据批量导入与图算法训练。
学习建议:本章是后续 29 个案例的架构基础。建议读者先理解批流一体的分层思想,再深入到每个具体案例的代码实现。后续章节将围绕风控、反欺诈、投研三大场景,逐一拆解 Python 实现细节。
1.6 本章小结
本章建立了金融图谱的定义、三大应用场景(风控、反欺诈、投研)以及批流一体架构总览。核心要点:
- 金融图谱以图结构统一表达金融实体与关系,天然适合关联推理。
- 批流一体架构在数据源、计算、存储、服务四层实现统一,消除批流割裂。
- 本课程所有案例基于 Python 生态,覆盖 PyFlink、NetworkX、NebulaGraph 等主流组件。