부분 의존 그래프(Partial Dependency Graph)를 통한 효과적이고 효율적인 컨텍스트 검색 기반 저장소 수준 코드 생성
요약
LLM의 저장소 수준 코드 생성을 위해 부분 의존 그래프를 활용한 DyRetriever를 제안합니다. 기존 RAG의 한계를 극복하기 위해 LLM의 의미론적 이해를 바탕으로 다중 홉 추론을 수행하며, 효율적인 컨텍스트 검색을 가능하게 합니다.
핵심 포인트
- 부분 의존 그래프 기반의 DyRetriever 제안
- LLM을 활용한 다중 홉 추론으로 코드 의존성 검증
- 정적 그래프 대신 필요 시 부분 그래프를 구축하여 비용 절감
- 기존 RAG 대비 CoderEval에서 25.63% 성능 향상
- 정적 그래프 방식보다 7.4배 빠른 속도 달성
LLM 기반의 저장소 수준(repository-level) 코드 생성은 소프트웨어 저장소에서 사용 가능한 컨텍스트를 사용하여 코드를 생성하는 것을 목표로 하며, 이는 LLM이 복잡한 코드 의존성(code dependencies)을 추론할 것을 요구합니다. 제한된 컨텍스트 창(context windows)과 저장소 특유의 이해 부족으로 인해, LLM은 일반적으로 관련 코드를 포함하기 위해 검색 증강 생성 (RAG, Retrieval-Augmented Generation)에 의존합니다. 초기 RAG 방식은 주로 유사도 기반 검색 (similarity-based retrieval)을 채택하지만, 이는 대상 함수가 의존하는 코드 스니펫을 검색하는 데 실패하는 경우가 많습니다. 최근 연구들은 이러한 의존성을 모델링하기 위해 그래프 기반 검색 (graph-based retrieval)을 도입했으나, 일반적으로 수동으로 설계된 규칙과 정적 전역 그래프 (static global graphs)에 의존하여 유연성이 제한되고 구축 및 유지 관리 비용이 높습니다. 반면, 인간 개발자는 암시적으로 부분 의존 그래프 (partial dependency graph)를 구축하고 이를 따라 반복적으로 검사함으로써 유용한 컨텍스트를 수집합니다. 이러한 동작에서 영감을 받아, 우리는 부분 의존 그래프를 통한 효율적인 컨텍스트 검색 방법인 DyRetriever를 제안합니다. DyRetriever는 먼저 LLM을 사용하여 진입점 함수 (entry-point functions) 집합을 선택한 다음, 코드 의존성 그래프를 따라 다중 홉 추론 (multi-hop reasoning)을 수행합니다. 다중 홉 추론 과정에서 LLM의 의미론적 이해 (semantic understanding)를 사용하여 특정 함수가 대상 함수를 생성하는 데 도움이 될 수 있는지 검증하며, 이를 통해 수동으로 설계된 규칙을 제거하고 다양한 시나리오에서 유연성을 확보합니다. 정적인 전역 의존성 그래프를 구축하는 대신, DyRetriever는 필요에 따라 부분 그래프를 구축하고 사용 후 폐기함으로써 구축 및 유지 관리 비용을 줄입니다. 우리는 DyRetriever를 유사도 기반 코드 검색기 (similarity-based code retriever)와 통합하여 DyCoder를 구축하고, 이를 CoderEval 및 DevEval에서 평가했습니다. 실험 결과에 따르면, DyCoder는 기존 RAG 기반 방식과 비교하여 CoderEval과 DevEval에서 각각 25.63%와 59.73%의 상대적인 Pass@1 개선을 달성했으며, 정적 의존성 그래프 구축 기반의 베이스라인보다 7.4배 더 빠릅니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기