
让我们在《碧蓝档案》MomoTalk中应用GraphRAG
Project: Strawberry Milk
当向游戏剧情提问时,我希望能制作一个能将人物与事件联系起来进行回答的 MomoTalk。之前我曾用 AutoRAG 搜索过《鸣潮》的剧情,但在充分收集分散在多个场景中的关系方面仍有遗憾。这次,我将范围扩大到了《碧蓝档案》的主线剧情和 MomoTalk,并应用了 GraphRAG.
正如白子的角色定位那样,诸如询问基本设定、需要将多位人物经历过的事件串联起来的提问,以及容易将粉丝梗与原作事实混淆的提问,它也能回答吗?
- 白子在阿拜多斯担任什么角色?
- 优香的体重为什么是 100kg?
在实验中,暴露出同一人物被拆分为多个节点、以及重复后续提问也不会增加依据的问题。之后,我还增加了在不进行搜索的情况下将相同问题直接发送给 Gemini 的对比。虽然在寻找原文中事件(如优香体重记录被篡改)方面存在差异,但仅凭这三个案例,并不能说明 GraphRAG 总是更好。下面我们将结合回答与日志,看看我们制作了什么,又在哪里遇到了瓶颈。
GraphRAG
Microsoft GraphRAG 从文档中提取人物、组织、事件等要素及其关系,将其构建为知识图谱与社群摘要以用于搜索。其核心在于将原文块与图谱信息作为回答的上下文提供。

在游戏剧情中,同一人物会出现在多个剧集中,关系也会发生变化。因此,我们期待除了寻找语义相似的段落之外,利用人物与事件之间的联系能更容易地收集相关场景。不过,向量搜索的结果也会根据分块(Chunk)构成、查询分解和重排(Rerank)而有所不同。本文并未进行与普通向量 RAG 的性能对比。
数据与索引成本
我们将剧情整理如下:
为了快速确认运行情况,我们随机挑选了整体约 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 |
出现问题!同一个人变成了不同的节点
最引人注目的是 Sensei 和 Teacher 被创建成了独立的节点。在当时确认的原始数据中明明没有 Teacher 这种表述,却还是出现在了图谱中。
我们怀疑其原因是按分块提取名称以及翻译的过程。如果在独立处理分块的过程中不强制输出名称,就会出现有时保留原文表述、有时输出翻译名称的情况。不过,由于我们并未回溯这次运行的所有提取提示词(Prompt)和响应,因此并未确认各个节点生成的精确路径。

普拉娜(Plana)也被分成了 Plana 和 Prana。对人类来说这是同一个角色,但在图谱中,关系被分散到了不同的名称上。如果搜索只从一侧节点开始,就有可能漏掉连接到另一侧的信息。
不能单纯假设选择更强的模型就能解决这个问题。因为理解同一个人与在所有分块中输出相同的标识符是两码事。我们将为每个人物设定基准 ID 和别名词典,并将提取出的节点连接到该 ID 的过程定为下一个改进目标。
开始进行 DRIFT
DRIFT (Dynamic Reasoning and Inference with Flexible Traversal)
节点分裂是个问题,但从知识图谱中找出所需答案的方式本身也很重要。这时就可以利用 DRIFT 搜索。DRIFT 是一种在图谱节点中灵活穿梭并进行查找的方式。它不是搜索一次就结束,而是自己不断提出环环相扣的问题来寻找正确答案。
在接到最初的问题后,它会粗略浏览整个图谱,为了寻找更多需要的信息而创建后续问题。然后根据该问题深入图谱内部,重新探索关系网。这一过程会不断重复,直到收集到足以回答的上下文,最后将收集到的信息合成为最终答案。
那么,让我们来看看应用这种方式提出问题时会产生什么样的结果。
Q. 白子的角色
Nexon Games 游戏《碧蓝档案》中的角色砂狼白子在阿拜多斯高中(准确地说是阿拜多斯对策委员会)中所担任的角色主要如下:
1. 官方角色:行动队长及现场战术担当
- 最前线突击手(Pointman):在对策委员会发生实际战斗时,担任在最前线引领的行动队长(突击队长)角色。
- 现场指挥:如果说野宫负责资金(部分)支持、绫音负责后方参谋/情报分析、星野作为部长稳住大局的话,白子则是在现场亲自奔波、执行作战的实干派力量的核心。
2. 实际/剧情角色:激进解决方案的提出者与引爆剂
- 提供稀奇古怪且激进的点子(又名“抢银行”):为了偿还阿拜多斯巨额的债务,毫不犹豫地提出并付诸行动诸如“去抢银行吧”等荒唐、激进但直观的解决方案,起到引爆剂的作用。(实际上她是主线剧情第 1 章便利店/银行袭击事件的主谋。)
- 执行力担当:当其他部员还在苦恼时,拥有率先采取行动的压倒性执行力。
3. 日常角色:主导侦察与体能锻炼
- 学校周边侦察与搜寻:利用自己的爱好——骑公路自行车(单车),在广阔的阿拜多斯沙漠地带与废墟中进行侦察,并负责感知异常迹象。
- 部员的运动担当:凭借强健的体魄,兼任类似体育部长的角色,强行(?)要求对策委员会部员进行慢跑或体能锻炼。
总结: 白子是阿拜多斯对策委员会的“现场行动队长”兼战斗核心,以及引发并解决事件的“行动派王牌”角色。
概述
白子(Shiroko)是阿拜多斯高中的学生,也是解决学校危机、守护地区安全的核心组织——阿拜多斯对策委员会(Abydos Foreclosure Task Force / Countermeasures Committee)的核心部员。
详细角色及活动
对策委员会及学生会核心部员
- 所属与地位: 白子是阿拜多斯高中的学生,作为在阿拜多斯内部活动的对策委员会核心部员(Core Member)。
- 组织活动: 与绫音(Ayane)、芹香(Serika)等同属于对策委员会及阿拜多斯学生会成员,参与处理学校的现实问题。
现场应对及治安/战斗战力
- 危机应对: 当阿拜多斯地区发生枪声及治安威胁时,与野宫(Nonomi)、芹香、绫音等同僚部员以及老师(Sensei)一起立即出动到现场进行应对。
- 守护同僚与执行作战: 当前辈星野(Hoshino)单独行动或陷入危险时,展开作战以保护并营救星野,执行守护阿拜多斯安全的实战战力角色。
结论
白子在阿拜多斯作为‘对策委员会的核心主导力量’,担负着与同僚学生一起冲在前面、解决地区安全及阿拜多斯高中问题的现场应对角色。
Reference Story Files
- N/A (知识图谱路径内未单独记载故事文件名)
Q. 优香 100kg
从结论来说,优香的体重是 100kg 并不是官方设定,而是粉丝社区中诞生的代表性‘梗(Meme)’。
实际上优香的身高是 156cm,官方并未公开体重,但从档案来看是一名身材匀称的高中生。这个梗之所以诞生并流行,原因如下:
1. 具有魅力的下半身(大腿)设计
优香的官方插画,尤其是EX 技能过场动画(坐着敲计算器动作)中,大腿被描绘得相当粗壮且健康(丰满)。看到这一幕的粉丝们开始调侃优香的下半身身材,并开玩笑道“质量都集中在下半身了”。
2. 社区的强行梗与‘100kg’这个数字的粘性
在 DC Inside 碧蓝档案 Gallery 等用户社区中,大家分析优香的 EX 技能过场动画和行为时,上传了诸如“优香坐下时会产生冲击波”、“其实比起无人机或护盾,优香更重”等充满恶搞的帖子。此时,朗朗上口的‘100kg’这个象征性的数字便粘了上去,并作为梗固定了下来。
3. 被调侃时的反应(傲娇角色设定)
优香作为千年科学学园的首席会计,虽然是个非常严厉且理性的角色,但她也是对老师(玩家)芳心暗许的“正妻”女主角定位。 当粉丝们调侃她是“100kg”时,优香慌张或生气的反应(傲娇)非常可爱,因此玩家们便更加毫无恶意地(?)像沙包一样调侃她了。
4. 官方(开发商)对梗的接纳
随着这个梗广泛流传,碧蓝档案开发团队(Nexon Games)和官方媒体也对此进行了积极接纳。
- 官方四格漫画及活动剧情:经常出现优香对体重秤、减肥或体重话题极其敏感的描写。
- 官方直播:在夏莱商店周边商品或直播等环节中,也会潜移默化地加入让人联想起“优香与 100kg”的搞笑元素。
总结
优香真正的体重大概是 40kg 后半 ~ 50kg 前半的女高生正常体重。‘100kg 优香’是粗壮的大腿设计 + 粉丝们充满爱意的调侃 + 官方对梗的接纳相结合而诞生的碧蓝档案最有人气的梗之一。
优香的体重被记录为 100kg 的原因并不是因为实际身体尺寸,而是黑客社团贝里塔斯(Veritas)的部员真纪(Maki)所进行的数据篡改恶作剧。
优香体重记录的原因及经过
初期背景与动机(恶作剧的契机)
- 对作为研讨会(Seminar)会计担当的优香的干涉感到不满的真纪,决定将优香作为目标进行恶作剧。
展开过程(黑客入侵学生记录服务器并篡改数据)
- 真纪主导了黑客攻击行动,侵入了保存有体检结果的学生记录服务器。
- 通过修改服务器内的数据(Data Manipulation),非法修改了优香的体检体重记录。
最终结果
- 优香的体重数值是真纪故意篡改并设定为100kg的数据。
Reference Story Files
- story_복면_라이더.txt
- story_제17화.txt
- story_제26화.txt
- story_게으른_경찰의_순찰.txt
- story_당신의_소원은.txt
- story_도망치는_하늘은_지칠_줄_모르고.txt
- story_달려라_아야네.txt
实战应用
探寻了优香的体重被记录为 100kg 的原因。确认到贝里塔斯的“真纪”对优香的干涉感到不满,从而黑客入侵并篡改了学生记录及体检服务器的数据。
早濑优香
早濑优香
本次实验留下的遗憾
在优香的问题中,我们验证了搜索有助于将原文的具体事件包含在回答中的案例。相反,在白子的提问中,未引用原文,且在反复判定缺乏依据后依然生成了断言性的回答。单凭构建了图谱这一事实,并不能确保回答的可信度。不过,希望这次尝试能成为朝着改进迈出的起点。
直接查看图谱
本项目并非 NEXON Co., Ltd. 的官方项目。