GraphRAG: 벡터 RAG의 한계를 그래프로 메우다 — local vs global
들어가며
이 글은 Agentic Knowledge Graph Curriculum의 5단계입니다. 1단계에서 벡터 DB가 “의미가 비슷한 조각”은 잘 찾지만 연결에는 약하다는 점을 짚었고, 4단계에서 LLM으로 그래프를 짓는 법을 익혔습니다. 이 글은 그 둘을 잇습니다 — 지은 그래프를 검색에 결합해 벡터 RAG의 빈틈을 메우는 GraphRAG입니다.
RAG(Retrieval-Augmented Generation)는 이제 LLM 애플리케이션의 기본기입니다. 문서를 임베딩으로 저장하고, 질문과 의미가 가까운 조각을 찾아 LLM에 넘겨 답하게 합니다. 그런데 이 벡터 RAG가 자꾸 헛발질하는 두 종류의 질문이 있습니다 — 여러 사실을 연결해야 답이 나오는 다중 홉 질문, 그리고 “이 코퍼스 전체를 관통하는 핵심은?” 같은 전역 질문입니다. GraphRAG는 정확히 이 두 빈틈을 겨냥합니다.
📌 이 글에서 다루는 내용
- 벡터 RAG의 한계: 다중 홉·전역·설명가능성에서 top-k 의미 검색이 놓치는 것, 왜 “조각을 잘 찾는 것”만으로는 부족한가
- GraphRAG 아키텍처: 문서→그래프 인덱싱, community detection으로 주제 클러스터 만들기, 요약을 미리 굽기, local search와 global search의 차이
- 하이브리드·트레이드오프: 벡터와 그래프를 함께 쓰는 하이브리드 검색, 인덱싱 비용·지연·정확도의 균형, 언제 GraphRAG가 값을 하는가
한눈에 보기 — 인덱싱과 쿼리, 두 단계
GraphRAG는 두 단계로 이해하면 명료합니다. 인덱싱은 무겁지만 한 번만(그래프를 짓고 커뮤니티 요약을 미리 굽습니다), 쿼리는 그 위에서 질문의 크기에 따라 두 갈래로 답합니다.
flowchart TD
subgraph INDEX["인덱싱 — 한 번, 무겁게"]
D["문서 코퍼스"] --> EX["LLM 추출<br/>(4단계)"]
EX --> KG["지식 그래프"]
KG --> COMM["community detection<br/>주제 클러스터로 묶기"]
COMM --> SUM["커뮤니티 요약<br/>미리 굽기"]
end
subgraph QUERY["쿼리 — 질문의 크기에 따라"]
Q["질문"] --> ROUTE{"지역 vs 전역?"}
ROUTE -->|"특정 개체 중심"| LOCAL["local search<br/>노드 이웃 + 관련 텍스트"]
ROUTE -->|"코퍼스 전체"| GLOBAL["global search<br/>커뮤니티 요약 map-reduce"]
end
SUM -.->|"미리 구운 요약을 쓴다"| GLOBAL
KG -.->|"그래프를 탐색"| LOCAL
이 그림의 좌표는 하나입니다 — GraphRAG의 힘은 “커뮤니티 요약을 미리 구워 둔다”는 것입니다. 덕분에 벡터 RAG가 못 하던 전역 질문에, 질의 시점에 코퍼스 전체를 다시 읽지 않고도 답할 수 있습니다.
벡터 RAG의 한계 — 조각을 잘 찾는 것만으로는
벡터 RAG의 동작을 한 줄로 요약하면 “질문과 의미가 가까운 조각(top-k)을 찾아 LLM에 넘긴다”입니다. 이 방식이 구조적으로 약한 지점이 셋 있습니다.
- 다중 홉 질문: “우리 회사에 투자한 VC가 투자한 다른 회사 중 우리 경쟁사는?” — 답이 한 문단에 있지 않고 여러 사실(투자 관계 → 다른 투자처 → 경쟁 여부)을 연결해야 나옵니다. 의미가 비슷한 조각을 아무리 모아도, 벡터 검색은 그 연결을 스스로 잇지 못합니다.
- 전역(global) 질문: “이 문서 코퍼스 전체를 관통하는 핵심 리스크 다섯 가지는?” — top-k는 코퍼스의 일부 조각만 볼 뿐, 전체를 조망해 종합하지 못합니다. k를 아무리 키워도 컨텍스트 창을 넘습니다.
- 설명가능성: “왜 이 답인가”가 벡터 거리로만 남습니다. 근거를 경로로 제시하지 못합니다.
공통 원인은 하나입니다 — 벡터 RAG에는 개체와 개체 사이의 명시적 구조가 없습니다. 조각들은 서로 독립적인 점일 뿐, 그들이 어떻게 연결되는지·전체가 어떤 주제로 뭉치는지를 모릅니다. GraphRAG는 바로 그 구조를 그래프로 복원합니다.
GraphRAG 아키텍처 — 그래프에 구조를 새기다
Microsoft가 2024년 공개한 GraphRAG가 이 접근의 대표 구현입니다. 핵심은 인덱싱 단계에서 코퍼스에 구조를 미리 새겨 두는 것입니다.
인덱싱 — 그래프와 커뮤니티 요약
- 엔티티·관계 추출: 4단계의 LLM 추출로 문서에서 개체와 관계를 뽑아 지식 그래프를 짓습니다.
- community detection: 그래프에서 서로 촘촘히 연결된 노드 묶음(커뮤니티, 곧 주제 클러스터)을 찾습니다. Leiden 같은 알고리즘이 그래프를 계층적 주제 그룹으로 분할합니다 — “이 코퍼스에는 규제 관련 주제, 제품 관련 주제, 인사 관련 주제가 있다”처럼.
- 커뮤니티 요약: 각 커뮤니티를 LLM으로 요약해 미리 구워 둡니다. 이 요약이 전역 질문의 재료가 됩니다.
이 인덱싱은 무겁습니다(코퍼스 전체를 LLM에 통과시키고 요약까지 생성). 하지만 한 번 구워 두면, 질의 시점의 비용이 극적으로 낮아집니다.
쿼리 — local과 global
인덱싱이 끝나면 두 종류의 검색이 가능합니다.
- local search(지역 검색): 질문이 특정 개체를 중심으로 할 때. 그 노드의 이웃(연결된 개체·관계)과 관련 원문 조각을 함께 모아 LLM에 넘깁니다. 다중 홉 질문 — “X와 연결된 Y를 거쳐 Z를…” — 이 여기서 풀립니다. 벡터 RAG가 못 하던 연결을 그래프가 이어 줍니다.
- global search(전역 검색): 질문이 코퍼스 전체를 조망할 때. 미리 구운 커뮤니티 요약들을 map-reduce로 종합합니다 — 각 요약이 질문에 부분 답변을 내고(map), 그것을 하나로 합칩니다(reduce). “코퍼스 전체의 핵심 주제는?”이 여기서 답해집니다. (예: 사내 위키 전체에 대해 “우리 팀들이 반복적으로 부딪히는 리스크는?”을 물으면, 팀별 커뮤니티 요약이 각자 리스크를 내고 종합됩니다.)
하이브리드와 트레이드오프 — 언제 값을 하는가
벡터 + 그래프 하이브리드
GraphRAG는 벡터 RAG의 대체가 아니라 보완입니다. 실전에서는 둘을 함께 씁니다 — 벡터 검색으로 질문과 관련된 진입 개체를 찾아 그래프에 들어가고(vector로 seed), 그래프 탐색으로 연결을 따라가 답을 완성합니다. local search 자체가 이미 “그래프 이웃 + 관련 텍스트 조각”을 섞는 하이브리드입니다. 순수 의미 유사도가 중요한 단순 Q&A는 여전히 벡터 RAG가 더 싸고 빠릅니다.
비용·지연·정확도
GraphRAG의 값은 공짜가 아닙니다.
- 인덱싱 비용: 코퍼스 전체를 LLM으로 추출·요약하므로 초기 비용·시간이 큽니다. 코퍼스가 자주 바뀌면 재인덱싱 부담이 커집니다(7단계의 증분 갱신이 이 문제를 다룹니다).
- 정확도 향상: 대신 다중 홉·전역 질문의 답변 품질과 근거 제시 능력이 크게 오릅니다.
- 선택 기준: 질문이 연결·종합을 요구하고, 코퍼스가 상대적으로 안정적일 때 GraphRAG가 값을 합니다. 질문이 단순 조각 검색이고 최신성이 절대적이면 벡터 RAG로 충분합니다.
정리하면 — “연결이 답인 질문이 자주 나오는가”가 GraphRAG 도입의 판단 기준입니다. 1단계에서 세운 그 성질이 여기서 다시 돌아옵니다.
정리
- 벡터 RAG는 조각을 잘 찾지만 연결을 못 잇습니다: 다중 홉·전역·설명가능성이 필요한 질문에서 구조적으로 약합니다 — 개체 사이의 명시적 구조가 없기 때문입니다.
- GraphRAG는 그 구조를 그래프로 복원합니다. 인덱싱에서 문서를 그래프로 짓고, community detection으로 주제를 묶고, 요약을 미리 굽습니다.
- 쿼리는 두 갈래입니다 — local search는 개체 이웃으로 다중 홉 질문에, global search는 커뮤니티 요약 map-reduce로 전역 질문에 답합니다.
- 벡터와 그래프는 하이브리드로 함께 쓰입니다. GraphRAG는 인덱싱 비용을 대가로 연결·종합 질문의 품질을 얻습니다 — “연결이 답인 질문이 자주 나오는가”가 도입 기준입니다.
다음 글에서는 그래프를 읽는 데서 예측·추론으로 넓힙니다 — 노드를 벡터로 옮기는 임베딩, 없는 관계를 예측하는 링크 예측, 그리고 다중 홉 추론입니다.
다음 학습 (Next Learning)
- 6단계 · 그래프 임베딩·추론: node embedding·link prediction·multi-hop — 읽기를 넘어 예측·추론으로
- 4단계 · LLM 기반 그래프 구축 — GraphRAG 인덱싱이 딛고 선 추출 단계로 돌아가기
- 1단계 · 지식 그래프란 무엇인가 — 벡터 vs 그래프의 상보성 복습