게시일

AI & S/W

소프트웨어 아키텍처를 한눈에 파악하는 지식 그래프 도구: Graphify 가이드

소프트웨어 아키텍처를 한눈에 파악하는 지식 그래프 도구: Graphify 가이드

💡 요약

Graphify는 전체 소스코드와 프로젝트 문서, 미디어 파일(PDF, 이미지, 영상)을 분석하여 영구 탐색이 가능한 지식 그래프(Knowledge Graph)로 자동 구성하는 오픈소스 도구입니다. 대형 프로젝트 분석 시 발생하던 AI 에이전트(Claude Code, Cursor, Codex 등)의 토큰 소모를 방지하고, 인터랙티브 graph.html 시각화와 아키텍처 핵심 노드(God Node) 분석 보고서를 제공합니다.

구분 주요 기술 사양 및 특징
개발사 / 리포지토리 Graphify Labs / https://github.com/Graphify-Labs/graphify
설치 패키지명 PyPI graphifyy (실행 명령어: graphify)
분석 2단계 구조 1단계 로컬 AST 구조 추출 (tree-sitter) + 2단계 의미론 추출 (LLM)
출력 포맷 인터랙티브 HTML (graph.html), 보고서 (GRAPH_REPORT.md), JSON (graph.json), Obsidian 노드
관계 신뢰도 태그 EXTRACTED (명시적 코드 연결), INFERRED (의미 추론 연결), AMBIGUOUS
증분 업데이트 지원 --update 및 --watch 옵션 지원 (변경 파일만 증분 추출하여 시간 단축)

Graphify의 필요성과 기존 RAG와의 차이점

수만 줄 이상의 대형 소스코드나 복잡한 모노레포 프로젝트를 AI 에이전트에 입력할 때, 매번 수십만 토큰의 파일 전체를 읽거나 벡터 검색(RAG)을 수행하면 다음과 같은 한계가 발생합니다:

  1. 전체 맥락 유실: 벡터 검색은 단편적인 텍스트 유사도만 검색하므로 파일과 함수 간의 상호 의존성(의존 관계 트리)을 파악하기 어렵습니다.
  2. 높은 토큰 비용: 매 질문마다 소스 파일을 반복적으로 챗봇에 읽히게 되어 비용이 증가합니다.

Graphify는 소스코드 구조를 파싱(AST)하여 노드(클래스, 함수, 모듈)와 엣지(호출, 상속, 참조)로 이루어진 지식 그래프를 생성합니다. 한번 구축된 그래프는 영구 보관되며, AI 에이전트는 이 그래프를 바탕으로 아키텍처 질문에 답변합니다.


Graphify 5단계 지식 그래프 추출 파이프라인

소스코드와 문서를 분석하여 그래프 데이터로 완성하는 과정입니다:

1. 파일 감지 코드 / 문서 / 미디어 감지 및 분류 2. AST 구문 파싱 tree-sitter 엔진 토큰 비용 0원 3. 의미 추출 문서 의미 탐색 EXTRACTED / INFERRED 4. 클러스터링 God Node 추출 커뮤니티 라벨링 5. 시각화 출력 graph.html GRAPH_REPORT

Graphify 설치 및 기본 명령어 사용법

Graphify는 Python 패키지 환경에서 uv 또는 pip를 통해 간편하게 설치할 수 있습니다.

📍 패키지 설치 명령어 (PyPI 명칭: graphifyy)

# uv를 사용하는 경우 (추천)
uv tool install graphifyy

# 또는 pip 사용 시
pip install graphifyy

💡 꿀팁  PyPI 등록 이름은 `graphifyy`(y가 2개)이지만, 터미널 실행 명령어 및 AI 스킬 호출은 `graphify`를 사용합니다.

주요 CLI 명령 옵션 정리

명령어 옵션 설명
graphify 현재 디렉터리 전체를 분석하여 graphify-out/ 결과 폴더 생성
graphify https://github.com/유저/리포지토리 GitHub 리포지토리를 직접 클론하여 지식 그래프 생성
graphify . --update 변경되거나 새롭게 추가된 파일만 증분(Incremental) 재분석
graphify . --watch 소스코드 변경을 감지하여 실시간으로 지식 그래프 자동 갱신
graphify query "질문" 구축된 그래프 위에서 너비 우선 탐색(BFS)으로 특정 기능 문맥 탐색
graphify path "노드A" "노드B" 노드 A와 노드 B 사이의 최단 호출 경로 추적
graphify . --obsidian 옵시디언(Obsidian) 볼트 연동용 마크다운 파일 출력

생성 결과물 및 아키텍처 탐색 기법

분석이 완료되면 graphify-out/ 폴더에 다음과 같은 핵심 결과물이 생성됩니다:

  1. graph.html (인터랙티브 웹 그래프):
    • 웹 브라우저에서 열어 소스코드 내 모든 클래스, 함수, 모듈 간의 연결을 드래그하여 시각적으로 탐색합니다.
  2. GRAPH_REPORT.md (아키텍처 인사이트 보고서):
    • 프로젝트에서 가장 연결 상태가 복잡한 **갓 노드(God Nodes)**와 뜻밖의 모듈 연결 관계(Surprising Connections)를 분석해 줍니다.
  3. graph.json (GraphRAG용 데이터):
    • AI 프로그램이 그래프 질의 응답을 수행할 때 참고하는 정형 데이터 구조입니다.

⚠️ 참고  순수 소스코드만 분석할 때는 LLM API 키 없이 100% 로컬 AST 파싱으로 동작합니다. PDF나 이미지 문서에서 의미를 함께 추출하려는 경우 `GEMINI_API_KEY` 환경변수를 설정하면 보다 깊은 2단계 분석이 수행됩니다.


✅ 한눈에 보는 실행 체크리스트

✅ Graphify 적용 및 활용 체크리스트

  • ☑️ 패키지 설치: `uv tool install graphifyy` 또는 `pip install graphifyy`
  • ☑️ 그래프 생성 실행: 대상 프로젝트 폴더로 이동 후 `graphify` 실행
  • ☑️ 시각화 확인: `graphify-out/graph.html` 브라우저로 오픈
  • ☑️ 인사이트 확인: `graphify-out/GRAPH_REPORT.md`에서 주요 의존성 및 갓 노드 체크
  • ☑️ 질문 탐색: `graphify query "주요 기능 작동 원리"` 명령어로 특정 의존성 검색

자주 묻는 질문 (FAQ)

Q1. 코드 수정 시 매번 전체 프로젝트를 다시 분석해야 하나요?

아닙니다. graphify . --update 명령어를 실행하면 해시값이 변경된 신규/수정 파일만 선별하여 증분 분석을 진행하므로 소요 시간이 단축됩니다.

Q2. Graphify는 어떤 언어를 지원하나요?

tree-sitter 파서 기반으로 Python, TypeScript, JavaScript, Go, Rust, C/C++, Java 등 대부분의 주요 프로그래밍 언어를 완벽하게 지원합니다.

Q3. Neo4j나 FalkorDB 같은 그래프 DB로 내보낼 수 있나요?

네. graphify . --neo4j 또는 graphify . --falkordb 옵션을 부여하면 해당 그래프 DB에 입력할 수 있는 Cypher 쿼리 파일(cypher.txt)이 생성됩니다.