TL;DR
대규모 코드베이스에서 텍스트 청킹 대신 AST 기반 그래프 구조와 BM25 검색을 결합하여 검색 정확도를 높이고 컨텍스트 비용을 절감하는 방법론이다.
배경
기존의 단순 텍스트 청킹 기반 RAG가 코드의 구조적 의존성을 파악하지 못하는 문제를 해결하기 위해, Tree-sitter로 파싱한 AST 그래프와 BM25 검색을 결합한 새로운 아키텍처를 제안했다.
의미 / 영향
이 토론은 코드 RAG가 일반 문서 RAG와는 완전히 다른 전략이 필요함을 시사한다. 텍스트 유사도보다는 구문 분석을 통한 구조적 관계 추출이 핵심이며, 검색 알고리즘 역시 최신 임베딩 기술보다 전통적인 키워드 매칭 방식이 코드 도메인에서 더 강력할 수 있다는 실무적 통찰을 제공한다.
커뮤니티 반응
작성자의 구조적 접근 방식에 대해 긍정적인 반응이 많으며, 특히 BM25가 코드 검색에서 임베딩보다 낫다는 점에 공감하는 분위기이다.
주요 논점
AST 기반 그래프 구조가 코드의 의미적 연결성을 보존하는 데 훨씬 유리하며 BM25가 식별자 매칭에 효과적이다.
동적 언어에서의 정적 분석 한계와 엣지 가중치 설정 등 구현상의 세부 개선 사항에 대한 논의가 필요하다.
합의점 vs 논쟁점
합의점
- 코드베이스 RAG에서 단순 청킹은 구조적 정보를 소실시킨다
- 코드 식별자 검색에는 BM25가 임베딩보다 효율적일 수 있다
논쟁점
- 동적 타이핑 언어에서 정적 분석만으로 호출 그래프를 완벽히 해결할 수 있는가
- 크로스 인코더를 통한 재순위화가 BM25 단독 사용보다 비용 대비 효율적인가
실용적 조언
- 코드 RAG 구축 시 Tree-sitter를 활용하여 함수와 클래스 간의 관계를 먼저 추출하라
- 검색 엔진 구현 시 임베딩 모델 도입 전 BM25를 베이스라인으로 먼저 테스트하라
- 컨텍스트 부족 시 Mermaid 다이어그램으로 코드 구조를 시각화하여 LLM에 제공하라
섹션별 상세
용어 해설
- AST
- — 프로그래밍 언어의 소스 코드 구조를 트리 형태로 표현한 것입니다. 코드의 문법적 요소를 노드로 나타내어 단순 텍스트 청킹보다 정교한 코드 구조 분석과 관계 파악을 가능하게 합니다.
- BM25
- — 문서 내 단어 빈도와 희귀도를 기반으로 검색어와의 관련성을 점수화하는 알고리즘입니다. 코드의 함수명이나 변수명처럼 고유한 식별자를 정확하게 매칭해야 하는 상황에서 임베딩 기반 검색보다 유리합니다.
- Tree-sitter
- — 다양한 프로그래밍 언어를 위한 점진적 파싱 라이브러리입니다. 소스 코드를 분석하여 AST를 생성하며, 이를 통해 코드 내의 함수, 클래스, 임포트 관계 등을 구조적으로 추출할 수 있습니다.
- Cross-Encoder
- — 질문과 문서를 동시에 입력받아 둘 사이의 관계를 직접 계산하는 모델입니다. 연산 비용은 높지만 검색 결과의 순위를 재조정(Re-ranking)할 때 매우 높은 정확도를 제공합니다.
언급된 도구
코드 파싱 및 AST 생성
추출된 코드 그래프 데이터 저장
코드 식별자 기반 고성능 검색
코드 구조 시각화 및 컨텍스트 요약
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
