graphrag

LLM FrameworksCLIPython

★ 35,954주당 +94조회 5

무엇인가

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

유사 도구