블루 아카이브 모모톡에 GraphRAG를 적용해보자

Project: Strawberry Milk

게임 스토리에 질문하면, 인물과 사건을 연결해 답하는 모모톡을 만들고 싶었습니다. 전에는 '명조: 워더링 웨이브' 스토리를 AutoRAG로 검색해 봤지만, 여러 장면에 흩어진 관계를 충분히 모으는 데 아쉬움이 있었습니다. 이번에는 블루 아카이브의 메인 스토리와 모모톡으로 범위를 바꿔 GraphRAG를 적용했습니다.

시로코의 역할처럼 기본 설정을 묻는 질문, 여러 인물이 겪은 사건을 묶어야 하는 질문, 그리고 팬덤의 밈과 작중 사실이 섞이기 쉬운 질문에도 답할 수 있을까요?

  • 시로코가 아비도스에서 맡고 있는 역할은 무엇인가?
  • 유우카의 몸무게는 왜 100kg인가?

실험에서는 같은 인물이 여러 노드로 갈라지고, 후속 질문을 반복해도 근거가 늘지 않는 문제가 드러났습니다. 이후 검색 없이 같은 질문을 Gemini에 직접 보내는 비교도 추가했습니다. 유우카의 체중 기록 조작처럼 원문에 있는 사건을 찾는 데에는 차이가 있었지만, 이 세 사례만으로 GraphRAG가 항상 더 낫다고 말할 수는 없었습니다. 아래에서는 무엇을 만들었고, 어디서 막혔는지 답변과 로그를 함께 살펴봅니다.

GraphRAG

Microsoft GraphRAG는 문서에서 인물·조직·사건 등의 요소와 관계를 추출하고, 이를 지식 그래프와 커뮤니티 요약으로 구성해 검색에 활용합니다. 원문 청크와 그래프 정보를 답변의 맥락으로 제공한다는 점이 핵심입니다.

GraphRAG의 커뮤니티 구조

Microsoft: GraphRAG의 시각화 예시. 색깔은 커뮤니티를, 큰 묶음과 작은 묶음은 서로 다른 수준의 구조를 보여줍니다.

게임 스토리는 같은 인물이 여러 에피소드에 등장하고 관계도 변합니다. 그래서 의미가 비슷한 문단을 찾는 것에 더해, 인물과 사건의 연결을 이용하면 관련 장면을 모으기 쉬울 것이라 기대했습니다. 다만 벡터 검색도 청크 구성, 질의 분해, 재정렬에 따라 결과가 달라집니다. 이 글에서는 일반 벡터 RAG와의 성능 비교까지 수행하지 않았습니다.

데이터와 색인 비용

스토리들을 다음과 같이 정리했습니다.

md
제목: RABBIT 4, 은신합니다.
대사:
미유: 아…… 선생님…….
미유: 어, 어서 오세요. 기다리고 있었어요.
선생님: ……괜찮아? / 뭔가 행인들에게 엄청나게 치이고 있던데.
...
미유: 선생님과 있을 때는 조금 안심이 돼요……

빠르게 동작을 확인하기 위해 전체의 약 10%를 무작위로 골라 색인했습니다. 무작위 선택이 모든 인물이나 사건을 고르게 포함한다는 보장은 없습니다. 따라서 답변이 부족할 때에는 검색 실패뿐 아니라 필요한 원문이 처음부터 색인에 없었을 가능성도 구분해야 합니다.

색인에는 gemma-4-31b-it, 임베딩에는 gemini-embedding-2를 사용했습니다. 아래는 당시 기록한 색인 토큰량이며, 뒤에서 측정하는 질문별 응답 토큰과는 별개입니다.

과정 입력 출력 합계
요소·관계 추출 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라는 표기가 없었는데도 그래프에 등장했습니다.

원인으로 의심한 것은 청크별 명칭 추출과 번역 과정입니다. 청크를 독립적으로 처리하면서 출력 명칭을 강제하지 않으면, 같은 인물을 원문 표기로 남기기도 하고 번역한 이름으로 출력하기도 합니다. 다만 이 실행의 모든 추출 프롬프트와 응답을 역추적한 것은 아니므로, 개별 노드가 생성된 정확한 경로까지 확인한 것은 아닙니다.

Plana와 Prana로 분리된 프라나 노드

프라나도 PlanaPrana로 나뉘었습니다. 사람에게는 같은 캐릭터로 보이지만, 그래프에서는 서로 다른 이름에 관계가 분산됩니다. 검색이 한쪽 노드에서만 시작하면 다른 쪽에 연결된 정보를 놓칠 수 있습니다.

이 문제는 더 강한 모델을 선택하는 것만으로 해결된다고 가정하기 어렵습니다. 같은 인물임을 이해하는 것과 모든 청크에서 같은 식별자를 출력하는 것은 별도의 문제이기 때문입니다. 인물별 기준 ID와 별칭 사전을 두고, 추출된 노드를 그 ID에 연결하는 과정을 다음 개선 대상으로 잡았습니다.

드리프트 해봅시다

DRIFT (Dynamic Reasoning and Inference with Flexible Traversal)

HIGH5LANDER

노드가 갈라지는 문제도 문제지만, 지식 그래프에서 원하는 답을 찾아내는 방식 자체도 중요합니다. 이때 활용하는 게 DRIFT 검색입니다. DRIFT는 그래프의 노드를 유연하게 타고 이동하며 찾아가는 방식입니다. 한 번 검색하고 끝나는 게 아니라, 스스로 꼬리에 꼬리를 무는 질문을 만들어내며 정답을 찾아갑니다.

처음 질문을 받으면 전체 그래프를 쓱 살펴보고, 더 필요한 정보를 찾기 위해 후속 질문을 만듭니다. 그 질문을 바탕으로 그래프 깊숙이 들어가 관계망을 다시 탐색하죠. 답변할 수 있을 만큼 맥락이 충분히 모일 때까지 이 과정을 반복한 뒤, 모인 정보들을 하나로 합쳐서 최종 답변을 만듭니다.

그럼 이 방식을 적용해서 질문을 던졌을 때 어떤 결과가 나오는지 확인해보겠습니다.

Q. 시로코의 역할

스나오오카미 시로코 · 직접 호출
시로코가 아비도스에서 맡고 있는 역할은 무엇인가?

넥슨게임즈의 게임 《블루 아카이브》의 캐릭터 스나오오카미 시로코가 아비도스 고등학교(정확히는 아비도스 대책위원회)에서 맡고 있는 역할은 크게 다음과 같습니다.


1. 공식적인 역할: 행동대장 및 현장 전술 담당

  • 최전선 돌격수 (포인트맨): 대책위원회에서 실전 전투가 발생했을 때 최전선에서 리드하는 행동대장(돌격대장) 역할을 맡고 있습니다.
  • 현장 지휘: 노노미가 자금(일부) 지원, 아야네가 후방 참모/정보 분석, 호시노가 부장으로서 중심을 잡는다면, 시로코는 현장에서 직접 발로 뛰며 작전을 수행하는 실동대 파워의 핵심입니다.

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'이라는 숫자의 입착성

디시인사이드 블루 아카이브 갤러리 등 유저 커뮤니티에서 유우카의 EX 스킬 컷신이나 행동을 분석하며 "유우카가 앉을 때 충격파가 일어난다", "사실 드론이나 쉴드보다 유우카가 더 무겁다" 같은 장난스러운 글들이 올라왔습니다. 이때 찰지게 입에 붙는 **'100kg'**이라는 상징적인 숫자가 붙으면서 밈으로 고착화되었습니다.

3. 놀렸을 때의 반응(츤데레 캐릭터성)

유우카는 밀레니엄 사이언스 스쿨의 수석 회계로서 매우 깐깐하고 이성적인 캐릭터지만, 선생님(유저)에게 마음이 있는 '정실' 히로인 위치에 있습니다. 팬들이 "100kg"이라고 놀렸을 때 유우카가 당황하거나 화를 내는 반응(츤데레)이 매우 귀엽기 때문에, 유저들이 더욱 악의 없이(?) 샌드백처럼 놀리게 되었습니다.

4. 공식(개발사)의 밈 수용

이 밈이 널리 퍼지자 블루 아카이브 개발진(넥슨게임즈)과 공식 미디어에서도 이를 적극적으로 수용했습니다.

  • 공식 4컷 만화 및 이벤트 스토리: 유우카가 체중계나 다이어트, 몸무게 이야기에 극도로 민감하게 반응하는 묘사가 자주 등장합니다.
  • 공식 방송: 샬레 스토어 상품이나 방송 등에서도 '유우카와 100kg'을 은근히 연상시키는 개그 요소를 넣기도 했습니다.

요약

유우카의 진짜 몸무게는 40kg대 후반 ~ 50kg대 초반의 정상적인 여고생 몸무게일 가능성이 높습니다. '100kg 유우카'는 두꺼운 허벅지 디자인 + 팬들의 애정 어린 놀림 + 공식의 밈 수용이 합쳐져 만들어진 블루 아카이브 최고의 인기 밈 중 하나입니다.

하야세 유우카 · GraphRAG
유우카의 몸무게는 왜 100kg인가?

유우카의 몸무게가 100kg으로 기록된 이유는 실제 신체 치수가 아니라, 해킹 동아리 베리타스(Veritas)의 부원 **마키(Maki)**가 벌인 데이터 조작 장난 때문입니다.


유우카 몸무게 기록의 원인 및 경과

  1. 초기 배경 및 동기 (장난의 계기)

    • 세미나의 회계 담당인 유우카의 간섭에 불만을 느낀 마키는 유우카를 표적으로 삼아 장난을 치기로 결심했습니다.
  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.의 공식 프로젝트가 아닙니다.