graphrag
무엇인가
GraphRAG는 마이크로소프트 리서치가 공개한 검색 증강 생성 파이프라인으로, 인덱싱과 질의 두 단계로 나뉜다. 인덱싱 단계는 문서 집합을 LLM으로 읽어 개체·관계·주장을 뽑아내고 이를 지식 그래프로 저장한다. 질의 단계는 그 그래프를 컨텍스트로 삼아 LLM이 답을 생성한다. 실행 진입점은 CLI이며 저장소는 Python 패키지로 구성된다.
어떻게 동작하나
인덱싱 파이프라인은 텍스트를 청크로 나눈 뒤 LLM에 엔티티·관계·클레임 추출 프롬프트를 돌려 그래프를 만든다. 이어 Leiden 알고리즘으로 계층적 커뮤니티를 탐지하고, 각 커뮤니티마다 LLM이 요약 리포트를 생성한다. 산출물은 워크스페이스 디렉터리에 parquet 파일과 그래프 형태로 남는다. 설정은 settings.yaml, 추출·요약 프롬프트는 prompts 디렉터리에서 관리한다.
무엇과 다른가
일반적인 RAG는 문서를 청크로 쪼개 임베딩하고 질의와 가까운 top-k 청크를 컨텍스트에 넣는다. 이 방식은 특정 사실을 묻는 국소 질문에는 맞지만 문서 집합 전체의 주제를 묻는 전역 질문에는 답하기 어렵다. GraphRAG는 커뮤니티 요약을 인덱싱 시점에 미리 만들어 두고, 질의 시 계층을 따라 부분 요약을 조합해 전역 질문에 답한다. 벡터 DB를 대체하는 것이 아니라 별도의 인덱스 산출물을 만든다.
어떻게 쓰나
`graphrag init --root [path] --force`로 워크스페이스를 만들면 설정 파일과 프롬프트 세트가 생성된다. 설정에서 입력 문서 경로와 LLM·임베딩 모델을 지정한 뒤 인덱싱을 실행하고, 완성된 인덱스에 질의한다. README는 CLI 퀵스타트를 먼저 따라 해 보기를 권한다. 기본 프롬프트는 데이터에 맞지 않을 수 있으므로 Prompt Tuning Guide에 따라 조정한다.
전제와 한계
이 저장소는 연구 프로젝트이며 공식 지원 제품이 아니다. 현재 유지보수 모드로 신규 PR과 기능 추가를 받지 않고, 버그 수정과 CVE 대응 수준의 의존성 갱신만 수행한다. 인덱싱은 LLM 호출이 많이 들어 비용이 크므로 문서 전체를 읽고 작은 데이터로 시작해야 한다. 마이너 버전이 오르면 `graphrag init --root [path] --force`로 설정 형식을 갱신하고, 메이저 버전에서는 마이그레이션 노트북을 써야 기존 데이터셋 재인덱싱을 피할 수 있다.
관련 논문 4
유사 도구
- Hyper-Extract비정형 텍스트를 LLM으로 구조화해 그래프·하이퍼그래프·시공간 그래프로 추출하는 Python CLI다. 추출·검색·시각화를 한 명령으로 처리한다.
- LightRAG문서를 지식 그래프와 벡터 인덱스로 함께 색인해 질의에 답하는 검색 증강 생성 프레임워크다. Python 서버와 WebUI를 함께 제공한다.
- graphify코드베이스와 문서·SQL·PDF를 tree-sitter AST로 파싱해 질의 가능한 지식 그래프로 바꾸는 CLI다. 임베딩 없이 그래프를 순회하며 모든 엣지에 출처 태그를 붙인다.
- semantica기업 데이터를 컨텍스트 그래프와 지식 그래프로 적재하고 결정 출처와 추론 경로를 그래프 구조에 남기는 Python 기반 인프라다.
- txtai벡터 인덱스·그래프·관계형 DB를 합친 임베딩 데이터베이스 위에서 시맨틱 검색과 LLM 워크플로를 돌리는 Python AI 프레임워크다.
- code-graph-ragTree-sitter로 모노레포를 파싱해 Memgraph 지식 그래프를 만들고, 자연어로 코드를 질의·편집·최적화하는 Python CLI다.