vitali87/code-graph-rag
요약
Code-Graph-RAG는 Tree-sitter와 Memgraph를 활용하여 다국어 코드베이스를 지식 그래프로 구축하고, 자연어로 코드를 쿼리 및 편집할 수 있게 돕는 RAG 시스템입니다. AST 기반의 구조적 검색과 데이터 흐름 추적을 통해 정밀한 코드 분석 및 최적화를 지원합니다.
핵심 포인트
- Tree-sitter와 Memgraph를 이용한 다국어 코드 지식 그래프 구축
- ast-grep 기반의 AST 패턴 매칭 및 구조적 검색/교체 지원
- C#, Java, C, Go 등 다양한 언어의 데이터 흐름(Data-Flow) 추적
- 자연어 쿼리를 Cypher로 변환하여 코드베이스 구조 기반 답변 제공
- 에이전트를 통한 정밀한 코드 패칭 및 최적화 기능
Code-Graph-RAG는 Tree-sitter를 사용하여 다국어 코드베이스를 파싱하고, Memgraph에 구조적 지식 그래프 (knowledge graph)를 구축하여, 사용자가 일상적인 영어로 해당 코드를 쿼리(query), 편집 및 최적화할 수 있도록 합니다. 이 시스템은 하나의 통합된 그래프 스키마 (graph schema) 아래 혼합된 언어로 구성된 모노레포 (monorepo) 전체에서 작동합니다.
Ruby 지원: 새로운 플러그형 ast-grep 계층을 통해 Ruby가 그래프에 추가됩니다. 이 계층은 단일 YAML 패턴 파일로부터 언어를 추가하며, 수동으로 작성된 파서 (parser) 없이도 Module, Function, Class 노드와 임포트 (import) 엣지 (edge)를 생성합니다.
구조적 검색 및 교체 (Structural Search & Replace): ast-grep을 사용하여 AST 패턴으로 코드를 찾고 다시 작성할 수 있습니다. 이는 에이전트 도구 (agent tools)로 노출되어, 텍스트나 정규 표현식 (regex)에 의존하는 대신 코드베이스 전체의 구조를 매칭하고 변환할 수 있습니다.
데이터 흐름 추적 (Data-Flow Tracing): 새로운 FLOWS_TO 오염 (taint) 엣지는 할당 (assignments), 함수 호출 (function calls), 그리고 I/O 싱크 (I/O sinks)를 통해 값을 추적하며, C#, Java, C, Go에 걸쳐 지원됩니다.
전체 이력은 NEWS.md를 참조하세요.
Code-Graph-RAG를 저장소 (repository)로 지정하면 모든 소스 파일을 읽고 함수, 클래스, 메서드, 모듈 및 이들 사이의 관계를 추출하여 그 결과를 상호 연결된 그래프로 저장합니다. 그래프가 생성되면 다음과 같은 작업을 수행할 수 있습니다:
- 자연어로 코드베이스에 대해 질문하고 실제 구조에 기반한 답변을 얻습니다.
- 이름이나 의도에 따라 모든 함수, 클래스 또는 메서드의 실제 소스를 검색합니다.
- AST 기반의 정밀한 패칭 (surgical patching)과 변경 전 디프 (diff) 미리보기를 통해 에이전트를 통해 코드를 편집합니다.
- 언어별 베스트 프랙티스 (best practices) 또는 자체 코딩 표준에 맞춰 코드를 최적화합니다.
- 엔트리 포인트 (entry points)로부터 호출 및 참조 엣지를 따라가며 데드 코드 (dead code)를 찾습니다.
- ast-grep을 사용하여 AST 패턴으로 구조적으로 검색하고 다시 작성합니다.
시스템은 두 가지 구성 요소로 이루어져 있습니다:
다국어 파서 (Multi-language parser): Tree-sitter 기반의 파서가 코드베이스를 읽고 함수, 클래스, 메서드, 모듈 및 그 관계를 단일 언어 불가지론적 (language-agnostic) 스키마 하에 Memgraph로 수집합니다.
RAG 시스템 (RAG system) (codebase_rag/
). 자연어를 Cypher 쿼리로 변환하고, 일치하는 코드를 검색하며, AI 기반의 편집 및 최적화를 수행하는 대화형 CLI (Interactive CLI)입니다.
소스 코드 (Source Code) -> Tree-sitter 파서 (Tree-sitter Parser) -> AST 분석 (AST Analysis) -> Memgraph 지식 그래프 (Memgraph Knowledge Graph)
|
사용자 쿼리 (User Query) -> AI 모델 (Cypher 생성 (Cypher Gen)) -> Cypher 쿼리 (Cypher Query) -> 그래프 결과 (Graph Results) -> 응답 (Response)
전체적인 그림을 보려면 아키텍처 개요 (Architecture Overview) 및 그래프 스키마 (Graph Schema)를 참조하세요.
Python, TypeScript, TSX, JavaScript, Rust, Go, Java, C, C++, C#, PHP, Lua, 그리고 Dart를 완벽하게 지원합니다. Scala는 개발 중이며, Ruby는 플러그형 ast-grep 계층을 통해 구조적 지원(모듈, 함수, 클래스 및 임포트)을 제공합니다. 언어별 기능은 언어 지원 (Language Support) 매트릭스를 참조하세요.
cgr은 PyPI에 게시되어 있습니다. treesitter-full (모든 언어) 및 semantic (벡터 검색) extras를 사용하여 시스템 전체에 설치하세요:
# uv 사용 시 (권장)
uv tool install "code-graph-rag[treesitter-full,semantic]"
# 또는 pipx 사용 시
...
또한 Docker (Memgraph용), cmake, 그리고 ripgrep이 필요합니다. 전체 필수 요구 사항, 소스 설치 및 환경 설정은 설치 가이드 (Installation guide)에 있습니다.
# 패키징된 Memgraph + Qdrant 스택 시작 (compose 파일 불필요)
cgr daemon up
# 저장소를 그래프로 파싱한 후 쿼리 수행
...
퀵 스타트 (Quick Start) 가이드를 통해 5분 만에 파싱, 쿼리 및 내보내기를 수행할 수 있습니다.
Code-Graph-RAG는 MCP 서버 (MCP server)로 실행되므로 Claude Code 및 기타 MCP 클라이언트가 코드베이스를 직접 쿼리하고 편집할 수 있습니다. 설정 방법은 MCP 서버 (MCP Server) 가이드를 참조하세요.
시작하기 (Getting Started)
사용자 가이드 (User Guide)
- CLI 레퍼런스 (CLI Reference)
- 대화형 쿼리 (Interactive Querying)
- 코드 최적화 (Code Optimisation)
- 데드 코드 탐지 (Dead Code Detection)
- 그래프 내보내기 (Graph Export)
- 실시간 업데이트 (Real-Time Updates)
- MCP 서버 (MCP Server)
아키텍처 (Architecture)
Python SDK
고급 (Advanced)
Code-Graph-RAG는 오픈 소스이며 무료로 사용할 수 있습니다. 더 많은 기능이 필요한 조직을 위해, 당사는 완전 관리형 클라우드 호스팅 솔루션 (fully managed cloud-hosted solutions) 및 **온프레미스 배포 (on-premise deployments)**를 제공합니다:
클라우드 호스팅 배포 (Cloud-Hosted Deployment): 그래프 데이터베이스 (graph database)와 AI 에이전트 연결을 위한 관리형 클라우드 인프라를 제공합니다. 인프라 오버헤드가 전혀 없으므로, 귀하의 팀이 구축에 집중하는 동안 저희가 확장성 (scaling), 업데이트, 가용성 (availability)을 처리합니다.
온프레미스 및 에어갭 배포 (On-Premise & Air-Gapped Deployment): 에어갭 (air-gapped) 네트워크를 포함하여 귀하의 자체 환경 내에 Code-Graph-RAG를 완전히 배포할 수 있습니다. 규제 산업 및 보안에 민감한 조직을 위한 완전한 데이터 주권 (data sovereignty)을 보장합니다.
또한 맞춤형 개발, 통합 컨설팅 (integration consulting), 기술 지원 계약 및 팀 교육을 제공합니다.
기여 가이드라인은 CONTRIBUTING.md를 참조하십시오. 좋은 첫 번째 PR (Pull Request)은 TODO 이슈에서 나올 수 있습니다.
이슈나 질문이 있는 경우, 먼저 문제 해결 (Troubleshooting) 가이드를 확인한 후 이슈를 생성해 주세요.
MIT. LICENSE를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기