概述
在2024年8月26日于广州举办的VLDB 2024会议上,蚂蚁集团知识引擎团队的一篇论文被收录为 Industry track 的现场展示论文(Oral Paper),论文题目为《KGFabric: A Scalable Knowledge Graph Warehouse for Enterprise Data Interconnection》。这是一篇聚焦数据管理与数据库领域的顶级国际会议论文。
简单而言,KGFabric 是一套基于分布式文件系统(DFS)的全量知识仓储解决方案。它采用 SPG 作为数据模型,能够更精准地刻画真实世界,同时在存储与计算效率方面进行了深度优化。其最核心的能力在于支持 Graph Fabric——在保护用户隐私的前提下实现多域图谱的融合,直接解决了知识图谱领域长期存在的“数据孤岛”难题。与主流的传统关系型数据库管理系统以及图数据库相比,KGFabric 在语义关系的存储空间上缩减了超过90%;在实际工作负载中,图融合的性能提升了21倍;在多跳语义图分析任务中,性能甚至实现了100倍的提升。
论文地址
01 概述
在蚂蚁集团内部的业务实践中,团队构建了蚂蚁知识图谱平台。该平台覆盖商户、公司、账户、产品等多个领域的特定知识图谱,管理着数万亿级别的结构化知识信息,为搜索、推荐、风险控制等核心业务提供支撑。平台不仅提供基于跨领域知识复用的多种企业级知识管理能力,还支持多样化图谱业务的自助接入,并支撑了多种下游服务以及图推理、图分析应用,其线性扩展能力已超过千亿量级。
随着平台持续迭代,跨域图谱融合、图匹配以及图表示学习等任务对系统能力提出了越来越高的要求,传统的数仓系统(例如 ODPS)和图数据库逐渐难以满足需求。为此,我们推出了超大规模知识仓储解决方案——KGFabric。它采用 SPG(语义增强可编程框架)作为数据模型,基于分布式文件系统提供了原生的知识图谱存储能力以及多域知识图谱融合能力。底层文件存储设计了一套混合存储格式,在设计之初就兼容了多种图模型和超级节点的存储与处理,分别为属性图和语义图实现了 CSR 索引与三元组索引。更值得一提的是,底层完全采用 POSIX API 实现文件 I/O 操作,这使得跨多云环境的部署成本显著降低。
02 基于SPG的建模
KGFabric 采用 SPG 作为数据模型,其语义与属性图相兼容。SPG 源自蚂蚁知识图谱平台多年支撑金融业务的积累,是一种基于属性图的语义框架。它创造性地融合了属性图的结构性优势与 RDF 的语义性优势——既克服了 RDF/OWL 语义复杂、难以工业落地的缺陷,又充分继承了属性图结构简单、与大数据体系高度兼容的特点。
为了增强属性图中节点类型的语义表达能力,SPG 在属性图的节点类型和边类型之上,引入了更多主体分类模型来扩充节点类型,以便兼容更多元的知识表示。在 SPG 中,主体分类模型大致可以理解为以下几种:
- 实体:业务相关性较强的客观实例,通过属性、关系刻画个体画像,例如用户、企业、商户。下图中 User 就包含若干属性且与 Shop 相连。
- 概念:实体从具体到一般的抽象,表达一组实体集合或一种分类体系。相对静态且复用性很强,比如人群标签、领域标准类型。下图中的 Concept.Prefer 便是一个例子。
- 事件:加入时间、空间、标的等约束的实体类型,例如通过 NLP、CV 等从数据中抽取出的行业事件、企业事件、诊疗事件。下图中的 TransactionEvent 就是事件类型。

03 核心能力
3.1 基于LSM-tree的存储架构
KGFabric 的存储架构基于 LSM-Tree,数据层分为 Base 和 Delta 两层。其中 Delta 层进一步划分为 Level-0 和 Level-1:Level-0 专为流式导入(mini-batch)场景优化,例如从消息队列导入;Level-1 主要面向批量导入场景,比如从 Hive 或 ODPS 导入。为了平衡读放大问题,后台运行 Tiering Compaction,定期对数据进行重整与压实。在蚂蚁集团内部,每天有超过1000个数据导入任务,这套 Compaction 策略将随机读和顺序读的读放大分别控制在5倍和1.6倍以下。
KGFabric 的目录层级主要包含以下内容:
- Namespace:业务数据管理的基本单位,用于实现不同领域图谱的数据隔离。
- RelationGroup:管理图谱数据分组,通常基于实体、关系或事件时间切片进行分组。
- Base:管理周期性快照数据。
- Delta:管理流式或批量更新的增量数据。
版本管理依赖文件系统的 put-if-not-exists 语义,通过 VersionPointer 机制解决读写冲突。导入任务成功后,KGFabric 会自动创建新版本文件,通过时间戳映射相应版本文件,从而支持任意快照访问。current 文件始终记录最新的数据版本。
3.2 为语义图优化的File Format
实际的图谱数据承载在 RelationGroup 目录中,其中包含若干数据文件及其对应的元数据。数据文件分为 PGFile 和 SGFile,分别存储属性图数据和语义图数据。在布局上,PGFile 和 SGFile 都由 Footer 和文件内的 BlockIndex 组成,内部则分别存储 PGBlock 和 SGBlock——它们是基本的写入与压缩单位。
PGBlock 主要存储属性图,内部包含点表(VertexTable)、边表(EdgeTable,包括出边和入边)和属性表(PropertyTable),采用 CSR 索引格式进一步压缩子图数据。属性表支持行或列存储格式,并使用位图矩阵标识 NULL 值的属性。在 PGBlock 内部,通过点切分方式将超级点(度数很高的边,通常超过10万)的稠密边分配到若干个 PGBlock 中分别存储。下图中 vid2 在 block#1 和 block#95 分别触发了两次切分逻辑。这有效解决了超级点在加载与计算时的内存瓶颈,提升了按关系类型加载边时分组 limit 的 I/O 效率。
在 KGFabric 中,语义图的存储包含三个组件:
- 概念词典:提供 ConceptName 和 ConceptID 之间的双向映射。
- 语义属性:在 PGBlock 中,不再使用边表存储语义实体到概念的边,而是改用属性表存储 ConceptID 来记录实体与概念实例的链接,从而优化存储空间。
- TripleIndex:表示概念到语义实体的边。由于这类边通常比较稠密,采用 RoaringBitmap 来优化存储空间和计算性能。基于 TripleIndex 实现了概念的多维索引,支持 AND/OR/NOT 等 bitwise 算子,并支持基于分桶的并发计算。
3.3 Graph Fabric
传统的 Data Fabric 大多基于数据冗余实现,这意味着需要跨集群之间进行数据拷贝。而 KGFabric 中的 Graph Fabric 框架在避免冗余拷贝的同时实现了多域图谱融合。只需选取待融合的实体类型,再指定链指或融合算子,Graph Merge Tree(GMT)就能自动构造出虚拟类型 FuseType。用户透明地使用该虚拟类型,实现基于 Fuse-On-Write(FOW)或 Fuse-On-Read(FOR)的图谱融合。GMT 是 Graph Fabric 的核心数据结构,逻辑上是一棵多叉树。FOR 的过程可以抽象为对树的后序遍历。在后序遍历中,还集成了 AntPrivacy API,在 Graph Fabric 执行之前对数据进行属性粒度的加密,有效保障图谱融合过程中的用户数据安全。
3.4 图分析系统集成
为了优化金融场景下的负载性能,KGFabric 可作为图分析系统的存储后端,提供原生图检索与图加载能力,避免分布式构图场景下 shuffle 带来的额外开销。具体优化措施包括:
- 分区图加载:实现分布式图谱数据加载,支持多种图切分方式(按 VertexID 切分、按存储 BlockSize 切分等)。相比 ODPS 或 Hive 省去了数据 shuffle 环节,大幅提升读取性能。
- Backend Cache:包含 meta cache 和 data cache。meta cache 缓存 RelationGroup 的 meta 与 BlockIndex,为常驻任务优化;data cache 包含两级缓存——常驻磁盘的全量缓存和内存中的 Block 缓存,为延迟敏感的任务优化。
- 算子下推:支持 filter/aggregate/window 等图算子的下推。filter 算子支持实体、关系、属性类型的下推,可下推到 GMT 的叶子结点(即 RelationGroup 的读取);aggregate 支持 sum/max/min/count 等统计下推;window 算子支持基于时间切片的事件和索引的 filter 算子下推。
- 零拷贝序列化/反序列化:实现内存数据结构与磁盘数据结构的同构,降低序列化和反序列化的开销。
04 实验评测
为了评估系统性能,团队开展了存储空间、图分析效率以及 Graph Fabric 扩展性实验。
4.1 数据集
主要选用 LDBC-Finbench 作为属性图(LPG)数据集,并通过为 LDBC-Finbench 添加语义关系,扩展出新的数据集 LDBC-Finbench-X 作为语义图(SPG)数据集。此外,从生产场景中选取了用户图谱、商户图谱和资金图谱作为真实数据集。各数据集的度数分布如下:
(注:原文中此处应有度数分布图,保留原图描述)
4.2 存储空间
针对属性图数据集,KGFabric 的存储空间占用仅为 Neo4j 的43.7%,为 RocksDB 的91.7%。针对语义图数据集,KGFabric 得益于强 Schema 建模,大幅优化了语义关系的存储开销,空间占用仅为 RocksDB 的7%,Neo4j 的1.9%。
4.3 图分析效率
主要选用 pairwise path 和 cycle pattern 两种典型的图分析任务,对比对象为 ODPS、Neo4j 和 RocksDB。在 pairwise path 实验中,随着分析任务跳数增多,KGFabric 提供的 backend 能显著提升图计算的扩展性。在 cycle pattern 实验中,受益于低构图成本,KGFabric 最多可将3跳环路分析的耗时降低67.8%。
4.4 Graph Fabric扩展性
对于默认链指策略(IDE),随着数据源增多,相比 ODPS,KGFabric 表现出良好的扩展性。为了优化用户自定义链指策略(UDL)的性能,实现了 rindex 对数据进行预排序,进一步提升了执行效率。
