보통 검색은 "이 단어가 포함된 문서를 찾아줘" 방식으로 작동합니다. 그런데 이 방식은 정보들 사이의 관계를 활용합니다. 마치 인물 관계도나 가계도를 그려놓고 검색하는 거예요. "홍길동의 상사는 누구이고, 그 상사가 담당하는 프로젝트는 뭐지?"처럼 꼬리에 꼬리를 무는 질문에 강합니다.
예를 들어 "이 약의 부작용과 관련된 다른 약은?"이라고 물으면, 일반 검색은 "부작용"이라는 단어가 나오는 문서만 찾습니다. 하지만 관계도 방식은 "이 약 → 부작용 A → 부작용 A를 유발하는 다른 약들"로 연결고리를 따라가며 답을 찾아요.
마이크로소프트가 2024년에 코파일럿(Copilot)에 이 기술을 적용해서 큰 주목을 받았습니다. 법률 분야에서도 "이 판례와 연관된 판례 → 그 판례를 인용한 판결"을 추적하는 데 아주 효과적입니다. 국내 금융권에서도 기업 간 투자 관계나 계열사 구조를 파악할 때 이 방식을 도입하고 있어요.
📚 선수학습: 이 내용을 이해하려면 RAG (Retrieval-Augmented Generation)를 먼저 읽으면 좋습니다.
Graph RAG는 문서를 **지식 그래프(Knowledge Graph)**로 구조화한 뒤, 그래프 탐색을 통해 관련 정보를 검색하는 방식이다. Microsoft Research가 2024년에 발표한 논문에서 체계화했으며, 벡터 유사도 기반 검색의 한계 — 특히 전역적(global) 질의에 대한 약점 — 를 해결한다.
전체 아키텍처는 두 단계로 나뉜다:
[오프라인: 그래프 구축]
문서 → LLM 엔티티 추출 → (Entity, Relation, Entity) 트리플
→ 그래프 구성 → 커뮤니티 탐지 → 커뮤니티 요약
[온라인: 질의 응답]
질의 → 관련 커뮤니티/엔티티 탐색 → 부분 그래프 추출
→ 컨텍스트 구성 → LLM 생성 → 답변
엔티티 추출에서 LLM은 문서에서 (주어, 관계, 목적어) 트리플1을 추출한다. 예: ("트랜스포머", "제안됨", "Vaswani et al., 2017"). 이 트리플들이 모여 그래프 를 구성하며, 는 엔티티(노드), 는 관계(에지)다.
커뮤니티 탐지(Community Detection)2는 Leiden 알고리즘을 사용하여 밀접하게 연결된 엔티티들을 그룹으로 묶는다. 각 커뮤니티에 대해 LLM이 **요약(summary)**을 생성하며, 이 요약이 전역 질의에 답하는 핵심 컨텍스트가 된다.
검색 시 지역적(local) 질의는 엔티티 매칭 후 -hop 이웃 탐색으로 처리한다:
전역적(global) 질의는 커뮤니티 요약을 Map-Reduce 방식으로 집계한다.
벡터 RAG 대비 Graph RAG의 강점은 관계 추론과 전역 요약에서 드러난다:
| 질의 유형 | 벡터 RAG | Graph RAG |
|---|---|---|
| 단일 사실 확인 | ★★★ | ★★☆ |
| 엔티티 간 관계 | ★★☆ | ★★★ |
| 전역 요약/비교 | ★☆☆ | ★★★ |
| 시간순 추론 | ★★☆ | ★★★ |
Microsoft의 실험에서 Graph RAG는 전역 질의(e.g., "이 데이터셋의 주요 테마는?")에서 벡터 RAG 대비 포괄성(comprehensiveness) 70~80% 향상, 다양성(diversity) 60~70% 향상을 보였다.
장점:
한계:
Naive RAG