요즘 AI 분야에서 자주 들리는 단어 중 하나가 RAG(Retrieval-Augmented Generation)입니다.
간단히 말해, AI가 답을 만들 때 자기 머릿속 기억만 쓰는 게 아니라, 외부 자료를 찾아와 참고하는 방식이에요. 마치 친구에게 질문했더니, 친구가 책장에서 관련 책을 꺼내 읽고 난 뒤에 답을 해주는 것과 비슷합니다.
그런데 여기에도 한계가 있습니다.
찾아온 정보가 여기저기 흩어져 있고, 그 조각들이 서로 어떻게 연결되는지 모른다면, 전체 그림을 그리기가 어렵죠. 예를 들어, 한 문서에서 “A와 B가 프로젝트를 했다”는 사실을, 또 다른 문서에서 “B와 C가 공동 연구를 했다”는 사실을 알았다면, 전통적인 RAG는 이 둘을 각각 보여줄 뿐입니다. 하지만 우리의 뇌는 자연스럽게 “그럼 A와 C도 연결되어 있을 가능성이 있겠네?”라고 추론하죠.
AI도 이렇게 연결을 이해하고 활용하게 만들 수 있을까요?
그 해답이 바로 GraphRAG입니다.
GraphRAG는 그래프(Graph)와 RAG의 결합입니다.
여기서 말하는 그래프는 도형의 x-y 축 그래프가 아니라, 지식 그래프(Knowledge Graph)를 뜻합니다.
지식 그래프는 세상의 정보를 엔티티(사람, 장소, 개념, 사물)라는 ‘점’과, 이 점들 사이의 관계(Relationship)라는 ‘선’으로 표현합니다.
이 구조 안에서는 정보가 하나의 큰 네트워크처럼 연결되어 있어, AI가 단순히 비슷한 문서를 찾는 것을 넘어, 관계와 맥락을 따라가며 더 깊은 정보를 얻을 수 있습니다.
마치 지도 위에서 목적지까지 가는 길을 찾을 때, 직선 거리뿐 아니라 도로 연결, 교통 상황, 경유지까지 고려하는 내비게이션처럼, GraphRAG는 정보망 속 ‘경로’를 찾아 최적의 답을 구성합니다.
GraphRAG를 이해하려면 RAG 자체가 어떻게 발전해왔는지 아는 것이 좋습니다.
문서를 인덱싱하고, 질문과 가장 비슷한 텍스트 조각을 찾아서 그대로 AI에 전달합니다. 빠르고 단순하지만, 검색이 조금만 어긋나도 답이 부정확해집니다.
검색 전에 질문을 다듬고(Query Routing, Query Rewriting), 검색 후에는 결과를 재정렬하거나 요약합니다(Reranking, Summary, Fusion).
자료를 찾기 전에 질문을 더 똑똑하게 만들고, 자료를 모은 뒤에는 보기 좋게 정리하는 과정과 비슷합니다.
검색과 생성 과정을 여러 모듈로 나눠서 필요한 방식으로 조합합니다.
Retrieve → Rerank → Read
처럼 단순하게도,
Retrieve → Read → Retrieve
처럼 반복 검색 구조로도 만들 수 있죠.
GraphRAG는 이 모듈형 RAG와 특히 잘 맞습니다.
GraphRAG에는 상황에 맞춰 고를 수 있는 다양한 검색 패턴이 있습니다. 질문의 유형, 데이터 구조, 원하는 정확도에 따라 맞춤형 전략을 쓸 수 있죠.
Basic Retriever:
질문과 가장 유사한 청크를 벡터 검색으로 찾습니다. 정답이 문서 일부에만 있을 때 적합합니다.
Parent-Child Retriever:
작은 청크(Child)를 검색해 정밀도를 높이고, 그 상위 문서(Parent)까지 함께 불러 맥락을 확장합니다.
Pattern Matching:
그래프 안에서 특정 구조(패턴)에 맞는 연결망을 직접 검색합니다. 예를 들어, “A가 만든 제품 중 2024년 이후 출시되고 B와 제휴된 것”처럼 관계형 조건이 중요한 경우에 유리합니다.
Cypher Templates:
자주 쓰이는 질문 유형에 대해 쿼리 틀을 미리 만들어 두고, 질문에 맞춰 변수만 채워 실행합니다. 안정적이지만 틀 밖의 질문에는 한계가 있습니다.
Graph-Enhanced Vector Search:
벡터 검색으로 시드 청크를 찾은 뒤, 해당 청크와 연결된 노드까지 그래프 탐색으로 확장합니다. 흩어진 단서를 관계로 이어주는 데 효과적입니다.
Metadata Filtering:
작성자, 날짜, 주제 등 메타데이터를 기반으로 검색 전후 필터링을 적용해 노이즈를 줄입니다.
Dynamic Cypher Generation:
LLM이 질문을 읽고 그에 맞는 Cypher 쿼리를 동적으로 생성합니다. 다양한 질문에 유연하게 대응할 수 있습니다.
Global Community Summary Retriever:
데이터 전체를 주제별로 나누고 각 주제를 요약한 뒤, 질문과 관련된 요약을 찾아 답변합니다. 전반적인 흐름을 파악하는 데 유리합니다.
Local Retriever:
특정 엔티티를 중심으로 주변 관계망을 탐색합니다. 인물, 조직, 사건 중심 분석에 적합합니다.
Hypothetical Question Retriever:
청크마다 가상의 질문을 미리 생성·저장해두고, 실제 질문과 유사한 가상 질문을 찾아 해당 청크를 검색합니다. 표현이 다양한 질문에 강합니다.
이 패턴들은 각각 다른 형태의 그래프 모델을 필요로 합니다.
그래프 모델은 데이터의 구조를 어떻게 표현하느냐를 결정하며, 가능한 패턴과 성능에 큰 영향을 줍니다.
Domain Graph:
특정 분야(예: 의료, 금융, 영화)에 특화된 엔티티와 관계를 구조화한 그래프
Lexical Graph:
문서를 청크로 나누고, 문서-청크 연결을 보존한 기본 구조
Parent-Child Lexical Graph:
청크에 상위·하위 구조를 부여해 문맥을 보존
Lexical Graph with Sibling Structure:
인접 청크를 연결해 주변 맥락을 함께 가져오기 쉽게 함
Lexical Graph with Extracted Entities:
청크에 등장하는 엔티티와 관계를 추출해 연결
Lexical Graph with Community Summaries:
엔티티 그래프 위에 커뮤니티 탐지·요약 정보를 추가
Lexical Graph with Hierarchical Structure:
문서의 장–절–소절 구조를 보존
Lexical Graph with Hypothetical Questions:
청크에 가상의 질문을 연결해 질문 매칭 기반 검색 지원
Memory Graph:
대화, 사실, 절차 등을 장기적으로 저장하는 메모리 구조
Text Sequence:
순서가 중요한 텍스트 조각들을 시퀀스로 연결
질문이 복잡하고 여러 단계를 거쳐야 답이 나올 때
정보 간 관계가 중요한 분석·조사 업무
AI 답변의 근거를 명확히 추적해야 할 때
데이터가 방대하고 서로 다른 출처에서 모일 때
GraphRAG는 단순히 더 많은 정보를 ‘찾아오는’ 기술이 아닙니다.
정보를 ‘연결’하고, ‘맥락’을 살려서 AI가 스스로 추론과 설명을 할 수 있게 만드는 기술입니다.
마치 사람이 서로 다른 기억과 경험을 연결해 새로운 통찰을 얻는 것처럼, GraphRAG는 데이터 속의 점들을 선으로 잇고, 그 선들을 모아 하나의 큰 그림을 그립니다.
앞으로 AI가 단순한 답변 생성기를 넘어 깊이 이해하고 설명할 수 있는 조언자가 되기 위해서는 이런 구조적 접근이 필수입니다.
그리고 GraphRAG는 이미 그 길의 한가운데 서 있습니다.
참고: https://graphrag.com/concepts/intro-to-graphrag/