지식그래프란 무엇인가: 벡터 검색이 못 잇는 것

지식그래프(knowledge graph)는 세상의 사물(개체)과 그 사이의 관계를 점과 선으로 적어 둔 자료다. 지식그래프는 GraphRAG 의 하위 개념이 아니다. GraphRAG 는 LLM 이 문서에서 뽑아낸 지식그래프를 재료로 쓰는 방식이다. 벡터 검색은 질문과 닮은 글 조각을 찾아 오지만 조각 사이의 선은 찾지 못하고, GraphRAG 는 그 선을 미리 만들어 둔다.

글자는 같은데 사물은 다르다

왼쪽 패널 '글자 뭉치': taj mahal 검색창 아래로 같은 글자가 박힌 결과 카드 넷이 쌓여 있고 아이콘만 돔 건물·기타·슬롯머신·식당으로 다르다. 오른쪽 패널 '사물과 관계': 검색창 없이 Monument·Guitarist·Casino 카드 셋이 점선으로 서로 이어지고, Monument 에서 Location·Booking 위성으로 선이 뻗는다

검색창에 "taj mahal"을 치면 같은 글자가 박힌 결과가 줄줄이 뜬다. 그런데 하나는 건축물이고, 하나는 음악가고, 또 하나는 카지노 이름이다. 그런 카드가 그림 왼쪽에 넷 쌓여 있다. 글자 뭉치는 카드마다 똑같고 아이콘만 다른데, 카드끼리 잇는 선은 없다.

검색은 오랫동안 질문에 낱말을 맞추는 일이었고, 검색엔진에게 taj mahal 은 그저 두 낱말이었다. 구글은 2012년 지식그래프를 소개하며 낱말 자리에 무엇을 놓았는지 이렇게 적었다.

an intelligent model—in geek-speak, a “graph”—that understands real-world entities and their relationships to one another: things, not strings. 실제 세계의 개체와 그 관계를 이해하는 모델. 낱말이 아니라 사물이다.

출처: 구글 공식 블로그

그림 오른쪽에는 검색창이 없다. 사물 카드 셋만 남고 카드에서 카드로 선이 뻗는다. 지식그래프(knowledge graph)가 이 모양이다. 세상의 사물을 점으로, 사물끼리의 관계를 선으로 적어 둔 자료다. 여기서 그래프는 함수 그래프가 아니라 점과 선으로 된 그림이다.

이 이름이 널리 퍼진 것은 2012년이지만 적는 방식은 그보다 앞서 있었다. 웹에서 무엇에 대한 무엇인지를 기계가 읽게 적는 표준이 1999년에 이미 나와 있었다. 웹 표준 단체 W3C 의 권고 RDF(Resource Description Framework)다. 그 권고문은 RDF 를 기계가 이해할 정보를 주고받기 위한 바탕이라고 적는다. 구글 글은 이 표준을 언급하지 않는다. 두 사실이 나란히 있을 뿐, 한쪽이 다른 쪽을 낳았다는 이야기가 아니다.

트리플 — 문장 하나에 이름 붙이기

점과 선이라고 했지만 이 자료는 문장으로 적는다. 앞 절의 RDF 가 그 문장의 표준 틀이고, 그 모양은 RDF 프라이머가 적어 둔다. 문장 하나는 언제나 <subject> <predicate> <object>, 곧 주어·술어·목적어 세 칸이다. 양 끝은 이어지는 두 사물이고, 가운데가 그 사이를 말한다. 요소가 셋이라 이 문장을 트리플(triple)이라 부른다.

개체는 카드, 관계는 이름표 붙은 선 Bob 개체 Alice person 부류 the Mona Lisa Leonardo da Vinci is a friend of is a is interested in was created by
그림 1. 개체는 카드, 관계는 이름표 붙은 선 — 강조된 선 하나가 트리플 하나다

그림 1은 프라이머의 예제 여섯 문장 중 넷을 편 그림이다. 카드 다섯이 사물이고, 그 사이의 선 넷에 이름표가 붙어 있다. 이 카드를 개체(entity)라고 부른다. 이름으로 가리킬 수 있으면 사람이든 그림이든 개체다. 선은 관계(relation)이고, 트리플의 술어 자리에 오는 것이 이 선이다.

그림에서 앰버로 강조된 선 하나를 떼어 적으면 트리플 하나가 된다. Bob · is interested in · the Mona Lisa. 왼쪽이 주어, 가운데가 술어, 오른쪽이 목적어이며, 이 한 문장이 그림의 선 하나다. 거꾸로 트리플을 여럿 모으면 주어·목적어 자리의 것이 점이 되고, 술어 자리의 것이 선이 된다.

식별자 — 이름 대신 번호

그런데 점에 붙은 이름이 문제를 다시 일으킨다. Mona Lisa 라고만 적으면 그림인지 그것을 다룬 영상인지 알 수 없고, 사람 이름은 같은 것이 수두룩하다. 처음 장면으로 돌아온 셈이다.

위키백과를 뒷받침하는 Wikidata 는 이 문제를 번호로 푼다. 개체마다 Q 로 시작하는 번호를, 관계마다 P 로 시작하는 번호를 붙인다. 공식 소개 페이지가 든 예가 아래 표다.

자리 번호 가리키는 것
Item(개체) Q42 Douglas Adams
Property(관계) P69 educated at
Value(값) Q691283 St John’s College

세 칸이 모여 앞 절의 트리플과 같은 한 문장이 된다. Q42 가 주어, P69 가 술어, Q691283 이 목적어다.

이름이 같아도 번호가 다르면 다른 사물이고, 언어가 달라도 번호는 하나다. 이렇게 개체와 관계를 이름 대신 가리키는 번호를 식별자(identifier)라고 부른다. 낱말이 아니라 사물이라는 말의 실체가 여기 있다.

이 번호와 선은 저절로 생기지 않는다. Wikidata 는 스스로를 여러 사람이 함께 채우는 다국어 지식 베이스라고 소개한다. 그러니까 이 그래프의 점과 선은 사람이 함께 적어 넣은 것이다. 소개 페이지는 자동 봇도 자료를 넣는다고 덧붙이는데, 그 봇을 만들고 돌리는 것도 사람이다.

질문 하나가 선을 따라 답이 될 때

이름을 다 붙였으니 써 볼 차례다. 질문 하나를 지식그래프에 던지면 무슨 일이 일어나는가. Wikidata 소개 페이지의 예시 표를 순서로 풀면 다섯 단계가 나온다. 문서가 단계로 적어 둔 것은 아니다. 그림 2이 그 길이다. 앰버 선 두 개가 질문에서 Q42 를 거쳐 Q691283 까지 가고, 회색 선은 Q42 에 붙은 다른 관계 — 이번 질문은 그 선을 고르지 않는다.

질문이 지나가는 길 질문 어디서 공부했나? Douglas Adams Q42 St John’s College Q691283 다른 값 개체 다른 관계의 선 개체 찾기 educated at · P69 고르지 않은 관계
그림 2. 질문이 지나가는 길 — 앰버 선이 고른 관계, 회색 선은 고르지 않은 관계
  1. 질문을 받는다. "더글러스 애덤스는 어디서 공부했나?"
  2. 이름을 개체로 바꾼다. 더글러스 애덤스를 개체 번호로 옮기면 Q42 다.
  3. 묻는 관계를 고른다. 어디서 공부했는지는 educated at, 번호는 P69 다.
  4. 그 선을 따라 건너간다. Q42 에서 P69 선을 고르면 반대편 끝에 Q691283 이 있다.
  5. 값의 이름을 돌려준다. Q691283 의 이름 St John’s College 가 답이다.

다섯 단계 중 네 번째만 성격이 다르다. 앞뒤 단계는 이름과 번호를 맞바꾸는 일이고, 답이 만들어지는 곳은 선을 건너가는 한 걸음이다. 자료가 점과 선이어서 가능한 일이다.

벡터 검색이 못 잇는 질문

여기까지가 지식그래프를 적고 읽는 방법이다. 그런데 이 오래된 자료가 요즘 AI 이야기에 다시 나오는 데는 이유가 있다. 출발점은 RAG 다.

RAG(retrieval-augmented generation)는 LLM 이 답을 쓰기 전에 바깥 자료를 찾아 와 참고하게 하는 방법이다. 모델이 학습 때 본 것만으로 답하지 않고, 내 문서 더미에서 관련된 대목을 먼저 꺼내 와 보고 답을 쓴다. 이 말은 2020년에 나온 한 논문에서 왔다.

그러면 그 대목은 어떻게 고를까. 다음 절에서 볼 GraphRAG 공식 문서는 대부분의 RAG 가 벡터 검색을 쓴다고 적는다. 벡터 검색은 글을 조각으로 잘라 두고 질문과 뜻이 가까운 조각을 찾아 온다. 낱말이 겹치지 않아도 뜻이 비슷하면 걸린다.

같은 문서가 이 방식이 힘들어하는 자리 두 곳을 든다. 하나는 흩어진 조각을 이어야 답이 되는 질문이다. 필요한 사실이 이 문서에 한 줄, 저 문서에 한 줄 나뉘어 있어서, 조각들이 공유하는 속성을 따라 건너다녀야 답이 나온다. 다른 하나는 자료를 통째로 봐야 하는 질문이다. GraphRAG 논문이 든 예처럼 "이 문서 더미에서 주로 무슨 이야기가 오가나" 같은 물음에는 조각 몇 개로 답이 되지 않는다.

두 자리의 공통점은 하나다. 벡터 검색은 질문과 닮은 조각을 찾아 주지만, 어느 조각이 어느 조각과 이어져 있는지는 찾아 주지 않는다. 앞 절의 그래프에는 선이 있었고, 조각 더미에는 선이 없다.

GraphRAG — 그래프를 다시 쓰는 이유

GraphRAG 는 그 선을 문서에서 미리 만들어 두는 방식이다. 공식 문서는 이를 원문 조각을 그대로 꺼내 쓰는 방식과 달리 구조를 세워 층으로 다루는 RAG 라고 설명한다.

GraphRAG 가 색인을 만드는 순서 1 문서 원문 조각 2 개체·관계 뽑기 LLM 이 읽는다 3 가까운 것끼리 묶기 커뮤니티 4 묶음마다 요약 여러 층위
그림 3. ① 문서 → ② 개체·관계 뽑기 → ③ 가까운 것끼리 묶기 → ④ 묶음마다 요약

그림 3가 그 색인 순서다. 둘째 칸에서 LLM 이 원문을 읽어 개체와 관계를 뽑아낸다. 앞에서 사람이 손으로 적던 트리플을 여기서는 모델이 적는다. 지식그래프가 태어나는 칸이 여기다. 셋째 칸은 서로 촘촘히 이어진 개체들을 한 묶음(커뮤니티)으로 모으고, 넷째 칸은 질문이 오기 전에 묶음마다 요약을 미리 써 둔다. 공식 문서는 이 요약을 여러 층위로 만들고 원문 글도 뜻으로 찾을 수 있게 따로 저장한다고 적는다 — 벡터 검색이 그래프 옆에 함께 남는 셈이다.

뽑은 개체가 묶음이 된다 묶음 1 묶음 2 카모마일 진정 작용 허브차 라벤더 수면 has used as helps related
그림 4. 뽑은 개체가 묶음이 된다 — 상자 하나가 한 묶음, 상자를 가로지르는 선은 묶음 사이의 관계

그림 4가 셋째 칸의 모양이다. 점선 상자가 어디까지 한 묶음인지 그어 주고, 상자 밖으로 뻗은 선 하나는 묶음과 묶음을 잇는 관계다. 카드의 이름은 공식 문서가 예로 든 카모마일을 빌린 것이다.

여기서 관계를 분명히 해 둔다. 지식그래프는 GraphRAG 의 하위 개념이 아니라, GraphRAG 가 쓰는 재료다. 순서가 반대다. 그래프가 먼저 있었고, GraphRAG 는 그 그래프를 사람 대신 LLM 에게 뽑게 한 다음 그것을 타고 답을 모으는 RAG 방식이다. 재료가 갖춰지면 질문이 두 갈래로 갈린다.

질문의 두 갈래 질문 무엇을 묻나 특정 개체를 묻는다 그래프 이웃 + 원문 조각 Local 자료 전체를 묻는다 묶음 요약을 모아 답 Global
그림 5.

그림 5의 위 갈래가 로컬 검색이다. 공식 문서에 따르면 뽑아 둔 그래프에서 그 개체의 이웃을 모으고 원문 조각을 붙여 답한다. 카모마일의 치유 성질처럼 특정 개체를 묻는 질문이 여기 든다.

아래 갈래가 글로벌 검색이다. 미리 써 둔 묶음 요약을 전부 훑어 부분 답을 만들고, 그것들을 다시 합쳐 답을 낸다. 자료 전체를 봐야 하는 질문이 여기 든다. 문서는 이 방식이 자원을 많이 쓴다고 함께 적는다. GraphRAG 논문은 자료 전체를 향한 질문에서 답의 포괄성과 다양성이 보통의 RAG 보다 올라갔다고 보고한다.

손으로 채운 그래프, LLM 이 뽑은 그래프

같은 지식그래프라도 누가 채웠느냐에 따라 성격이 갈린다. 앞의 Wikidata 와 GraphRAG 를 나란히 놓으면 이렇다.

누가 채우나 무엇에 답하나 무엇을 치르나
손으로 채운 그래프(Wikidata 형) 사람이 함께 적어 넣는다(봇도 쓴다) 개체·관계가 정해진 질문 — 같은 이름의 다른 사물 가르기, 선 따라가기 채우는 손이 있어야 한다
LLM 이 뽑은 그래프(GraphRAG 형) LLM 이 원문을 읽고 뽑는다 흩어진 조각을 이어야 하는 질문, 자료 전체를 향한 질문 색인에 모델 호출이 많고, 전체 질문은 답할 때도 자원을 쓴다

마지막 열이 늦게 눈에 들어온다. GraphRAG 공식 문서의 시작 안내가 이 대목에 경고를 달아 둔다.

GraphRAG can consume a lot of LLM resources! GraphRAG 는 LLM 자원을 많이 쓸 수 있다.

출처: Microsoft GraphRAG 공식 문서

문서는 이어서 튜토리얼용 자료로 먼저 익히고 큰 색인 작업 전에 값싸고 빠른 모델로 시험해 보라고 적는다. 색인할 때 문서 전체에서 개체와 관계와 요약을 뽑으니 모델을 부르는 횟수가 많다. 자료 전체를 향한 질문은 답할 때도 요약을 두루 훑는다. 둘 중 하나를 고르라는 이야기가 아니라, 무엇에 답하려는지에 따라 치르는 것이 다르다는 이야기다.

이제 이 말은 안다

  • 지식그래프는 사물을 점으로, 관계를 선으로 적어 둔 자료다 — 낱말이 아니라 사물이다.
  • 그 낱 문장이 트리플이고, 세 칸 중 양 끝이 개체이며 가운데가 관계다. 점과 선은 이름 대신 번호로 가리키는데, 그 번호가 식별자다.
  • GraphRAG 는 지식그래프의 상위 개념이 아니다. 지식그래프가 그 재료이고, 재료를 사람 대신 LLM 이 뽑는다.
  • LLM 이 뽑은 그래프를 쓰면 흩어진 조각을 잇는 질문과 자료 전체를 향한 질문에 답할 수 있고, 대신 그래프를 채우는 일을 치른다. 사람의 일이거나 모델 호출이다.
이 편의 지도 지식그래프 점과 선 유래 1999 RDF 2012 구글 적는 방식 개체·관계 트리플 식별자 AI 에서 RAG 벡터 검색 GraphRAG 치르는 것 사람의 일 모델 호출
그림 6. 이 편의 지도 — 가지 넷, 잎은 이 편에 나온 말

그림 6에 이 편에 나온 말을 한 장에 모았다.

용어 한 줄 뜻 그림 어디에
지식그래프 사물과 관계를 점과 선으로 적어 둔 자료 히어로 오른쪽 패널 · 지도 그림 중심
개체 그래프의 점. 이름으로 가리킬 수 있는 사물 이름표 그림의 카드
관계 점을 잇는 선. 두 사물의 사이를 말한다 이름표 그림의 선
트리플 주어·술어·목적어 세 칸으로 된 낱 문장 이름표 그림의 강조된 선 한 줄
식별자 이름 대신 개체·관계를 가리키는 번호 길 그림의 Q42·P69·Q691283
RAG 답하기 전에 바깥 자료를 찾아 와 참고하게 하는 방법 지도 그림 ‘AI 에서’ 가지
벡터 검색 질문과 뜻이 가까운 글 조각을 찾아 오는 검색 지도 그림 ‘AI 에서’ 가지
GraphRAG LLM 이 뽑은 지식그래프로 답을 모으는 RAG 방식 색인 도식과 갈래 도식

더 읽기