← 최신 논문
💬 NLP

Beyond "What to Retrieve": Uncertainty in Retrieval-Augmented Code Generation

이 논문은 소스별 불확실성을 추정하고 이를 활용하여 이질적인 검색 증거를 필터링 및 순위화함으로써 저장소 수준의 코드 생성 정확도를 향상시키는 동시에, 그 이점이 특정 LLM 백엔드 및 증거 간의 상호작용에 의존함을 입증하는 불확실성 인지 프레임워크인 OpenCoder를 소개한다.

원저자: Chandan Kumar Sah, Xiaoli Lian, Li Zhang

게시일 2026-07-29
📖 4 분 읽기☕ 가벼운 읽기

원저자: Chandan Kumar Sah, Xiaoli Lian, Li Zhang

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신이 복잡한 레고 성을 만들려고 하는데, 앞문 만드는 법만 적힌 단 한 권의 설명서만 손에 쥐었다고 상상해 보십시오. 문은 어떻게 만드는지 알지만, 성에는 창문도 필요하고 지붕과 비밀 지하 통로도 필요합니다. 이것이 인공지능(AI)이 실제 프로젝트를 위한 컴퓨터 코드를 작성할 때 겪는 일상적인 고충입니다. AI는 작고 고립된 코드 조각을 작성하는 데는 놀라울 정도로 능숙해졌지만, 거대한 기존 소프트웨어 "동네"에 어울리는 무언가를 만들어야 할 때는 길을 잃곤 합니다. 이를 해결하기 위해 연구자들은 **검색 증강 생성(Retrieval-Augmented Generation, RAG)**이라는 기술을 사용합니다. RAG를 AI에게 초강력 검색 엔진을 쥐여주는 것이라고 생각하십시오. AI는 코드 한 줄을 쓰기 전에, 유사한 프로젝트를 찾아보고, 동네 규칙(프로젝트 특유의 관례)을 확인하며, 사용할 적절한 도구(API)를 찾아냅니다.

하지만 문제가 있습니다. 검색 엔진이 많은 정보를 찾아낸다고 해서 그 정보가 반드시 도움이 되는 것은 아닙니다. 때때로 AI는 프로젝트를 망가뜨릴 수도 있는, 겉보기에만 유사한 코드 조ков를 찾아내기도 하며, 다른 때에는 특정 작업에 맞지 않는 도구를 찾아내기도 합니다. 정보는 존재하지만, 그것이 소음이거나, 상충하거나, 혹은 그냥 틀린 것일 수 있습니다. 연구자들이 던져온 핵심 질문은 이것입니다. 어떻게 하면 AI가 단순히 올바른 정보를 '찾는' 것을 넘어, 그 정보를 '얼마나 신뢰할지'를 알게 할 것인가? 만약 AI가 유용한 단서와 오도하는 레드 헤링(미끼)을 구별하지 못한다면, 문을 열려고 하는 순간 무너져 내리는 성을 짓게 될 것입니다.

여기서 베이항 대학교(Beihang University) 연구진의 새로운 연구인 OpenCoder가 등장합니다. OpenCoder는 AI를 위한 회의적이고 매우 체계적인 프로젝트 매니저 역할을 합니다. 검색 엔진이 찾아낸 모든 정보를 맹목적으로 신뢰하는 대신, OpenCoder는 모든 단서에 "의구심 점수(doubt score)"를 부여합니다. 이 시스템은 "이 API가 적절한 것에 대해 얼마나 불확실한가?" 또는 "이 유사한 코드가 우리 프로젝트와 충돌할 가능성은 얼마나 되는가?"라고 자문합니다. 불확실성을 버그가 아닌 유용한 신호로 취급함으로써, OpenCoder는 노이즈를 걸러내고, 단서들의 신뢰도를 기준으로 순위를 매기며, 심지어 스스로의 실수를 파악하고 멈추는 법까지 알고 있습니다.

연구진은 32가지의 서로 다른 실제 과제를 AI에게 코드를 작성하도록 요청하여 이 시스템을 테스트했습니다. 그 결과, 강력한 AI 모델인 GPT를 사용할 때 OpenCoder는 최종 코드의 성공률을 기존 검색 방식의 **56.25%**에서 **78.13%**로 크게 높였습니다. 그러나 연구진은 중요한 미묘한 차이를 발견했습니다. 이러한 개선은 표준 검색을 사용하면서 "검증 및 복구(verify and repair)" 단계를 추가한 대조군의 성능과 일치했습니다. 이는 OpenCoder의 불확실성 필터링이 도움이 되긴 했지만, 엄청난 성공률의 상승은 주로 검증하고 오류를 수정하는 능력에 의해 주도되었다는 점을 시사합니다. 비결은 단순히 더 많은 정보를 찾는 것이 아니라, "이 특정 증거는 미심쩍으니 무시하자"라고 말하고, "이 다른 조각은 확실하니 사용하자"라고 말할 수 있는 능력, 그리고 실수 방지를 위한 안전망을 갖추는 것이었습니다.

하지만 이야기는 단순히 "AI의 승리"로 끝나지 않습니다. 연구진은 이 성공이 어떤 AI 두뇌가 사고를 하느냐에 따라 크게 달라진다는 점을 주의 깊게 언급했습니다. 만약 GPT를 Gemini라는 다른 모델로 교체하면 결과는 훨씬 불분명해졌습니다. 개선 효과가 통계적으로 유의미하지 않았는데, 이는 OpenCoder의 "불확실성 레이더"가 AI의 개성에 따라 다르게 작동함을 시사합니다. 또한, 프로젝트에 정보가 너무 부족한 경우에는 시스템이 한계에 부딪혔습니다. 정보가 불완전한 경우, 검증과 복구가 포함된 표준 시스템이 오히려 OpenCoder보다 더 나은 성과를 보였습니다. 이는 검색 엔진이 시작하는 데 필요한 도구를 찾지 못할 때, OpenCoder의 필터링 메커니즘이 가용한 몇 안 되는 증거들마저 억제해 버릴 수 있음을 나타냅니다. 즉, 결정을 개선하기보다는 오히려 방해할 수 있다는 것입니다.

연구는 또한 서로 다른 유형의 정보가 어떻게 함께 작용하는지에 대한 놀라운 사실도 발견했습니다. "유사한 코드", "프로젝트 컨텍스트", "API 지식"을 모두 갖추는 것이 항상 하나만 있는 것보다 낫다고 생각할 수 있습니다. 하지만 연구진은 보편적인 규칙은 없다는 것을 발견했습니다. 때로는 "유사한 코드"를 추가하는 것이 적절한 "프로젝트 컨텍스트"와 결합되지 않으면 오히려 AI를 혼란스럽게 만들었습니다. 이는 지도, 나침반, GPS를 가진 것과 같습니다. GPS만 있다면 길을 잃을 수 있고, 지도와 나침반만 있다면 괜찮을 수 있지만, 세 가지를 모두 가졌는데 서로 충돌한다면 결국 제자리를 맴돌게 될 것입니다. 각 단서의 가치는 다른 단서들이 무엇인지에 따라 전적으로 달라집니다.

이를 구현하기 위해 OpenCoder는 5단계의 춤을 춥니다. 첫째, 프로젝트의 모든 규칙과 도구의 라이브러리를 구축합니다. 둘째, 사용자의 요청을 작은 단계들로 나눕니다. 셋째, 단서를 찾아 나서되, 이번에는 단서들이 얼마나 "불확실한지"를 기준으로 점수를 매깁니다. 넷째, 코드를 생성하되, 불안정한 단서를 피하기 위해 "불확실성 점수"를 면밀히 살핍니다. 마지막으로, 가장 중요한 단계로, 스스로 품질 관리 검사관 역할을 수행합니다. 코드를 일련의 테스트를 통해 실행합니다. 만약 코드가 실패하면, 단순히 포기하는 것이 아니라 오류를 식별하고 검증 피드백을 바탕으로 코드를 복구하려고 시도합니다.

결론적으로, 이 논문은 AI 코딩의 미래가 단순히 AI를 더 똑똑하게 만들거나 더 많은 데이터를 주는 것에 있지 않다고 제안합니다. 그것은 AI에게 겸손함과 비판적 사고를 가르치는 것입니다. 불확실성을 의사결정을 안내하는 도구로 취급함으로써—나쁜 데이터를 걸러내고, 출력을 검증하며, 즉석에서 오류를 수정하는 것—OpenCoder와 같은 시스템은 더 신뢰할 수 있는 소프트웨어를 구축할 수 있습니다. 그러나 연구진은 경고하듯, 이것이 모든 상황에서 작동하는 마법 지팡이는 아닙니다. 이는 AI가 다룰 수 있는 충분한 좋은 정보가 있고, 특정 AI 모델이 "의구심 점수"를 올바르게 이해하도록 튜닝되어 있을 때 가장 잘 작동합니다. 현재로서 OpenCoder는 강력한 진전이며, 때로는 자신이 무엇을 모르는지 아는 것이 퍼즐을 푸는 데 있어 가장 중요한 부분임을 증명하고 있습니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →