K-ON Stacking Knowledge On the Head Layer of Large Language Model

K-ON Stacking Knowledge On the Head Layer of Large Language Model

K-ON仅适用于封闭实体集的benchmark评测,实际应用价值远不如GraphRAG等动态方案

⚠️ 核心认知

K-ON的本质:一个只能从训练集固定实体(如12,842个)中选择答案的高效分类器

关键限制: 1. 完全无法预测新实体 2. 新实体引入需完整重训练 3. 推理时只是"查表",不是"生成" 4. 适用场景:静态benchmark,不适用于动态应用


1. 真实工作机制

1.1 训练阶段

# 固定实体集(DB15K)
entity_set = {
    "Matt Damon": ["Matt", "Damon", "<PAD>", ...],  # ID: 0
    "Tim Berners-Lee": ["Tim", "Berners", "-", "Lee", ...],  # ID: 1
    ...  # 共12,842个,固定不变
}

1.2 推理阶段

# 一次forward得到K=8个token的概率分布
probs = [p_0, p_1, ..., p_7] = K_ON(query)

# 遍历所有实体,查表计算得分
scores = {}
for entity in entity_set:  # 只能从这12,842个中选
    tokens = entity_set[entity]  # 预先tokenize的结果
    score = Σ α[k] * probs[k][tokens[k]]  # 查表
    scores[entity] = score

prediction = argmax(scores)  # "Matt Damon"

本质:封闭集合多分类,实体是"宏观token"


2. 核心限制

2.1 新实体问题

场景 K-ON表现
新演员出道 只能选训练集中的旧演员
新产品上市 只能选训练集中的旧产品
企业新员工 只能选训练集中的旧员工
数据库更新 必须完整重训练模型

添加1个新实体的成本: - 重新tokenize所有实体 - 构建新训练数据+平衡旧数据(避免forgetting) - 完整重训练:5 epochs × 1小时 × 8 A100

2.2 所有baseline的共同约束

重要:这不是K-ON独有的问题,而是标准KG补全任务的定义

# 所有方法(TransE, RotatE, KG-BERT, K-ON)
训练实体集 = 测试实体集 = 固定的12,842

但这个"标准设定"本身就脱离实际应用需求。


3. K-ON vs GraphRAG

3.1 架构对比

维度 K-ON GraphRAG
实体集 固定(训练时确定) 动态(检索时确定)
新实体 ❌ 需重训练 ✅ 无需训练
推理方式 查表分类 检索+生成
更新成本 高(完整重训练) 低(更新图谱即可)
扩展性 差(<10万实体) 好(百万+实体)
适用场景 静态benchmark 动态应用

3.2 实际场景对比

场景1:电商推荐

# 新商品"iPhone 16"上市
GraphRAG: 
  - 更新知识图谱秒级
  - 立即可检索使用

K-ON:
  - 必须重训练整个模型1小时 × 8 A100
  - 需要平衡新旧商品数据
  - 可能影响旧商品的预测准确性

场景2:企业知识库

# 新员工入职
GraphRAG:
  - 添加员工实体到图谱
  - 立即可查询

K-ON:
  - 重新训练模型
  - 每次入职/离职都需要重训练

场景3:生物医学数据库

# 新蛋白质被发现
GraphRAG:
  - 更新本体数据库
  - 即时可用

K-ON:
  - 需要等待下次模型更新窗口
  - 重训练成本限制更新频率

3.3 性能对比

指标 K-ON GraphRAG
准确性(封闭集) ✅ SOTA (MRR 38.1) ⚠️ 依赖检索质量
覆盖率(开放域) ❌ 仅训练集 ✅ 全图谱
实时性 ❌ 需重训练 ✅ 即时更新
计算效率(推理) ✅ 1次forward ⚠️ 需检索步骤
维护成本 ❌ 高(GPU+时间) ✅ 低(更新数据)

结论: - K-ON:在静态benchmark上更准,但实用性差 - GraphRAG:在动态场景下更实用,是实际应用的首选


4. 核心创新与价值

4.1 技术创新

1. 并行化计算

传统12,842次forward每个实体单独评估
K-ON1次forward所有实体并行查表

2. Entity-level对比学习

传统Token级优化
K-ON实体级优化直接优化排序

消融实验:移除entity-level对比后MRR暴跌24分(38.1→14.1),证明这是核心

4.2 实际价值定位

学术价值: - 证明entity-level优化的有效性 - 在标准benchmark达到SOTA - 为KG+LLM融合提供新思路

实用价值极有限: - 只适用于静态、小规模、封闭场景 - 动态场景完全不如GraphRAG - 维护成本过高


5. 实验结果(批判性解读)

5.1 性能数据(DB15K)

方法 MRR Hits@1 实体集
RotatE 29.28 17.87 固定12,842
FLT-LM 33.45 24.56 固定12,842
K-ON 38.10 30.13 固定12,842

5.2 数字背后的真相

公平性质疑: - 所有方法在同一个封闭实体集上竞争 - 这个设定本身就不反映实际应用需求 - 类似于"在固定的1000个分类上做图像分类"

性能提升来源: 1. Entity-level对比学习(~24 MRR) 2. LLM文本理解能力 3. 训练效率高(5 epochs vs 1000)

但这些优势在动态场景下毫无意义,因为根本无法处理新实体。


6. 适用场景决策

你的场景:

静态benchmark评测?
  └─ 是 → ✅ 用K-ON(SOTA性能)
  └─ 否 → 继续

实体集固定 + 更新频率≤月?
  └─ 是 → ⚠️ K-ON勉强可用,但GraphRAG更好
  └─ 否 → ❌ 不要用K-ON

动态应用(电商/推荐/知识库)?
  └─ 是 → ✅ 用GraphRAG,不要用K-ON

开放域问答?
  └─ 是 → ✅ 用GraphRAG或纯RAG

需要处理新实体?
  └─ 是 → ✅ 用GraphRAG,K-ON完全不适用

结论:除了学术benchmark,几乎所有实际场景都应该选GraphRAG。


7. 关键技术细节(简要)

7.1 架构

Query → LLM → K个Head → K个概率分布 → 查表 → 实体得分排序

7.2 损失函数

L_total = L_NCE + L_sft + L_tdt
  • L_NCE(entity对比):核心,贡献24 MRR
  • L_tdt(分布对齐):辅助,贡献0.6 MRR
  • L_sft(token监督):辅助,贡献0.8 MRR

7.3 关键问题

Head之间的依赖: - Head 1看不到Head 0选择的具体token(只看hidden state) - 通过Conditional Attention部分缓解 - 主要靠大量训练学习统计规律

为什么能work: - Entity-level对比学习强制整体优化 - LLM的强大表示能力 - 封闭集合降低了任务难度


8. 总结

8.1 K-ON是什么

准确定位: - 一个在封闭集合上做到极致的benchmark刷榜工具 - 通过并行化和entity-level优化达到SOTA - 仅适用于静态、小规模、学术评测场景

不是: - 实际应用的知识图谱解决方案 - 动态场景的合理选择 - 能与GraphRAG竞争的系统

8.2 核心价值

学术意义: - Entity-level对比学习的有效性证明 - 为KG+LLM融合提供新视角 - Benchmark SOTA

实用意义: - GraphRAG在几乎所有实际场景都更优 - 维护成本过高(重训练) - 无法处理动态更新需求

8.3 最终评价

K-ON是一个精巧但狭隘的学术工作: - 在特定假设(封闭实体集)下做到极致 - 但这个假设本身就脱离实际应用 - 相比GraphRAG等动态方案,实用价值非常有限

借着LLM的皮,解决了一个人为受限的KG问题。


9. 关键启示

评估KG+LLM方案时,问自己:

  1. 实体集是动态还是静态?
  2. 动态 → GraphRAG
  3. 静态 → 可考虑K-ON(但仍不如GraphRAG灵活)

  4. 新实体出现频率?

  5. 频繁 → 必须用GraphRAG
  6. 罕见 → K-ON勉强可用

  7. 维护成本能否接受?

  8. 每次更新需1小时×8 A100 → 大多数场景不可接受

  9. 是纯学术评测吗?

  10. 是 → K-ON可用(SOTA)
  11. 否 → GraphRAG更实用

绝大多数实际场景的答案是:用GraphRAG,不要用K-ON。

Thanks for Reading

If this article was helpful to you, feel free to connect with me!