基于PMA的邻接数组
- 目标: 高效支持更新,避免全局重建。
- 方法:
- 用 Packed Memory Array (PMA) 存储快照,元素间预留空隙。
- 插入/删除操作可通过局部移动元素完成,大幅降低更新开销。
- 提出新的空隙分配与再平衡策略,适应时序图的动态特性。

变化感知的快照创建
- 目标: 智能选择何时创建关键快照 (Key Snapshot)。
- 方法:
- 定义差异度
TD
(Temporal Discrepancy) 衡量连续快照间变化度。
- 当
TD > β
(阈值,经验值 0.03) 时,才创建新的关键快照。
- 克服了基于固定时间或固定日志大小方法的缺陷,实现动态优化。
日志合并方法
- 目标: 减少查询时需要处理的日志量。
- 方法:
- 在合并前对日志进行预处理,消除对同一元素的冗余操作。
- 例如:多次插入视为最后一次插入;插入后删除则视为无操作。
系统设计
- 数据结构: 将数据划分为多个 Shard,每个 Shard 包含一个PMA快照和一段日志。
- 查询引擎: 查询时,找到最近的关键快照,应用合并后的日志,快速重构目标时间点的图状态。
实验效果
- 对比对象: Chronos (Copy-Based), GraphPool (Log-Based), Pensieve (Hybrid)。
- 结果:
- vs. GraphPool: 查询效率 平均提升86%,内存开销降低 9%~57%。
- vs. Chronos: 查询效率 平均提升53%,内存开销 大幅降低。
- vs. Pensieve: 查询时间 最多减少12.5倍 (因避免远程重建),内存开销约为其3.2倍但是可接受的权衡。
- 自身组件的有效性: PMA模型更新效率远高于CSR/AdjList;波动感知策略在存储和查询时间上均优于基于周期或随机的方法。
图表示学习
- 图数据持续增大 --> 空间开销(状态向量,邻接矩阵)算力需求(矩阵运算)开销巨大
- 图表示学习 --> 对于 有 ,映射为低维稠密的实值向量

图抽样方法
类别 |
代表方法 |
特点 |
基于矩阵分解 |
LLE(Science'00), Laplacian Eigenmaps(NIPS'01), HOPE(SIGKDD'16), STRAP(KDD’19), ProNE(ICAJI’19) |
时间和空间开销大、依赖相似矩阵的选择 |
基于随机游走 |
DeepWalk(KDD'14), LINE(KDD'15), Node2Vec(KDD'16), Struct2Vec(KDD’17), DiaRW(FGCS’19) |
扩展性更好(时间和空间)、适应性更强 |

怎样优化表示学习系统
- 样本规模数十倍于图数据,不能在一周内完成千万个节点的表示学习
异构图与知识图谱基础
- 异构图:图中包含多种节点类型和边类型。
- **知识图谱(KG)**是一种典型的异构图:
- 节点表示实体(如人、药物、论文等)。
- 边表示实体之间的关系(如“作者”、“治疗”、“引用”等)。
- 知识图谱的特点:
- 大规模(数百万节点和边)。
- 不完整(很多真实关系缺失)。
- 无法枚举所有可能的事实,因此需要预测缺失的链接。
知识图谱嵌入(KG Embedding)
目标:将实体和关系嵌入到低维向量空间中,使得存在的关系在嵌入空间中“接近”。
基本思想
- 每个实体和关系都用一个向量表示。
- 定义一个评分函数 ( f_r(h, t) ) 来衡量三元组 ( (h, r, t) ) 的合理性。
- 通过训练使得真实三元组的得分高,虚假三元组的得分低。
常见的KG嵌入模型
模型 |
嵌入空间 |
评分函数 |
对称性 |
反对称性 |
逆关系 |
组合性 |
一对多 |
TransE |
ℝ^d |
−‖h + r − t‖ |
✗ |
✓ |
✓ |
✓ |
✗ |
TransR |
ℝ^d → ℝ^k |
−‖M_r h + r − M_r t‖ |
✓ |
✓ |
✓ |
✓ |
✓ |
DistMult |
ℝ^d |
⟨h, r, t⟩ |
✓ |
✗ |
✗ |
✗ |
✓ |
ComplEx |
ℂ^d |
Re(⟨h, r, t⟩) |
✓ |
✓ |
✓ |
✗ |
✓ |
RotatE |
ℂ^d |
−‖h ∘ r − t‖ |
✓ |
✓ |
✓ |
✓ |
✗(弱支持) |
模型特点与适用场景
- TransE:简单高效,适合快速实验,但不能处理对称关系和一对多关系。
- TransR:通过引入关系特定的投影矩阵,增强了表达能力,能建模更复杂的关系。
- DistMult:使用点积,能处理对称关系,但无法区分头尾实体,无法建模反对称关系。
- ComplEx:引入复数空间,能建模反对称和逆关系,是目前常用的强模型之一。
- RotatE:在复数空间中进行旋转操作,能建模多种关系类型,性能较好。
实际建议
- 不同知识图谱的关系模式差异大,没有通用最优模型。
- 快速尝试:先用 TransE。
- 进一步提升:使用 ComplEx 或 RotatE 等更具表达力的模型。
技术路径 |
核心机制 |
对LLM的要求 |
优点 |
缺点/挑战 |
代表性工作 |
基于数据集微调 |
利用包含推理路径的特定领域数据集对LLM进行微调,将知识内化到模型参数中。 |
需要访问模型参数并进行训练。 |
推理速度快(无需实时检索);能深度整合领域知识。 |
知识更新困难,需要重新训练;训练成本高;可能过拟合特定数据集。 |
MedReason, JKEM |
基于提示工程与检索增强 |
在推理时,从KG中检索相关知识,并将其作为上下文(Prompt)的一部分输入给LLM。 |
无需修改模型参数,可应用于任何LLM。 |
灵活、高效,知识可实时更新;实现相对简单。 |
受限于上下文窗口长度;检索质量直接影响性能;可能引入无关噪声。 |
DR.KNOWS |
基于推理路径探索与验证 |
将LLM作为智能体,在KG上动态探索、生成并评估多条推理路径,选择最优路径作为答案依据。 |
需要LLM具备强大的零样本或少样本推理和评估能力。 |
可解释性强,能提供完整的推理链条;无需训练,通用性好。 |
推理过程复杂,计算开销大;路径探索的效率和准确性是关键。 |
RwT, REKG-MCTS |
知识图谱帮助思维链
- 大语言模型 (LLMs) 在诸多NLP任务上表现出色,但在复杂推理(算数、常识、符号)任务上仍存在显著局限。
- 思维链推理 (Chain-of-Thought Reasoning) 通过让LLM生成中间推理步骤,有效提升了多步推理任务的性能。
关键问题
-
通用思维链难专精
- 推理链生成基于LLM自身生成,无法利用知识图谱形成严谨逻辑
- 在医疗、法律、金融等高风险领域,此问题带来不可估量的风险
- 例: 在AQuA数据集上,多种CoT方法的准确率均低于55%。
-
自然语言提示词表述模糊
- 自然语言思维链易理解,但推理准确性不如代码式提示
- 代码提示复杂性高、领域局限性大、语言风格单一
实验设置
- 模型: ERNIE-Speed, GPT-4o mini, GLM-4-flash, GPT-4o等
- 数据集 (9个):
- 通用领域: AQuA, GSM8K, MultiArith, SingleEq, HotpotQA, CSQA, SIQA, Last Letter, Coin Flip.
- 垂直领域: LawBench, LegalBench, CFBenchmark, AGIEval.
主要结果
提升通用任务
Method |
AQuA |
GSM8K |
... |
Average |
Zero-shot-CoT |
43.4 |
78.3 |
... |
72.4 |
Manual-CoT |
54.3 |
85.8 |
... |
77.3 |
PS |
50.1 |
82.8 |
... |
75.2 |
CoT-RAG |
65.7 |
94.7 |
... |
89.1 |
适配垂直领域
- 准确率远超其他基于图谱的RAG方法(如KG-CoT, GraphRAG, ToG等)。
- 专家构建的DT至关重要:零专家参与(LLM自建DT)的变体性能下降 7.8%。
知识图谱案例实验
来源:【天池经典打榜赛】赛道四-知识图谱预测赛
实验背景
- 知识图谱是AI时代一项非常重要的技术,然而知识图谱普遍存在不完备的问题,知识图谱链接预测任务主要基于实体和关系的表示对缺失三元组进行预测。
- 任务旨在提升电商场景下知识图谱嵌入效果,满足商品推荐等应用对推理商品潜在关联性的需求。
实验内容
- 知识图谱表示:三元组(h,r,t),其中h被称为头实体,t为尾实体,r为连接头、尾实体的关系。
- 由于知识图谱构建中部分知识的缺失及知识动态变化等原因,现有的知识图谱通常是不完备的,知识图谱中总是存在关系r下头实体h或者尾实体t缺失的情况。
- 基于知识图谱的链接预测任务,就是已知头实体(或尾实体)和关系的情况下,预测缺失的尾实体(或头实体)的任务。
- 此任务中所提供的知识图谱的头实体h通常为商品,尾实体t通常为商品所对应相关属性信息,如颜色、适用人群、细分市场等,关系r为具体的属性类型。
- 因为商品属性关系中多对一的情况十分普遍,所以在做关系推理和链接预测任务时只考虑预测尾实体。
实验要求
- 赛题数据、格式、指标:详见官网。
- 结果提交:向官网提交OpenBG500_test.tsv文件,向微助教平台提交Python Notebook文件。
- 实验报告:不另外撰写,在Notebook中逐栏介绍实验采用的模型、过程、结果分析及结论。
时间安排
- 开始日期:2025年09月23日
- 天池提交:2025年09月30日
- 微助教提交:2025年10月10日
请在规定时间内完成实验,并按照要求完成官网和微助教提交。
首先当然要了解一下这类系统服务的对象,请大家想一想身旁的图数据相关应用都有哪些?不拘泥于几年前课堂上所学的最短路径算法
GMV(Gross Merchandise Volume,商品交易总额)指在一定时间段内,平台上所有已付款订单的金额总和,不含优惠券、退款及任何形式的手续费。在电商大促场景中,它是衡量平台成交规模和业务增长的核心指标。
以面向对象的物模型(Device-Model)描述数据中心内所有可被监控的实体(供配电、暖通、安防、服务器、虚拟机、容器、告警事件等),并将实体之间的拓扑依赖自动转化为图模型;利用实时图计算引擎对流式告警进行秒级收敛、根因定位与影响面分析。换言之,“物模型” 就是 IDC 运维场景下的设备数字化模型,把每个物理或逻辑对象抽象为带属性、带关系的节点;图计算引擎在这些节点/边上运行连通性、最短路径、子图匹配等算法,实现秒级故障定位。
密接(Close Contact) 的判定基于时空重叠度,具体定义如下:
如果两个人在 同一场所(同一小区、同一超市、同一交通工具等) 且 时间差 ≤ 30 分钟,则在该有向图上建立一条 “可能接触” 边,并标记 接触时长 与 空间距离 两个属性。
当接触时长 ≥ 10 分钟 且 距离 ≤ 1 米 时,该边被进一步升级为 “密切接触” 边,视为需要隔离的高风险关系。
文章随后利用图数据库的 3 跳查询,一次性把满足上述条件的 所有密切接触者和场所 全部拉出,用于后续精准隔离与流调。
正如知名的Hadoop系统,其实是MapReduce框架的开源实现,其上构建的Spark GraphX也是Pregel的重视复现
系统内以属性图的形式,通过规范化的编程框架来实现复杂的图应用
比方说这个用来找寻维基百科热门社区的应用,里面就包含了两路并行的图分析过程
作为高校的科研成果,GraphLab则更强调处理的范式,结合Pregel的顶点中心计算框架,提出了GAS模型
专攻图数据处理的系统,还专门分支出了一个门类,如今被归类为一种NoSQL的图数据库,曾经风光一时,但是其中最具标志意义的创业公司Neo4j的发展却颇为坎坷,最近倒是又有新的契机闪过,即KG与LLM的合作
这里指代的就是前面提到的 Pregel 系统以及 GraphChi。
为了深入认识这些图处理系统背后的设计方法,有必要回顾一下我们以往学习的计算机系统相关知识
这就是一个典型的并行处理结构,试问其并行任务工作在什么级别呢?
这里则是一个典型的层次存储结构,试问其出现的动机又是什么呢?
趁着刚刚重温了相关概念,这里审视一下目标应用的特点,首先点个题,图应用最突出的存储器访问特点在于这两者:偏斜性和随机性,两者分别是分布式处理和分层存储架构的大敌
上次我们谈到图这种特点鲜明,价值深远的应用,其构造具有偏斜性,行为具有随机性,而支撑其运转的系统,则仰赖各个层级的并行性,以及塑造层次存储的局部性,然而这里面涌现出天然的矛盾,构成了我们面前的第一重挑战
从这个问题开始,我们演示一下作为一名研究生,大致的学习过程应该是怎样的
首先,之前学习的记忆里,告诉我们局部性这样一个概念,我们很自然的希望从如今的实验环境中找出来
当时课本上是一个什么样的表述呢?我们少许回顾一下
不过,不同阶段,重点可不一样,前面更关注活跃数据的主流,后面则更关注不活跃数据的淘汰
启发式随机游走:HuGE+采用混合属性启发式随机游走(HRW),它在每一步随机游走中考虑了节点的公共邻居数量和节点信息内容,从而更有效地捕捉节点特征,减少了对计算资源的需求。
自适应游走长度:HuGE+使用启发式方法来确定随机游走的长度,而不是采用固定的游走长度。这种方法通过观察信息熵的变化来决定何时停止游走,从而避免了生成过多冗余信息,提高了计算效率。
自适应游走次数:HuGE+还提出了一种方法来决定每个节点的游走次数,它通过计算相对熵(即Kullback-Leibler散度)来评估生成的语料库与图的度分布之间的差异,从而确定合适的游走次数,以确保语料库的质量和效率。
内存占用优化:HuGE+显著减少了内存占用,平均减少了68.9%。这是通过优化游走策略和减少生成的语料库大小实现的,从而使得方法能够扩展到更大规模的图。
并行化处理:HuGE+的设计允许并行化执行,这意味着它可以利用多核处理器来同时处理多个任务,从而进一步提高处理大规模图的速度。
线性运行时间:在合成图上的实验表明,HuGE+的运行时间与图的大小呈线性关系,这表明它能够以可控的方式处理大规模图。
高效的训练方法:HuGE+使用Skip-Gram模型来训练节点的嵌入向量,并通过负采样等技术优化了训练过程,减少了计算和存储开销。
**三阶段设计 (Three-Stage Design)**
**Stage 1: 知识图谱驱动的CoT生成 (Knowledge Graph-driven CoT Generation)**
* **专家介入:** 领域专家构建一次性的、粗粒度的**决策树 (DT)**,封装领域推理逻辑。
* **LLM转化:** LLM将DT分解并转化为结构清晰、高度透明的**知识图谱 (KG)**。
* **KG节点:** 每个实体包含 `Sub-question`, `Sub-case`, `Sub-description`, `Answer` 属性。
* **优势:** 增强可控性、可靠性与领域适应性。
**Stage 2: 可学习的知识案例感知RAG (Learnable Knowledge Case-aware RAG)**
* **LLM驱动的检索:** (非传统向量检索)利用LLM从用户长查询描述中,为KG中的每个实体精准提取对应的 `Sub-description`。
* **动态更新:** 新的用户查询可以反过来动态更新DT中的 `Knowledge case`,使知识图谱持续进化。
**Stage 3: 伪程序提示执行 (Pseudo-Program Prompting Execution)**
* **执行方式:** LLM将KG表示为**伪程序知识图谱 (PKG)** 并逐步执行。
* **优势:**
* **兼具NL与Code优点:** 像代码一样逻辑严谨,又如自然语言一般易于理解和通用。
* **无需外部解释器:** 摆脱对Python解释器等环境的依赖。
* **可扩展性强:** 可适配C++, Java等语言风格(见附录)。
如果因特殊原因赶不上官网提交,请及时联系老师,在微助教提交时同时提交实验Notebook和csv文件,并说明原因。