From Local to Global: A GraphRAG Approach to Query-Focused Summarization
Written By. Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, Dasha Metropolitansky, Robert Osazuwa Ness
1. 문제 정의
- 전통적인 RAG는 질의와 의미적으로 가까운 텍스트 조각을 몇 개 뽑아 LLM에 넣는다.
- 이런 방식은 정보가 소수의 레코드에 국소적으로 존재할 때 잘 작동한다.
- 하지만 sensemaking query, 즉 데이터 전체를 관통하는 패턴·관계·구조를 이해해야 하는 질문은 제대로 지원하지 못한다.
1) 기존 RAG의 근본 한계
- vector RAG는 “관련 조각 몇 개 검색”이라는 구조 때문에, 전체 코퍼스에 넓게 퍼져 있는 신호를 한 번에 포착하기 어려움
- 즉, 전체 데이터셋 수준의 전역적 질문(global question) 에는 취약.
2) 기존 QFS의 확장성 한계
반대로 QFS는 전체 문서를 요약하는 데 적합하지만, RAG 시스템이 다루는 대규모 텍스트 양으로 가면 확장성이 떨어짐. 그래서 전역적 이해와 대규모 확장성을 동시에 만족시키는 구조가 필요.
3) 논문의 제안 목표
논문은 이 둘의 장점을 결합하기 위해 GraphRAG를 제안. 핵심 목표는:
- 대규모 텍스트 코퍼스에 대해
- 개별 사실 검색이 아니라
- 전역적 sensemaking / query-focused summarization을 가능하게 하는 것
RAG를 ‘local retrieval’에서 ‘global corpus reasoning’으로 확장하려는 시도
2. 방법론
이 논문의 방법론은 크게 보면 다음 한 문장으로 요약.
문서 전체에서 엔티티-관계 그래프를 만들고, 이 그래프를 커뮤니티 단위로 계층적으로 요약한 뒤, 질의 시 각 커뮤니티 요약으로 부분 답을 만들고 마지막에 이를 다시 합쳐 최종 답을 생성한다.
2.1 전체 파이프라인 개요
GraphRAG 파이프라인은 다음 흐름 :
- Source Documents → Text Chunks
- Text Chunks → Entities & Relationships
- Entities & Relationships → Knowledge Graph
- Knowledge Graph → Graph Communities
- Graph Communities → Community Summaries
- Community Summaries → Community Answers → Global Answer
앞부분은 indexing time에 수행되고, 마지막 단계는 query time에 수행, 질의마다 원문 전체를 다시 읽는 게 아니라, 미리 만들어 둔 그래프 인덱스 + 커뮤니티 요약을 활용.
2.2 Step 1: 문서를 텍스트 청크로 분할
논문은 먼저 문서를 text chunk로 나눔. 이후 LLM은 이 청크를 입력으로 받아 엔티티/관계/클레임을 추출. 여기서 청크 크기는 매우 중요한 설계 변수.
- 청크가 길수록 LLM 호출 수는 줄어 비용이 감소
- 하지만 청크 앞부분 정보 recall이 저하될 수 있음
- 따라서 비용과 정보 회수율 사이의 trade-off가 존재
부록에서는 이와 관련해 self-reflection 기반의 추출 개선을 소개. 청크가 커질수록 엔티티를 덜 뽑는 문제가 있는데, 초안 추출 후 “빠진 엔티티가 있는지”를 다시 LLM에게 점검시키고, 누락되었다면 추가로 glean 하게 만들어 recall을 보완. 이 self-reflection을 여러 번 반복 가능.
2.3 Step 2: 청크에서 엔티티와 관계 추출
이 단계가 GraphRAG의 사실상 핵심.
논문은 각 텍스트 청크에 대해 LLM에게 다음을 추출하도록 프롬프트.
- 중요한 entities
- 이들 사이의 relationships
- 각각에 대한 짧은 설명
프롬프트 구조
부록 E의 시스템 프롬프트를 보면, 엔티티 추출은 다음 순서.
- 엔티티 이름, 타입, 설명 추출
- 엔티티 쌍 중 명확히 관련된 쌍을 골라 관계 설명과 관계 강도 점수 추출
- 이를 구조화된 tuple list로 출력
즉 GraphRAG의 그래프는 단순 co-occurrence graph가 아니라, LLM이 의미적으로 판단한 entity-relation graph.
도메인 적응 가능성
논문은 few-shot exemplar를 바꿔 주면 과학/의학/법률처럼 특정 도메인에 더 적합한 엔티티 타입과 관계를 추출할 수 있다고 설명. 즉, GraphRAG는 generic prompt 기반이지만 domain-tailoring 여지가 큰 구조.
2.4 Step 2-보강: Claim 추출
논문은 엔티티와 관계 외에도 claims를 뽑을 수 있다고 설명. claims는 검증 가능한 사실에 가까운 것.
왜 claim이 중요한가
claim은 나중에 커뮤니티 요약에 포함되어 근거를 제공하고 세부적인 사실을 제공해 퀼리티를 올리는 역할을 함. 논문 후반부에서 empowerment가 상대적으로 약했던 이유 중 하나로, 예시·인용·구체성 보존이 충분치 않았을 수 있다고 해석하는데, 바로 이 claim 추출 품질이 그 한 축.
2.5 Step 3: 추출 결과를 Knowledge Graph로 통합
각 청크에서 추출된 엔티티·관계·클레임은 여러 번 중복 추출 가능. GraphRAG는 이를 모아 지식 그래프를 만듬.
- 엔티티/관계 인스턴스들을 그래프의 node / edge로 만든다.
- 동일 엔티티에 대한 여러 설명을 집계·요약한다.
- 중복 관계는 edge로 집계하고, 중복 수를 edge weight로 반영한다.
- claims도 비슷하게 집계한다.
Entity matching
이 논문 실험에서는 엔티티 매칭에 exact string matching을 사용. 즉, 이름이 완전히 같을 때 같은 엔티티로 봅니다. 매우 보수적인 방식.
다만 저자들은 soft matching도 약간의 프롬프트/코드 수정으로 가능하다고 말하고, 중복 엔티티가 남더라도 이후 커뮤니티 탐지에서 함께 묶일 가능성이 있어 GraphRAG는 이에 비교적 강건하다고 설명.
2.6 Step 4: 그래프를 커뮤니티로 분할
이 논문이 기존 KG-RAG류와 특히 다른 지점은 그래프의 modularity를 적극 활용한다는 점. 저자들은 기존 그래프 기반 RAG가 주로 서브그래프를 prompt에 넣거나, 그래프를 탐색해 retrieval을 보강하는 데 집중했지만, GraphRAG는 그래프를 community hierarchy로 나누는 데 초점을 둔다고 설명.
실제로 이 논문은 Leiden community detection을 사용.
- 그래프를 강하게 연결된 노드 집합들로 분할
- 각 커뮤니티 내부에 대해 다시 재귀적으로 sub-community를 탐지
- leaf community에 도달할 때까지 반복
이렇게 하면 하나의 그래프에 대해 여러 수준의 계층이 생김.
- C0: root-level communities
- C1: high-level sub-communities
- C2: intermediate-level
- C3: low-level communities
왜 community hierarchy가 중요한가
이 구조는 단순 군집화가 아니라,
- 전체 → 큰 주제 → 중간 주제 → 세부 주제라는 요약의 단위를 만들어 줌.
즉, 문서 전체를 한 번에 요약하는 대신:
- 먼저 의미적으로 연결된 것끼리 묶고
- 각 묶음을 요약하고
- 더 큰 묶음을 다시 요약하는
divide-and-conquer summarization이 가능해짐.
2.7 Step 5: Community Summaries 생성
이제 각 커뮤니티에 대해 report-like summary를 만듬. 이 단계가 논문에서 가장 중요한 요약 메커니즘.
논문은 커뮤니티 요약을 단순 짧은 요약이 아니라, 의사결정자를 위한 리포트 형식으로 만듬. 부록 E를 보면 다음 요소를 포함.
- TITLE
- SUMMARY
- IMPACT SEVERITY RATING
- RATING EXPLANATION
- DETAILED FINDINGS (5~10개 통찰)
Leaf-level community summary 생성 방식
leaf community에서는 그 안의 element summary를 우선순위에 따라 LLM context에 넣음. 우선순위는:
- community edge를 기준으로
- source node degree + target node degree가 높은 순서
- 각 edge마다 source node 설명, target node 설명, edge 설명, 관련 claims를 추가
즉, 그래프 내 더 중심적이고 더 많이 연결된 요소를 먼저 반영.
Higher-level community summary 생성 방식
상위 커뮤니티는 두 경우로 나눔.
- 모든 element summary가 context window 안에 들어가면 그대로 요약
- 너무 많아 안 들어가면,
- 하위 커뮤니티를 element-summary 토큰 수 기준으로 정렬
- 긴 element summary 대신 더 짧은 sub-community summary로 치환
- 토큰 한도 안에 들어올 때까지 반복
본질적 의미
요약하면, GraphRAG의 community summary는:
- 문서 chunk 요약이 아니라
- 엔티티/관계/클레임 구조를 기반으로 한 테마 중심 요약
- 그것도 계층적으로 압축된 요약
요약의 단위가 텍스트 청크가이 아니라 의미적 커뮤니티입니다. 이것이 이후 TS(text summarization baseline)와 차이를 만드는 핵심.
2.8 Step 6: 질의 시 community answer를 만들고 global answer로 reduce
질의 시 GraphRAG는 특정 community level(C0~C3 중 하나)을 선택하고, 그 레벨의 community summaries를 이용해 답을 만듬.
과정은 3단계.
(1) Prepare community summaries
community summary들을 무작위로 섞고, 정해진 토큰 크기 청크로 나눔.
논문은 이렇게 해야 관련 정보가 한 context window에만 몰리지 않고 분산되어 lost in the middle 같은 문제를 줄일 수 있다고 봄.
(2) Map: community answers
각 chunk에 대해 병렬로 intermediate answer를 생성.
이때 LLM은 답뿐 아니라 0~100의 helpfulness score도 같이 내도록 합니다.
score가 0인 답은 버림.
(3) Reduce: global answer
남은 intermediate answers를 helpfulness score 내림차순으로 정렬한 뒤,
다시 context window가 허용하는 만큼 넣어 최종 global answer를 생성.
왜 이 구조가 효과적인가
이 구조는 사실상 graph-aware map-reduce summarization.
- Map 단계: 각 커뮤니티가 질의에 대해 무엇을 말하는지 independently 판단
- Reduce 단계: 가장 도움이 되는 community answers를 모아 전체 답 형성
즉, vector RAG처럼 몇 개 chunk만 뽑아 답하는 것이 아니라,
전체 코퍼스의 다양한 의미 공동체를 훑은 뒤 통합 답을 생성.
2.9 GraphRAG의 차별점: 기존 그래프 기반 RAG와 무엇이 다른가
기존 그래프 기반 RAG는 대체로:
- subgraph를 prompt에 넣거나
- graph traversal로 retrieval을 돕거나
- 그래프를 factual grounding 용도로 사용
반면 GraphRAG는:
- 그래프의 modularity
- 그리고 nested communities
- 이를 통한 계층 요약(hierarchical global summarization)
GraphRAG의 핵심은 그래프로 retrieval을 더 잘한다라기보다,
그래프로 코퍼스의 의미적 토픽 구조를 만든 뒤, 그 구조를 따라 요약과 응답을 수행한다는 데 있음.
2.10 평가용 질문 생성 방법도 방법론의 일부
이 논문은 평가 질문 자체도 새롭게 설계. 전통적인 QA benchmark는 explicit fact retrieval 중심이어서 GraphRAG의 강점인 “global sensemaking”을 제대로 못 본다고 판단.
그래서 저자들은 corpus description을 바탕으로:
- potential users persona 생성
- 각 persona의 task 생성
- 각 user-task 조합별로 전체 코퍼스 이해가 필요한 질문 생성
이라는 절차를 사용.
실험에서는 K=N=M=5로 설정해 데이터셋당 총 125개 질문을 만듬.
즉, 논문은 모델만 제안한 게 아니라, global RAG를 어떻게 평가할지도 함께 제안.
3. 실험
논문 실험은 크게 Experiment 1과 Experiment 2로 나눔.
3.1 Experiment 1: LLM-as-a-judge 기반 비교 평가
데이터셋
논문은 약 백만 토큰 규모의 두 코퍼스를 사용.
1) Podcast transcripts
- Microsoft CTO Kevin Scott의 “Behind the Tech” 팟캐스트 공개 transcript
- 1669개 chunk
- 각 chunk 600 tokens, 100-token overlap
- 총 약 100만 토큰
2) News articles
- 2013년 9월~2023년 12월 뉴스 기사 벤치마크
- entertainment, business, sports, technology, health, science 등 포함
- 3197개 chunk
- 각 chunk 600 tokens, 100-token overlap
- 총 약 170만 토큰
비교 조건
총 6개 조건을 비교.
- C0: root-level community summaries
- C1: high-level community summaries
- C2: intermediate-level community summaries
- C3: low-level community summaries
- TS: community summary 없이 source text 자체를 map-reduce로 요약
- SS: vector RAG semantic search baseline
즉, 단순 baseline vs proposed뿐 아니라, GraphRAG 내부에서도 어느 계층 수준의 요약이 가장 좋은지를 비교.
설정
- community summary, community answer, global answer 모두 8k context window
- Podcast 데이터셋 인덱싱은 600-token window 기준 281분
- VM 사양: 16GB RAM, Xeon Platinum 8171M 2.60GHz
- 모델: gpt-4-turbo
- community detection은 graspologic 기반 Leiden 사용
왜 8k context를 썼는가
부록 C에 따르면 8k, 16k, 32k, 64k를 시험했는데, 의외로 8k가 comprehensiveness에서 가장 좋았고, diversity와 empowerment도 큰 차이가 없었음. 그래서 최종적으로 8k를 채택.
평가 질문 생성
앞서 말했듯 데이터셋 설명을 바탕으로 persona와 task를 생성하고, 각 조합마다 high-level question을 만듬. 데이터셋당 125문항입니다.
평가 지표
LLM이 두 답변을 head-to-head로 비교. 기준은 4개.
- Comprehensiveness: 질문의 여러 측면을 얼마나 넓고 자세히 다루는가
- Diversity: 얼마나 다양한 관점과 통찰을 제공하는가
- Empowerment: 독자가 이해하고 판단하는 데 얼마나 도움을 주는가
- Directness: 질문에 얼마나 직접적이고 명확하게 답하는가
특히 directness는 일종의 control metric. 저자들은 directness가 comprehensiveness/diversity와 어느 정도 상충한다고 봤고, 그래서 모든 지표를 다 이기는 방법은 없을 것이라고 예상.
3.2 Experiment 2: Claim-based 자동 검증
저자들은 Experiment 1이 LLM-as-a-judge 기반이라, 이를 보강하기 위해 claim-based metric을 추가.
절차
- 각 답변에서 factual claim을 추출
- 중복 제거 후 claims를 분석
- 총 47,075개 unique claims, 답변당 평균 31개 claim 추출
지표
- Comprehensiveness
- 답변에서 추출된 claim 수의 평균
- Diversity
- claim들을 군집화한 뒤 cluster 수의 평균
군집화 방식
- Scikit-learn agglomerative clustering
- complete linkage
- distance = 1 - ROUGE-L
- threshold는 여러 값(0.5, 0.6, 0.7, 0.8)에서 보고
이 실험은 LLM이 좋다고 판단한 답이 실제로도 더 많은 사실과 더 다양한 내용 단위를 포함하는가?를 확인하는 성격.
4. 결과
4.1 먼저 그래프 인덱스 규모
인덱싱 결과:
- Podcast graph: 8,564 nodes / 20,691 edges
- News graph: 15,754 nodes / 19,520 edges
4.2 가장 중요한 결과: GraphRAG는 vector RAG보다 더 포괄적이고 더 다양하다
모든 global approach(C0~C3, TS 포함)가 vector RAG(SS)보다 comprehensiveness와 diversity에서 유의하게 우수.
Podcast transcripts
- comprehensiveness win rate: 72~83%, p<.001
- diversity win rate: 75~82%, p<.001
News articles
- comprehensiveness win rate: 72~80%, p<.001
- diversity win rate: 62~71%, p<.01
저자들의 핵심 가설인 global sensemaking에는 local retrieval보다 graph-based global summarization이 더 적합하다를 강하게 지지합니다.
4.3 그러나 Directness는 vector RAG가 더 낫다
논문은 vector RAG가 전 비교에서 가장 직접적인 답을 생성한다고 말함.
이건 자연스러운 결과.
- vector RAG는 관련된 몇 개 조각만 보고 짧고 바로 답하기 쉬움
- GraphRAG는 여러 community의 관점과 패턴을 통합하다 보니 더 길고 풍부해짐
즉, GraphRAG는 넓고 다양한 답을 잘하지만, 그만큼 간결함/직접성은 손해를 볼 수 있음.
이건 실전에서도 중요한 트레이드오프.
- factoid QA에는 vector RAG가 더 적합할 수 있음
- corpus-wide analysis나 research assistant에는 GraphRAG가 더 적합
4.4 Empowerment는 혼합 결과
Empowerment는 일관되지 않았음.
저자들은 그 원인으로, empowerment 평가에서 구체적 예시, 인용, citation을 제공하는 능력이 중요하게 작용했다고 분석. 즉, 단순히 넓고 다양하게 말하는 것만으로는 충분치 않고, 사용자가 “판단할 수 있게” 해 주려면 세부 근거 표현이 중요하다는 것.
이건 GraphRAG의 약점이라기보다, 인덱싱 과정에서 요약되며 일부 구체성이 손실될 수 있음을 시사.
4.5 GraphRAG vs 텍스트 직접 요약(TS)
해당 실험을 통해 성능 향상이 단순히 global summarization 덕분인지, 아니면 graph structure 덕분인지를 분리해 보려고함.
논문 결과에 따르면:
- community summary 기반 GraphRAG는
- source text를 직접 map-reduce하는 TS보다
- 대체로 작지만 일관된 개선을 보임.
- 단, C0(root summaries) 는 예외적으로 성능 손실이 일부 있었음.
4.6 비용/확장성 측면에서 매우 중요한 결과
Podcast tokens
- C0: 26,657
- C1: 225,756
- C2: 565,720
- C3: 746,100
- TS: 1,014,611
News tokens
- C0: 39,770
- C1: 352,641
- C2: 980,898
- C3: 1,140,266
- TS: 1,707,694
즉,
- C3조차 TS보다 26~33% 적은 토큰
- C0는 TS보다 97% 이상 적은 토큰을 사용
논문은 특히 C0 root-level summaries가 성능은 약간 떨어지더라도, 반복적인 sensemaking 질의에 매우 효율적이라고 강조.
실무에서 같은 데이터셋에 대해 여러 차례 질문하는 경우, GraphRAG는 초기에 인덱싱 비용이 들더라도 이후 질의 비용을 크게 줄일 수 있음.
4.7 Claim-based 검증 결과도 대체로 일치
Comprehensiveness (평균 claim 수)
두 데이터셋 모두 global methods(C0~C3, TS)가 SS보다 더 많은 claim을 담음.
Diversity (claim cluster 수)
거의 모든 threshold에서 global methods가 SS보다 높은 cluster 수를 보임. 특히 Podcast에서는 전반적으로 SS보다 확실히 우수했고, News에서는 C0가 가장 안정적으로 좋았음.
또한 저자들은 pairwise comparison에서 LLM 판단과 claim-based label이:
- comprehensiveness는 78%
- diversity는 69~70%
정도 일치한다고 보고. 즉, LLM judge 결과가 완전히 임의적이지 않고, claim 수준 통계와도 꽤 맞아떨어진다는 뜻.
5. 이 논문을 어떻게 이해하면 좋은가
1) RAG의 검색 단위를 바꿨다
기존 RAG는 query와 비슷한 text chunk를 찾음. GraphRAG는 “코퍼스를 구성하는 entity-relation-community 구조”를 만든 뒤, 그 구조를 따라 요약하고 답.
2) global question에 맞는 아키텍처를 제안했다
이 논문은 사실상 모든 RAG 질문이 retrieval 문제는 아니다라는 점을 구조적으로 보여줌. 전체 추세, 주요 주제, 상반된 관점, 전반적 구조를 묻는 질문은 검색이 아니라 전역 요약 문제.
3) graph의 진짜 역할은 retrieval 보강이 아니라 thematic partitioning이다
GraphRAG에서 graph는 단순 path finding이나 neighbor retrieval 용도가 아님. 핵심은 modularity를 이용해 토픽 구조를 드러내고, 그 구조를 따라 요약을 계층화하는 것.
4) 성능 향상만이 아니라 비용 구조도 좋다
특히 루트 수준 요약(C0)은 성능을 어느 정도 유지하면서 query-time token cost를 극적으로 줄임.
6. 이 논문의 한계도 같이 봐야 한다
논문 자체도 한계를 인정.
- 평가가 두 개의 약 100만 토큰급 코퍼스에 집중됨
- 도메인 일반화는 더 확인 필요
- hallucination/fabrication rate 비교가 더 있으면 좋음
추가로 다음 해석도 가능할듯?
한계 1: 인덱싱 비용이 작지 않다
Podcast 데이터셋 인덱싱에 281분이 걸림. 질의가 아주 많지 않다면 초기 비용이 부담일 수 있음.
한계 2: entity extraction 품질 의존성이 크다
chunking, entity matching, claim extraction 품질이 나쁘면 downstream community quality가 흔들릴 수 있음.
한계 3: directness가 약해질 수 있다
실전에서 “짧고 바로 답하라”는 UX에는 vector RAG가 더 자연스러울 수 있어 적용할 서비스나 상품의 특성들을 반드시 고려해야함.
7. 한 줄 결론
이 논문은 RAG를 문서 조각 검색 시스템이 아니라, 코퍼스 전체의 의미 구조를 계층적으로 요약하는 시스템으로 바꾸자는 제안. 그리고 실험상 GraphRAG는 실제로 vector RAG보다 더 포괄적이고 더 다양한 답변을 만들어 냈으며, 특히 전역적 분석 질문에서 강점을 보임.