인용으로 증명하는 코드 이해: 하이브리드 검색과 그래프 확장으로 LLM 환각을 막다
초록
대형 언어 모델(LLM)의 코드 이해 작업에서 정확한 소스 코드 인용은 핵심 과제입니다. 본 연구는 BM25 키워드 검색, BGE 임베딩 기반 의미 검색, 그리고 Neo4j를 활용한 코드 import 관계 그래프 확장을 결합한 하이브리드 검색 시스템을 제안합니다. 이 시스템은 검색된 코드 청크에 대한 기계적 인용 검증을 통해 LLM이 허위 또는 부정확한 코드 위치를 인용하는 환각 현상을 근본적으로 방지합니다. 30개의 Python 저장소와 180개 질의로 평가한 결과, 단일 검색 방식 대비 14-18% 포인트 높은 92%의 인용 정확도와 제로 환각을 달성했으며, 구조적 질의의 62%에서 순수 텍스트 유사도 검색이 놓친 파일 간 증거를 발견했습니다.
상세 분석
본 논문의 기술적 핵심은 코드 이해를 위한 ‘인용 기반 생성(Citation-Grounded Generation)‘을 시스템 설계 원칙으로 삼고, 이를 실현하기 위한 다중 모달리티 접근법에 있습니다. 기존 RAG(Retrieval-Augmented Generation)가 코드를 평평한 텍스트로 취급하여 파일 간 구조적 의존성을 발견하지 못하는 한계를 지적하며, 세 가지 상호 보완적인 메커니즘을 통합했습니다.
첫째, 하이브리드 검색 전략은 Sparse Retrieval(BM25)와 Dense Retrieval(BGE 임베딩)의 점수를 융합(α=0.45, β=0.55)합니다. BM25는 “HTTPException"과 같은 정확한 식별자 매칭에 강점이 있고, BGE는 “인증 로직"과 같은 개념적 유사성 검색에 효과적입니다. 이 둘의 결합은 특정 키워드와 의미적 맥락을 모두 가진 개발자 질의에 대한 검색 정확도와 재현율을 동시에 높입니다.
둘째, 그래프 기반 구조 확장이 가장 혁신적인 통찰을 제공합니다. 논문은 평가를 통해 코드 이해 질의의 상당수(62%)가 여러 파일에 걸친 ‘구조적 질의’임을 확인했습니다. 예를 들어, 예외 처리 방식을 이해하려면 예외를 발생시키는 코드(file A)와 예외 클래스가 정의된 코드(file B)를 모두 참조해야 합니다. 순수 텍스트 유사도는 file B를 발견하지 못할 수 있습니다. 제안 시스템은 Neo4j에 구축된 import 관계 그래프를 통해, 초기 검색으로 발견된 파일의 그래프 이웃(직접 import하는 파일或被 import되는 파일)을 추가로 탐색하여 이러한 파일 간 증거를 발견합니다. 이는 검색 영역을 텍스트 공간에서 구조 공간으로 확장하는 것입니다.
셋째, 기계적 인용 검증 메커니즘은 환각 방지의 최종 안전장치입니다. LLM이 생성한 응답에 포함된 모든 `
댓글 및 학술 토론
Loading comments...
의견 남기기