让我们在《碧蓝档案》MomoTalk中应用GraphRAG

Project: Strawberry Milk

当向游戏剧情提问时,我希望能制作一个能将人物与事件联系起来进行回答的 MomoTalk。之前我曾用 AutoRAG 搜索过《鸣潮》的剧情,但在充分收集分散在多个场景中的关系方面仍有遗憾。这次,我将范围扩大到了《碧蓝档案》的主线剧情和 MomoTalk,并应用了 GraphRAG.

正如白子的角色定位那样,诸如询问基本设定、需要将多位人物经历过的事件串联起来的提问,以及容易将粉丝梗与原作事实混淆的提问,它也能回答吗?

  • 白子在阿拜多斯担任什么角色?
  • 优香的体重为什么是 100kg?

在实验中,暴露出同一人物被拆分为多个节点、以及重复后续提问也不会增加依据的问题。之后,我还增加了在不进行搜索的情况下将相同问题直接发送给 Gemini 的对比。虽然在寻找原文中事件(如优香体重记录被篡改)方面存在差异,但仅凭这三个案例,并不能说明 GraphRAG 总是更好。下面我们将结合回答与日志,看看我们制作了什么,又在哪里遇到了瓶颈。

GraphRAG

Microsoft GraphRAG 从文档中提取人物、组织、事件等要素及其关系,将其构建为知识图谱与社群摘要以用于搜索。其核心在于将原文块与图谱信息作为回答的上下文提供。

GraphRAG的社群结构

Microsoft:GraphRAG 的可视化示例。颜色表示社群,大图块与小图块展示了不同层级的结构。

在游戏剧情中,同一人物会出现在多个剧集中,关系也会发生变化。因此,我们期待除了寻找语义相似的段落之外,利用人物与事件之间的联系能更容易地收集相关场景。不过,向量搜索的结果也会根据分块(Chunk)构成、查询分解和重排(Rerank)而有所不同。本文并未进行与普通向量 RAG 的性能对比。

数据与索引成本

我们将剧情整理如下:

md
标题:RABBIT 4,隐蔽。
台词:
美优:啊……老师…….
美优:额,欢迎光临。我一直在等您。
老师:……没事吧? / 感觉被路人撞得挺惨的。
...
美优:和老师在一起时稍微安心了一些……

为了快速确认运行情况,我们随机挑选了整体约 10% 的内容进行索引。随机选择并不能保证均匀包含所有人物或事件。因此,当回答不足时,不仅需要考虑搜索失败,还需区分所需的原文从一开始就不在索引中的可能性。

索引使用了 gemma-4-31b-it,嵌入(Embedding)使用了 gemini-embedding-2。以下是当时记录的索引 Token 量,这与后文中针对每个问题测量的响应 Token 量是分开的。

过程 输入 输出 合计
要素与关系提取 2.3M 0.3M 2.6M
要素描述摘要 1.3M 0.1M 1.4M
社群报告生成 5.0M 0.7M 5.7M
总计 8.6M 1.1M 9.7M

出现问题!同一个人变成了不同的节点

最引人注目的是 SenseiTeacher 被创建成了独立的节点。在当时确认的原始数据中明明没有 Teacher 这种表述,却还是出现在了图谱中。

我们怀疑其原因是按分块提取名称以及翻译的过程。如果在独立处理分块的过程中不强制输出名称,就会出现有时保留原文表述、有时输出翻译名称的情况。不过,由于我们并未回溯这次运行的所有提取提示词(Prompt)和响应,因此并未确认各个节点生成的精确路径。

被分离为Plana和Prana的普拉娜节点

普拉娜(Plana)也被分成了 PlanaPrana。对人类来说这是同一个角色,但在图谱中,关系被分散到了不同的名称上。如果搜索只从一侧节点开始,就有可能漏掉连接到另一侧的信息。

不能单纯假设选择更强的模型就能解决这个问题。因为理解同一个人与在所有分块中输出相同的标识符是两码事。我们将为每个人物设定基准 ID 和别名词典,并将提取出的节点连接到该 ID 的过程定为下一个改进目标。

开始进行 DRIFT

DRIFT (Dynamic Reasoning and Inference with Flexible Traversal)

HIGH5LANDER

节点分裂是个问题,但从知识图谱中找出所需答案的方式本身也很重要。这时就可以利用 DRIFT 搜索。DRIFT 是一种在图谱节点中灵活穿梭并进行查找的方式。它不是搜索一次就结束,而是自己不断提出环环相扣的问题来寻找正确答案。

在接到最初的问题后,它会粗略浏览整个图谱,为了寻找更多需要的信息而创建后续问题。然后根据该问题深入图谱内部,重新探索关系网。这一过程会不断重复,直到收集到足以回答的上下文,最后将收集到的信息合成为最终答案。

那么,让我们来看看应用这种方式提出问题时会产生什么样的结果。

Q. 白子的角色

砂狼白子 · 直接调用
白子在阿拜多斯担任什么角色?

Nexon Games 游戏《碧蓝档案》中的角色砂狼白子在阿拜多斯高中(准确地说是阿拜多斯对策委员会)中所担任的角色主要如下:


1. 官方角色:行动队长及现场战术担当

  • 最前线突击手(Pointman):在对策委员会发生实际战斗时,担任在最前线引领的行动队长(突击队长)角色。
  • 现场指挥:如果说野宫负责资金(部分)支持、绫音负责后方参谋/情报分析、星野作为部长稳住大局的话,白子则是在现场亲自奔波、执行作战的实干派力量的核心

2. 实际/剧情角色:激进解决方案的提出者与引爆剂

  • 提供稀奇古怪且激进的点子(又名“抢银行”):为了偿还阿拜多斯巨额的债务,毫不犹豫地提出并付诸行动诸如“去抢银行吧”等荒唐、激进但直观的解决方案,起到引爆剂的作用。(实际上她是主线剧情第 1 章便利店/银行袭击事件的主谋。)
  • 执行力担当:当其他部员还在苦恼时,拥有率先采取行动的压倒性执行力。

3. 日常角色:主导侦察与体能锻炼

  • 学校周边侦察与搜寻:利用自己的爱好——骑公路自行车(单车),在广阔的阿拜多斯沙漠地带与废墟中进行侦察,并负责感知异常迹象。
  • 部员的运动担当:凭借强健的体魄,兼任类似体育部长的角色,强行(?)要求对策委员会部员进行慢跑或体能锻炼。

总结: 白子是阿拜多斯对策委员会的“现场行动队长”兼战斗核心,以及引发并解决事件的“行动派王牌”角色。

砂狼白子 · GraphRAG
白子在阿拜多斯担任什么角色?

概述

白子(Shiroko)是阿拜多斯高中的学生,也是解决学校危机、守护地区安全的核心组织——阿拜多斯对策委员会(Abydos Foreclosure Task Force / Countermeasures Committee)的核心部员。


详细角色及活动

  1. 对策委员会及学生会核心部员

    • 所属与地位: 白子是阿拜多斯高中的学生,作为在阿拜多斯内部活动的对策委员会核心部员(Core Member)
    • 组织活动: 与绫音(Ayane)、芹香(Serika)等同属于对策委员会及阿拜多斯学生会成员,参与处理学校的现实问题。
  2. 现场应对及治安/战斗战力

    • 危机应对: 当阿拜多斯地区发生枪声及治安威胁时,与野宫(Nonomi)、芹香、绫音等同僚部员以及老师(Sensei)一起立即出动到现场进行应对。
    • 守护同僚与执行作战: 当前辈星野(Hoshino)单独行动或陷入危险时,展开作战以保护并营救星野,执行守护阿拜多斯安全的实战战力角色。

结论

白子在阿拜多斯作为‘对策委员会的核心主导力量’,担负着与同僚学生一起冲在前面、解决地区安全及阿拜多斯高中问题的现场应对角色。


Reference Story Files

  • N/A (知识图谱路径内未单独记载故事文件名)

Q. 优香 100kg

早濑优香 · 直接调用
优香的体重为什么是 100kg?

从结论来说,优香的体重是 100kg 并不是官方设定,而是粉丝社区中诞生的代表性‘梗(Meme)’

实际上优香的身高是 156cm,官方并未公开体重,但从档案来看是一名身材匀称的高中生。这个梗之所以诞生并流行,原因如下:


1. 具有魅力的下半身(大腿)设计

优香的官方插画,尤其是EX 技能过场动画(坐着敲计算器动作)中,大腿被描绘得相当粗壮且健康(丰满)。看到这一幕的粉丝们开始调侃优香的下半身身材,并开玩笑道“质量都集中在下半身了”。

2. 社区的强行梗与‘100kg’这个数字的粘性

在 DC Inside 碧蓝档案 Gallery 等用户社区中,大家分析优香的 EX 技能过场动画和行为时,上传了诸如“优香坐下时会产生冲击波”、“其实比起无人机或护盾,优香更重”等充满恶搞的帖子。此时,朗朗上口的‘100kg’这个象征性的数字便粘了上去,并作为梗固定了下来。

3. 被调侃时的反应(傲娇角色设定)

优香作为千年科学学园的首席会计,虽然是个非常严厉且理性的角色,但她也是对老师(玩家)芳心暗许的“正妻”女主角定位。 当粉丝们调侃她是“100kg”时,优香慌张或生气的反应(傲娇)非常可爱,因此玩家们便更加毫无恶意地(?)像沙包一样调侃她了。

4. 官方(开发商)对梗的接纳

随着这个梗广泛流传,碧蓝档案开发团队(Nexon Games)和官方媒体也对此进行了积极接纳。

  • 官方四格漫画及活动剧情:经常出现优香对体重秤、减肥或体重话题极其敏感的描写。
  • 官方直播:在夏莱商店周边商品或直播等环节中,也会潜移默化地加入让人联想起“优香与 100kg”的搞笑元素。

总结

优香真正的体重大概是 40kg 后半 ~ 50kg 前半的女高生正常体重。‘100kg 优香’是粗壮的大腿设计 + 粉丝们充满爱意的调侃 + 官方对梗的接纳相结合而诞生的碧蓝档案最有人气的梗之一。

早濑优香 · GraphRAG
优香的体重为什么是 100kg?

优香的体重被记录为 100kg 的原因并不是因为实际身体尺寸,而是黑客社团贝里塔斯(Veritas)的部员真纪(Maki)所进行的数据篡改恶作剧


优香体重记录的原因及经过

  1. 初期背景与动机(恶作剧的契机)

    • 对作为研讨会(Seminar)会计担当的优香的干涉感到不满的真纪,决定将优香作为目标进行恶作剧。
  2. 展开过程(黑客入侵学生记录服务器并篡改数据)

    • 真纪主导了黑客攻击行动,侵入了保存有体检结果的学生记录服务器。
    • 通过修改服务器内的数据(Data Manipulation),非法修改了优香的体检体重记录。
  3. 最终结果

    • 优香的体重数值是真纪故意篡改并设定为100kg的数据。

Reference Story Files

  • story_복면_라이더.txt
  • story_제17화.txt
  • story_제26화.txt
  • story_게으른_경찰의_순찰.txt
  • story_당신의_소원은.txt
  • story_도망치는_하늘은_지칠_줄_모르고.txt
  • story_달려라_아야네.txt

实战应用

早濑优香
优香的体重为什么是 100kg?
[GraphRAG Reasoning Trace]
探寻了优香的体重被记录为 100kg 的原因。确认到贝里塔斯的“真纪”对优香的干涉感到不满,从而黑客入侵并篡改了学生记录及体检服务器的数据。
早濑优香听到这个数字的瞬间僵住了。脸色瞬间变得像红苹果一样通红,随即将眉头紧紧皱起,恶狠狠地瞪着你。她手里拿着的平板电脑被重重地拍在桌上的声音在办公室里回荡。
优香 早濑优香
什、什么呀?!你刚才说什么呢?!
她似乎忍无可忍般大口喘着粗气进行反驳。
优香 早濑优香
100kg什么的,这种话在物理上和生物学上听起来像话吗?!比起去年体重虽然稍微增长了一点,但还在正常体重范围内好不好!那个数字分明是贝里塔斯那群家伙恶意散布的虚假情报,居然还有人相信这种事,真是让人无语透顶!

本次实验留下的遗憾

在优香的问题中,我们验证了搜索有助于将原文的具体事件包含在回答中的案例。相反,在白子的提问中,未引用原文,且在反复判定缺乏依据后依然生成了断言性的回答。单凭构建了图谱这一事实,并不能确保回答的可信度。不过,希望这次尝试能成为朝着改进迈出的起点。

直接查看图谱


本项目并非 NEXON Co., Ltd. 的官方项目。