jacobhan.me

인공지능 · 검색 아키텍처

GraphRAG, 관계로 검색하는 인공지능

단어의 유사도가 아니라 사실들 사이의 관계를 따라 답을 찾는 검색증강생성

2026년 6월 · 읽는 데 약 14분

대규모 언어 모델(Large Language Model, 대규모 언어 모델·이하 LLM)을 업무에 붙여 본 사람이라면 한 번쯤 같은 벽에 부딪힌다. 모델은 학습하지 않은 사내 문서나 최신 자료에 대해서는 그럴듯하지만 틀린 답을 지어낸다. 이 문제를 풀기 위해 가장 널리 쓰이는 방법이 검색증강생성(Retrieval-Augmented Generation·이하 RAG)이다. 그런데 RAG를 실제로 운영하다 보면, 답에 필요한 단서가 분명히 문서 안에 있는데도 모델이 그것을 찾아오지 못하는 상황이 반복된다. 그 한계를 정면으로 겨냥한 접근이 바로 GraphRAG다. 이 글은 RAG가 왜 한계에 부딪히는지, 지식 그래프(Knowledge Graph)가 그 빈틈을 어떻게 메우는지, 그리고 GraphRAG가 어떤 구조로 작동하는지를 비전공자도 따라올 수 있게 정리한다.

01출발점: RAG는 어떻게 작동하는가

RAG의 원리는 단순하다. 사용자가 질문을 던지면, 시스템은 먼저 그 질문과 가장 관련 있는 문서 조각을 찾아온다. 그리고 찾아온 문서 조각과 원래 질문을 함께 묶어 LLM에 전달한다. 모델은 자기 기억이 아니라 눈앞에 주어진 근거를 보고 답을 만든다. 검색(Retrieval)으로 근거를 보강(Augmentation)한 뒤 생성(Generation)한다는 세 단어가 그대로 이름이 되었다.

이 시스템을 만들려면 문서를 미리 검색 가능한 형태로 가공해 두어야 한다. 보통 네 단계를 거친다. 먼저 원본 데이터를 불러오고(적재), 긴 문서를 일정 크기로 잘게 쪼갠다(분할). 이렇게 나뉜 조각을 흔히 청크(chunk)라 부른다. 각 청크는 의미를 숫자 배열로 바꾸는 임베딩(embedding) 과정을 거쳐 벡터(vector)가 되고, 이 벡터들을 저장한 공간이 벡터 데이터베이스(Vector Database)다. 질문이 들어오면 질문 역시 같은 방식으로 벡터로 바뀌고, 시스템은 질문 벡터와 가장 가까운 청크들을 골라낸다. '가깝다'는 것은 곧 '의미가 비슷하다'는 뜻이다.

문서 적재 ·분할(청크) 임베딩 의미→숫자 벡터 DB 저장 질문 유사도 검색 Top-K 청크 LLM 답변 생성 질문+근거
벡터 RAG: 문서를 청크로 쪼개 숫자(벡터)로 저장하고, 질문과 의미가 가까운 청크를 골라 LLM에 함께 넘긴다.
비유로 이해하기

벡터 검색은 거대한 도서관에서 사서에게 "이 질문과 느낌이 비슷한 책을 몇 권 골라 와 달라"고 부탁하는 것과 같다. 사서는 제목과 분위기가 닮은 책을 빠르게 가져온다. 문제는, 정답이 여러 책에 흩어진 단서를 이어 붙여야 나오는 경우다. 분위기로만 고르면 정작 연결고리가 되는 책을 빠뜨릴 수 있다.

02일반 RAG의 두 가지 구멍

벡터 RAG가 실패하는 지점은 대개 두 곳이다. 둘 다 '청크로 쪼개 유사도로만 골라온다'는 설계에서 비롯된다.

구멍 1. 청킹이 문맥을 끊는다

긴 문서를 일정 길이로 자르다 보면, 한 문장의 조건과 그 예외가 서로 다른 청크로 갈라지는 일이 생긴다. 예를 들어 어느 통신사 요금 약관이 이렇게 세 조각으로 나뉘었다고 하자.

청크 ①: 멤버십 회원은 데이터 추가 요금이 면제된다. 청크 ②: 단, 해외 로밍 데이터는 면제 대상에서 제외한다. 청크 ③: 2026년 이후 가입자에게 본 약관이 적용된다.

이제 "멤버십 회원이 해외 로밍을 쓰면 추가 요금이 면제되는가"라고 물어보자. 유사도 검색이 청크 ①만 가져오면, 모델은 "회원은 면제된다"는 문장만 보고 자신 있게 "면제됩니다"라고 답한다. 그러나 ②번 조각의 예외 조항을 함께 보지 못했기 때문에 그 답은 틀렸다. 분할 과정에서 본의 아니게 조건과 예외가 떨어져 나가면, 검색은 반쪽짜리 문맥만 모델에 넘기게 된다.

구멍 2. Top-K가 연결고리를 빠뜨린다

벡터 RAG는 가장 비슷한 청크를 K개만 가져온다(이를 Top-K 검색이라 한다). K를 2로 두었다면 청크 두 개가 딸려 온다. 그런데 답이 여러 사실을 다리처럼 이어야 나오는 질문이라면, 정작 그 다리 역할을 하는 중간 사실이 K 바깥으로 밀려날 수 있다.

약물 상호작용 설명서가 다음 세 문장으로 흩어져 있다고 하자.

"약물 가와 나를 함께 복용하면 위험한가"라는 질문에, 유사도 점수가 높은 A와 C만 검색되면 모델은 둘을 잇는 B를 보지 못한다. '가가 효소를 막으면 → 나가 분해되지 못해 쌓이고 → 그래서 위험해진다'는 사슬에서 가운데 고리가 빠진 것이다. 사람에게는 당연한 추론이지만, 중간 사실을 받지 못한 모델로서는 "두 약의 직접적 관계는 확인되지 않는다"고 답할 수밖에 없다.

약물 가 A · 검색됨 효소 B · 누락 약물 나 C · 검색됨 억제 분해 가운데 고리가 빠지면 사슬 추론이 끊긴다
A와 C는 질문과 의미가 비슷해 검색되지만, 둘을 잇는 B는 유사도가 낮아 누락되기 쉽다.

이 두 구멍을 메우려는 시도에서 여러 변형이 나왔다. 검색한 뒤 다시 순위를 매기는 재정렬(re-ranking), 의미 유사도와 키워드 빈도를 함께 보는 하이브리드 검색, 인공지능 에이전트가 스스로 검색 전략을 짜는 에이전트형 RAG 등이다. GraphRAG는 그 계보에서, 데이터를 아예 관계의 지도로 다시 짜서 검색하는 쪽을 택한 접근이다.

03지식 그래프란 무엇인가

GraphRAG의 토대는 지식 그래프(Knowledge Graph)다. 지식 그래프는 세 가지 부품으로 이루어진다. 노드(node)는 대상이나 개념을 가리키는 점이고, 엣지(edge)는 두 노드를 잇는 선으로 그 사이의 관계를 나타낸다. 속성(property)은 노드나 엣지에 매다는 상세 정보다.

거칠게 말하면 문장에서 명사는 노드가 되고 동사는 엣지가 된다. "약물 가는 CYP3A4를 억제한다"라는 문장은 '약물 가'라는 노드와 'CYP3A4'라는 노드를, '억제한다'라는 엣지로 이은 형태로 그려진다. 여기에 '약물 가는 항진균제다' 같은 부가 정보는 노드의 속성으로, '이 관계는 약물 설명서 3쪽에서 나왔다' 같은 출처는 엣지의 속성으로 붙는다. 이렇게 문장을 노드·엣지·속성으로 환원해 두면, 흩어져 있던 사실들이 하나의 연결된 그물이 된다.

억제한다 분해한다 높인다 약물 가 CYP3A4 (간 효소) 약물 나 부정맥 위험 속성(약물 가) 분류: 항진균제
약물 설명서의 흩어진 문장이 하나의 지식 그래프로 묶인 모습. '약물 가 → CYP3A4 → 약물 나 → 부정맥 위험'이라는 경로가 눈에 보인다.
비유로 이해하기

지식 그래프는 지하철 노선도와 같다. 역이 노드, 역과 역을 잇는 노선이 엣지다. "강남에서 홍대까지 어떻게 가나"라는 질문에, 노선도는 환승역을 거쳐 가는 경로 자체를 보여 준다. 벡터 검색이 "강남 근처 역들"과 "홍대 근처 역들"을 따로 집어 오는 데 그친다면, 그래프 검색은 두 역을 잇는 환승 경로를 끝까지 따라간다. 앞서 빠졌던 '가운데 고리'가 바로 이 환승역에 해당한다.

04GraphRAG는 어떻게 작동하는가

GraphRAG는 벡터 RAG의 세 단계를 그래프 버전으로 바꾼 것이라 보면 된다. 첫째, 인덱싱 단계에서 원본 텍스트로부터 노드와 엣지를 뽑아 지식 그래프를 구축한다. 이 추출은 보통 LLM이 맡는다. 사람이 모든 관계를 손으로 적는 대신, 모델에게 "이 문장에서 개체와 그 관계를 뽑아 달라"고 시키는 것이다. 둘째, 질문이 들어오면 관련 노드에서 출발해 엣지를 따라 그래프를 순회(traversal)하며 연결된 사실들을 함께 끌어모은다. 셋째, 이렇게 모은 부분 그래프를 근거로 LLM이 최종 답을 생성한다.

약물 예시로 돌아가면, "가와 나를 함께 먹으면 위험한가"라는 질문에 GraphRAG는 '약물 가' 노드에서 시작해 '억제한다' 엣지로 'CYP3A4'에 닿고, 다시 '분해한다' 엣지로 '약물 나'에, 또 '높인다' 엣지로 '부정맥 위험'에 이른다. 중간 고리가 누락되지 않으므로, 모델은 '가가 효소를 막아 나가 쌓이고 부정맥 위험이 커진다'는 사슬을 온전히 받아 답할 수 있다.

한 가지 덤이 더 있다. 각 노드와 엣지에 출처를 속성으로 매달아 두면, 답변이 어느 문서의 어느 대목에서 나왔는지 되짚을 수 있다. 이를 출처 추적(provenance)이라 하며, 답을 신뢰하고 검증해야 하는 기업·의료·법무 현장에서 특히 가치가 크다.

05이미 우리 곁에 있던 기술

지식 그래프는 새 개념이 아니다. 가장 친숙한 사례가 구글 검색이다. 구글은 2012년에 지식 그래프를 도입해, 인물이나 건축물을 검색하면 화면 오른쪽에 정보 상자를 띄운다. 에펠탑을 검색하면 위치·높이·완공 연도·건축가가 한눈에 정리되어 나오는 그 상자다. 이것은 '에펠탑'이라는 노드에 연결된 다른 노드들을 관계와 함께 보여 주는, 전형적인 지식 그래프 서비스다. 방대한 데이터를 미리 관계로 엮어 두었기에 검색 즉시 관련 정보가 딸려 나온다.

기업용 분야에서는 데이터 분석 기업 팔란티어(Palantir)의 온톨로지(Ontology)가 비슷한 발상을 보여 준다. 온톨로지는 흩어진 데이터를 의미 있게 연결하고 해석하기 위한 일종의 개념 지도이며, 지식 그래프는 그 개념 지도를 구현하는 대표적 방법 중 하나다. 데이터를 단순히 쌓아 두는 것이 아니라, 무엇이 무엇과 어떤 관계인지를 살아 있는 형태로 다루려는 흐름이 인공지능 에이전트 시대에 다시 주목받고 있다.

06마이크로소프트 GraphRAG의 구조

GraphRAG라는 이름을 널리 알린 것은 마이크로소프트 리서치(Microsoft Research)가 2024년에 발표하고 같은 해 7월 오픈소스로 공개한 구현이다. 이 구현은 세 가지 처리 단계를 거친다. 먼저 LLM이 특화된 프롬프트로 텍스트에서 개체(entity)를 추출하고, 동시 출현 분석과 의미 유사도를 활용해 개체 사이의 관계를 엮는다. 그다음이 이 구현의 핵심으로, 커뮤니티 탐지(community detection)를 수행한다. 라이덴 알고리즘(Leiden algorithm)이라는 그래프 군집화 기법으로 서로 빽빽하게 연결된 노드 무리를 '커뮤니티'로 묶고, 각 커뮤니티마다 요약문을 만든다.

이 계층적 요약 덕분에 두 종류의 질문에 모두 대응할 수 있다. "약물 가의 부작용은?" 같은 국소(local) 질문에는 해당 개체 주변의 그래프를 본다. 반면 "이 문서 전체에서 가장 자주 거론된 위험 요인은 무엇인가?" 같은 전역(global) 질문에는 개별 청크가 아니라 커뮤니티 요약을 모아 답한다. 일반 RAG가 전통적으로 약했던, 데이터 전체를 조망하는 질문에서 특히 효과를 보인다.

다만 마이크로소프트도 명시적으로 경고하는 약점이 있다. 그래프를 처음 구축하는 인덱싱 과정은 LLM을 대량으로 호출하므로 비용과 시간이 만만치 않다. 이 부담을 줄이려 인덱싱 비용을 크게 낮춘 LazyGraphRAG 같은 변형도 나와 있다. 그래프를 한 번 만드는 값이 비싸다는 점은 GraphRAG를 도입할지 가를 때 가장 먼저 따져야 할 현실적 변수다.

07벡터 RAG와 GraphRAG, 무엇을 택할까

둘은 경쟁 관계라기보다 강점이 다른 도구다.

항목벡터 RAGGraphRAG
검색 방식의미 유사도(가까운 청크)관계 순회(이어진 사실)
다중 홉 추론중간 고리 누락에 취약경로를 따라가 강함
전역적 요약 질문청크 단위라 약함커뮤니티 요약으로 대응
출처 추적청크 단위로 가능노드·엣지 단위로 정밀
구축 비용·난이도상대적으로 낮음그래프 인덱싱이 비쌈
대규모 데이터 검색 지연데이터가 커질수록 부담 증가관계가 미리 잡혀 비교적 완만

그래서 실무에서는 둘 중 하나를 버리기보다 함께 두는 경우가 많다. 단순한 사실 조회는 벡터 RAG로 빠르게 처리하고, 여러 사실을 엮어야 하거나 전체를 조망해야 하는 질문은 GraphRAG로 넘기는 식의 상호 보완이다. GraphRAG가 더 정교하다고 해서 모든 상황에서 우월한 것은 아니며, 데이터 성격과 질문 유형, 그리고 감당할 수 있는 구축 비용에 따라 조합이 달라진다.

08그래프 데이터베이스와 질의 언어

GraphRAG를 운영하려면 지식 그래프를 저장하고 빠르게 탐색할 그래프 데이터베이스(Graph Database)가 필요하다. 벡터 RAG에 파인콘·크로마 같은 벡터 데이터베이스가 있듯, 그래프 쪽에도 선택지가 있다. 가장 널리 쓰이는 것이 Neo4j이고, 아마존이 제공하는 Amazon Neptune, 표준 기반의 GraphDB, 대규모 분산 분석에 강한 TigerGraph 등이 흔히 거론된다.

데이터 모델은 크게 두 갈래다. 하나는 자원 기술 프레임워크(Resource Description Framework·이하 RDF)에 기반한 트리플 스토어(triple store)로, 모든 사실을 '주어-술어-목적어'의 세 토막(트리플)으로 표현한다. 다른 하나는 라벨 속성 그래프(Labeled Property Graph·이하 LPG)로, 노드와 엣지에 직접 속성을 매다는 방식이며 Neo4j가 대표적이다. 질의 언어도 갈린다. RDF 계열은 SPARQL을, LPG 계열은 사이퍼(Cypher)를 쓴다. 관계형 데이터베이스를 SQL로 다루듯, 그래프는 이 언어들로 "어느 노드에서 시작해 어떤 엣지를 따라가라"는 식의 경로 탐색을 지시한다.

09거품을 지나, 실질로

시장 조사 기관 마켓츠앤마켓츠(MarketsandMarkets)의 추정에 따르면 지식 그래프 시장은 2024년 약 10억 6천만 달러에서 2030년 약 69억 달러로 커지며, 연평균 성장률(Compound Annual Growth Rate·이하 CAGR)은 36.6%에 이를 것으로 전망된다. 기관마다 수치 편차는 있지만, 생성형 인공지능 확산과 함께 관계 기반 데이터 구조의 수요가 빠르게 늘고 있다는 방향성은 공통적이다.

새로운 기술은 초기에 과도한 기대로 부풀었다가 실망을 거쳐 비로소 실질적 성장 국면에 들어선다. 지식 그래프는 2010년대 검색 인프라로 이미 검증을 거쳤고, 이제 인공지능 에이전트에 신뢰할 수 있는 맥락을 공급하는 부품으로 다시 호명되고 있다. 화려한 수식보다 중요한 것은 적용 판단이다. 단순 조회가 대부분인 시스템이라면 벡터 RAG로 충분하고, 답이 여러 사실의 연결에서 나오거나 데이터 전체를 조망해야 하는 시스템이라면 그래프를 한 겹 얹을 값어치가 있다. GraphRAG가 답하는 질문은 결국 하나다. 흩어진 사실들 사이의 관계를, 검색이 놓치지 않게 하려면 어떻게 해야 하는가.