컨텍스트 인라인을 통한 레포지토리 수준 코드 생성

컨텍스트 인라인을 통한 레포지토리 수준 코드 생성
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

InlineCoder는 미완성 함수와 그 호출 그래프를 인라인하여 레포지토리 전체를 함수 수준 문제로 전환한다. 먼저 초안(앵커)을 생성하고, 이를 호출자(업스트림)와 피호출자(다운스트림)에 삽입해 풍부한 의존성 정보를 제공한다. 퍼플렉시티 기반 신뢰도 추정과 양방향 인라인을 결합해 LLM이 레포지토리 전반을 이해하도록 돕는다. DevEval·RepoExec 벤치마크에서 EM, ES, BLEU 모두 현존 최고 성능 대비 평균 30 % 이상 향상된 결과를 보였다.

상세 분석

InlineCoder는 레포지토리 수준 코드 생성이라는 난제에 대해 “함수 수준 재구성”이라는 혁신적인 관점을 제시한다. 기존 RAG 기반 방법은 텍스트 유사도에 의존해 단순히 관련 파일을 검색하고 프롬프트에 붙여넣는다. 그러나 레포지토리 내부에는 함수 간 호출 관계, 클래스 상속, 전역 변수 공유 등 복합적인 의존성이 얽혀 있어 단순 검색만으로는 충분한 의미적 맥락을 제공하기 어렵다.

InlineCoder는 먼저 목표 함수 시그니처만을 입력으로 받아 초안(앵커)을 생성한다. 이 앵커는 아직 완전하지 않지만, downstream(피호출) 함수들의 시그니처와 호출 형태를 예측해 포함함으로써 “예상 의존성”을 내포한다. 생성된 앵커에 대해 퍼플렉시티 기반 신뢰도 점수를 계산해, 높은 신뢰도를 보이는 경우에만 인라인 과정을 진행한다는 점이 특징이다. 이는 불필요한 노이즈를 최소화하고, 모델이 실제로 활용 가능한 정보를 중심으로 학습하도록 유도한다.

양방향 인라인은 두 단계로 이루어진다. 업스트림 인라인에서는 앵커를 호출하는 모든 함수(콜러)를 찾아 그 호출 위치에 앵커를 삽입한다. 이렇게 하면 동일 함수가 다양한 인자와 컨텍스트에서 어떻게 사용되는지 모델이 학습할 수 있다. 특히, 다형성이나 오버로드가 존재하는 언어에서는 호출 상황별 타입 추론에 큰 도움이 된다. 다운스트림 리트리벌은 앵커가 호출하는 함수(칼리)들을 검색해 프롬프트에 포함한다. 이때 단순 파일 검색이 아니라, 함수 시그니처와 호출 관계를 기반으로 한 정밀 검색을 수행한다. 결과적으로 모델은 “내가 지금 구현하려는 함수가 어떤 함수들을 호출하고, 어떤 상황에서 호출되는가”를 동시에 파악하게 된다.

또한 InlineCoder는 퍼플렉시티 기반 confidence estimation을 통해 앵커의 품질을 정량화한다. LLM이 생성한 토큰 시퀀스의 퍼플렉시티가 낮을수록 모델이 해당 토큰에 대해 높은 확신을 가지고 있음을 의미한다. 이를 threshold로 활용해, 신뢰도가 낮은 앵커는 재생성하거나 추가 검색을 트리거한다. 이러한 피드백 루프는 최종 코드 품질을 크게 끌어올린다.

실험에서는 두 주요 벤치마크인 DevEval과 RepoExec을 사용했다. RepoExec에서 EM(Exact Match) 기준 평균 29.73 % 상승, ES(Exact Set) 20.82 % 상승, BLEU 49.34 % 상승을 기록했으며, 이는 기존 최고 성능 모델 대비 압도적인 개선이다. 특히, 복잡한 의존성을 가진 대형 레포지토리(수천 파일, 수십 모듈)에서 성능 격차가 더욱 두드러졌다. Ablation study를 통해 업스트림 인라인, 다운스트림 리트리벌, 퍼플렉시티 기반 필터링 각각이 독립적으로 기여함을 확인했으며, 세 요소를 모두 결합했을 때 최적 성능을 달성한다는 점을 입증했다.

이 논문의 주요 기여는 (1) 레포지토리 이해를 함수 수준 문제로 재정의한 컨텍스트 인라인 프레임워크, (2) 초안 기반 신뢰도 추정과 양방향 인라인을 결합한 다중 시점 컨텍스트 강화 기법, (3) 대규모 실험을 통한 실용성 검증이다. 향후 연구에서는 멀티모달(코드 + 문서) 인라인, 인터랙티브 디버깅 지원, 그리고 다른 프로그래밍 언어에 대한 일반화 가능성을 탐색할 여지가 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기