프로그래밍 지식 그래프 기반 코드 생성 향상

프로그래밍 지식 그래프 기반 코드 생성 향상
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 코드와 문서 정보를 AST·JSON 기반의 프로그래밍 지식 그래프(PKG)로 구조화하고, 트리 프루닝과 다중 입출력 재정렬(re‑ranking) 기법을 결합해 RAG 기반 코드 생성의 정확도와 신뢰성을 크게 높였다. HumanEval과 MBPP 벤치마크에서 기존 RAG 대비 최대 20%·34%의 pass@1 향상을 달성하였다.

상세 분석

이 연구는 기존 Retrieval‑Augmented Generation(RAG) 방식이 “관련성 낮은 컨텍스트”와 “생성 단계에서의 환각(hallucination)” 문제에 취약하다는 점을 지적하고, 이를 해결하기 위한 두 축의 설계를 제시한다. 첫 번째 축은 코드와 텍스트를 각각 AST‑기반 계층 구조와 JSON‑DAG 형태로 변환해 프로그래밍 지식 그래프(PKG)를 구축하는 것이다. 코드‑중심 PKG는 함수‑블록‑하위 블록이라는 다중 레벨 트리를 형성해, 함수 단위와 블록 단위 두 가지 granularity(세분화 수준)에서 검색이 가능하도록 설계되었다. 이는 기존 라인‑기반 혹은 단순 BM25 청크와 달리, 구문적 경계를 보존함으로써 검색 정확도를 높이고, 불필요한 코드 조각이 컨텍스트에 포함되는 위험을 감소시킨다. 텍스트‑중심 PKG는 튜토리얼·문서의 섹션·예시·설명 등을 JSON 스키마로 정형화하고, 이를 DAG로 연결해 필드‑레벨 검색을 가능하게 한다. 두 그래프 모두 트리 프루닝 기법을 적용해, 검색 결과가 모델의 컨텍스트 윈도우를 초과하지 않도록 자동으로 저효용 노드를 제거한다. 두 번째 축은 “샘플‑후‑선택” 방식의 재정렬이다. RAG 기반 후보와 비‑RAG 기반 후보를 모두 생성한 뒤, 별도 학습된 재정렬 모델이 정답 가능성이 높은 출력을 선택한다. 이 과정은 RAG가 제공한 외부 지식이 오히려 오류를 유발할 경우, 비‑RAG 솔루션이 우선 선택되도록 하여 환각을 억제한다. 실험에서는 HumanEval과 MBPP 두 데이터셋에 대해 다양한 LLM(코드다빈치, 코드‑LLAMA 등)과 베이스라인(RAG‑Sparse, RAG‑Dense)과 비교했으며, 특히 MBPP에서 34% 이상의 정확도 향상을 기록했다. 오류 분석 결과, Assertion 오류는 크게 감소했지만 Name 오류가 약간 증가했으며, 문자열 조작 문제에서 여전히 어려움을 보였다. 비용 측면에서는 그래프 구축과 프루닝 단계가 추가 연산을 요구하지만, 검색 효율이 향상돼 전체 파이프라인 지연시간은 크게 증가하지 않았다. 전체적으로 PKG와 재정렬 기법이 RAG 기반 코드 생성의 핵심 약점을 보완하고, 복합적인 프로그래밍 지식을 효과적으로 활용할 수 있음을 입증한다.


댓글 및 학술 토론

Loading comments...

의견 남기기