이백 줄짜리 게임과 십만 줄짜리 둠에서 같은 것이 두 번 갈렸다. 코드를 통째로 밀어 넣으면 러스트 번역이 컴파일도 안 됐고, 그래프를 얹으니 그대로 돌았다. 삼십 년 된 둠에 원작에 없던 점프를 넣는 일은 코딩 에이전트를 그래프에 붙여 뚫었고, 앞서 시도한 다른 에이전트들은 전부 실패했다고 말한다. 함께 공개한 벤치마크로 재 보니 컨텍스트 창 8K·120K·백만 토큰 전부에서 92·90·91% 비율로 이겼고 값은 십분의 일이었다.
한줄 코멘트. 긴 컨텍스트 창이 이 문제를 못 푼다는 것이 이 발표에서 값나가는 대목이다. 백만 토큰짜리를 상대로도 91% 비율로 이겼고 값은 십분의 일이었다. 다만 이긴 비율은 정답률이 아니다 — 심판이 거대언어모델이고 재는 것은 포괄성·다양성·역량강화·관련성 넷이다. 그래프를 짓는 데 드는 값도 나오지 않는다.
마이크로소프트 리서치에서 그래프 팀을 이끄는 사람이 발표한다. 지난해 낸 논문과 저장소가 생각보다 크게 주목을 받았고 다른 곳의 제품에도 영향을 줬다고 말한다.
오늘 남기고 싶은 것을 두 줄로 못 박는다. 구조를 갖춘 기억이 쓸 만한 AI를 만드는 핵심이라는 것, 그리고 거기에 에이전트를 붙이면 힘이 크게 불어난다는 것이다.
다룰 것은 셋이라고 예고한다. *그래프RAG를 코딩 쪽에 대 본 사례, 이날 공개하는 벤치마크, 그리고 새 방식의 성적이다. 새 방식이 어떻게 도는지는 다루지 않고 성적만 보이겠다고 미리 밝힌다.
첫 시연은 사내 엔지니어가 만든 터미널 게임이다. 장애물을 뛰어넘으면 점수를 얻고 부딪히면 잃는다. 일곱 파일에 이백 줄쯤이다.
조건 둘을 든다. 모델이 이 코드를 한 번도 본 적이 없고, 사람은 전체를 다 알 만큼 작다는 것이다.
같은 코드, 두 가지 답
같은 코드에 같은 것을 물었다
이 차이를 *글로벌 질의로 설명한다. 방금 물음은 저장소 전체를 이해해야 답이 되고, 그런 자리에서 그래프가 힘을 낸다는 것이다.
다음은 번역이다. 같은 파이썬 코드를 러스트로 옮기라고 시킨다.
먼저 그래프 없이 이백 줄을 통째로 넣고 여러 프롬프트로 시도한다. 러스트 코드가 나오기는 했다. 컴파일해 보니 곳곳에서 막혀 그대로는 돌지 않았다.
같은 일을 그래프를 얹어 다시 시킨다. 나온 러스트 파일들을 그대로 실행하니 게임이 통째로 옮겨져 돌았다고 말한다.
이제 장난감을 벗어난다. 삼십 년쯤 된 둠 코드베이스로, 십만 줄에 231개 파일이다.
모델들이 둠을 학습으로 알고는 있었다. 이 코드베이스의 구체적인 것은 몰랐고, 뜻이 통하게 고치라고 시키면 다시 완전히 실패했다.
먼저 저장소 전체 문서를 지어 보게 한다. 스무 개에서 서른 개 파일에 걸친 소리 시스템 전체가 어떻게 도는지까지 나왔다고 말한다.
그다음이 기능 추가다. 원작 둠에는 점프가 없다. 그것을 넣으려면 여러 파일을 한꺼번에 고쳐야 한다. 그런 일을 AI에 시키면 한 파일은 잘 고치면서 다른 파일들을 깨뜨리고, 그것이 되풀이된다고 말한다. 코드가 서로 어떻게 맞물려 있는지를 모르기 때문이라는 것이다.
둠에 점프를 넣기까지
화제를 바꿔 벤치마크 하나를 이날 공개한다고 알린다. 전날 밤에야 저장소에 올렸다고 말한다.
벤치마크의 세 부품
| 부품 | 무엇을 하나 |
|---|---|
| 오토Q | 대상 자료에 맞는 물음을 지어낸다 |
| 오토E | 거대언어모델을 심판으로 세워 답을 채점한다 |
| 오토D | 자료를 요약하고 골라 낸다 |
오토Q는 물음을 두 축의 격자 위에서 짓는다. 한 축은 한 자리로 끝나는가 전체를 알아야 하는가이고, 다른 축은 자료 자체에서 뽑았는가 누가 무엇을 하려는가에서 뽑았는가다.
예로 든 자료는 의료 사건을 모은 통신사 기사 묶음이다. 한쪽 끝은 2024년 2월 한국 전공의들이 왜 파업했는가처럼 짚을 자리가 분명하다. 반대쪽 끝은 소외된 지역을 겨냥한 주요 공중보건 사업이 무엇인가처럼 임베딩으로도 색인으로도 붙잡을 자리가 없다.
채점은 네 지표를 합쳐 낸다. 포괄성과 다양성과 역량강화는 지난 논문에서 쓰던 것이고, 관련성이 이번에 붙었다.
새 방식을 *벡터RAG와 견줬다. 상대는 컨텍스트 창 크기가 다른 셋이다.
자료-로컬 물음에서 이긴 비율
| 견준 상대 | 이긴 비율 |
|---|---|
| 컨텍스트 창 8K | 92% |
| 컨텍스트 창 120K | 90% |
| 컨텍스트 창 백만 토큰 | 91% |
발표자가 뜻밖이라고 말하는 대목이 둘이다. 하나는 한 자리로 끝나는 물음에서는 보통 방식이 나을 줄 알았는데 전 구간에서 밀렸다는 것이다. 다른 하나가 더 크다. 백만 토큰짜리 긴 컨텍스트 창이 별 차이를 만들지 못했다.
슬라이드에 없는 값도 하나 댄다. 이 시험에서 새 방식의 값이 백만 토큰 방식의 십분의 일이었다는 것이다.
*레이지 그래프RAG는 두 제품에 실린다고 알린다. 하나는 애저 로컬이고, 다른 하나는 가설에서 실험과 학습을 거쳐 지식으로 가는 과학 공동추론 플랫폼이다. 그 안의 질의응답도 이 방식이 뒤에서 받는다고 말한다.
새 방식이 어떻게 도는지가 없다. 성적만 보이겠다고 스스로 밝히고 넘어간다. 자세한 것은 다음 날 올릴 글로 미룬다.
이긴 비율은 정답률이 아니다. 심판이 거대언어모델이고 재는 것은 포괄성·다양성·역량강화·관련성 넷이다. 코드가 맞았는지 답이 사실인지를 잰 값이 아니다.
막힌 자리를 한 번도 대지 않는다. 그래프를 얹은 쪽이 실패하거나 모자랐던 사례가 발표 내내 나오지 않는다.
그래프를 짓는 값이 없다. 십만 줄에 231개 파일을 그래프로 만드는 데 얼마가 걸리고 얼마가 드는지, 코드가 바뀔 때마다 다시 짓는 품이 얼마인지가 없다. 십분의 일이라고 댄 값은 물어볼 때 드는 값이다.
진 에이전트들의 이름이 없다. 앞서 시도한 것들이 전부 실패했다고만 하고 어느 것인지 대지 않는다. 점프 작업을 몇 번씩 돌려 봤는지도 없다.
시연이 전부 영상이다. 자리에서 돌린 것이 아니라 미리 찍어 둔 것을 튼다.
자막이 이름을 크게 뭉갠다. 그래프RAG를 부르는 말이 여러 군데에서 다르게 들려 정확한 표기는 원문에서 갈린다.
용어