Skip to content
게으른 엔지니어의 기술 블로그
Go back

벤치마크 표를 못 믿어서, 같은 원고 63개로 두 모델을 직접 붙여봤다

「파일쓰기 재설계 이후 5편 — 반례로 됐던 게, 이번엔 절반만 통했다」에서 기본 모델을 gemini-3.5-flash-lite에서 gemini-3.6-flash로 올렸다. 가격은 입력 토큰당 5배, 출력 토큰당 3배 비싸졌지만, 그만큼 무관한 문서끼리 서로 링크하는 오염 버그가 없어질 거라 기대했다.

그런데 그 뒤로도 실사용 검증을 계속 돌리다 보니, 값을 올렸는데도 비슷한 계열의 문제가 계속 나왔다. 원문에 짧게 스치듯 언급된 통계 하나가 요약본에서 통째로 빠지고, 여러 섹션 중 하나가 흔적도 없이 증발하고, 가끔은 출처가 다른 각주로 잘못 붙었다. 한 번 고치면 비슷한 다른 사례가 또 나오는 식으로, 같은 회사 안에서 모델 등급만 올리는 걸로는 바닥이 안 보였다.

이번엔 등급이 아니라 회사를 바꿔보기로 했다

그래서 이번엔 접근을 바꿨다. gemini-3.6-flash보다 비싼 Gemini 모델로 또 올리는 대신, 아예 다른 회사 모델—GPT-5.6 Luna—을 정면으로 붙여보기로 했다. 공개된 벤치마크 점수는 참고만 하고, 믿지는 않기로 했다. 벤치마크는 이 플러그인이 실제로 시키는 일(원문을 위키 노트로 쪼개고 요약하는 것)을 재는 게 아니니까, 결국 내가 실제로 쓰는 프롬프트로 직접 비교해야 의미가 있었다.

기존에 만들어둔 실사용 픽스처(실제 기사 21개, 이전 검증들에서 Gemini의 실패 사례를 하나씩 모아둔 것)를 그대로 GPT-5.6 Luna에도 돌려봤다. 처음엔 표본 3개로 가볍게 확인해봤는데 차이가 뚜렷해서, 착시가 아닌지 확인하려고 표본을 6개까지 늘려 다시 돌렸다. 밀도 보존율(원문의 구체적 사실이 요약본에 얼마나 남는지)이 평균 63%(Gemini) 대 73%(Luna)로 갈렸고, 숫자 조작·출처 오귀속·원문 밖 내용 창작을 유도하는 5가지 함정 조건에서는 Gemini가 1/5만 통과했는데 Luna는 5/5를 전부 통과했다. 가격은 오히려 Luna가 약 7분의 1 수준이었다.

한쪽은 밀도도 더 잘 보존하고, 창작·오귀속 저항력도 훨씬 높고, 가격도 쌌다. 이 정도면 그냥 기본 모델을 Luna로 바꾸면 되는 거 아닌가 싶었지만, 그렇게 하면 “이번엔 다른 회사 모델이 더 좋다”는 결론에 또 갇히는 셈이었다. 지난 글에서 이미 한 번, 등급 하나 올리는 것도 몇 달 못 가서 다시 검증해야 했다. 다음에 또 다른 회사에서 더 나은 모델이 나오면 똑같은 걸 반복해야 한다.

그래서 하나를 정하는 대신, 고를 수 있게 만들었다

그래서 이번엔 특정 모델을 정하는 대신, Gemini·OpenAI·Claude 세 회사 중에서 사용자가 직접 고를 수 있게 만들기로 했다. /ingest, /refactor, RAG 대화, /tags, 노트 내보내기까지 — AI를 호출하는 모든 경로가 선택한 회사로 통일되게 라우팅하는 구조다. 세 회사의 API 요청/응답 포맷이 다 달라서, 안쪽에 공통 헬퍼를 하나 두고 그 위에 회사별 얇은 어댑터를 얹는 식으로 정리했다.

설계 문서와 계획서를 먼저 쓰고, 태스크 5개로 쪼개서 서브에이전트에게 하나씩 맡기고, 태스크마다 리뷰를 거치는 평소 방식대로 진행했다. 중간에 구현자 하나가 지정된 워크트리 밖(메인 브랜치)에 실수로 커밋한 걸 발견해서 되돌리는 일도 있었고, 최종 리뷰에서는 실제로 막아야 하는 버그 세 개가 나왔다 — 채팅창이 Gemini 키만 확인하고 있어서 다른 회사를 골라도 채팅이 막혀 있었던 것, 회사를 바꿔도 예전 회사의 모델 이름이 그대로 남아있던 것, 노트 내보내기가 여전히 Gemini API를 하드코딩해서 부르고 있던 것. 셋 다 고치고 나서 릴리스했다.

실사용 테스트, 그리고 두 번의 UX 피드백

릴리스하고 나서 실제 vault에 GPT-5.6 Luna를 붙여 써보니, 설정 화면 구조가 눈에 걸렸다. 회사를 고르고 API 키를 넣는 칸과, 그 회사 안에서 어떤 모델을 쓸지 고르는 칸이 화면 위아래로 멀리 떨어져 있었다. 회사 선택 바로 밑으로 모델 선택을 옮겼다. AI 이름의 기본값이 여전히 “Gemini”로 박혀 있던 것도 “Butler”로 바꿨다 — 이제 회사를 바꿔도 채팅창 이름이 특정 회사를 가리키지 않는다.

그리고 63개 전부를 실제로 다시 넣어봤다

여기까지는 준비 단계였다. 진짜 검증은 그다음이었다. 갖고 있던 원본 기사·클리핑 63개를 GPT-5.6 Luna로 처음부터 다시 ingest해서 위키 노트 240개를 만들고, 이 결과 전부를 원문과 문장 단위로 대조했다. 혼자서는 시간이 너무 오래 걸릴 규모라, 다섯 개로 나눠 병렬로 검증했다.

그런데 63개 중 상당수가 사실 처음 보는 기사가 아니었다. 예전에 Gemini로 검증하면서 실패 사례를 발견할 때마다 그 기사 원문을 그대로 픽스처(정규 테스트 자료)로 저장해뒀는데, 그중 24개가 이번 63개와 같은 기사였다. 이건 뜻밖의 기회였다 — 같은 원고를 같은 사람이 같은 잣대로, 회사만 다른 모델에 넣어본 셈이 됐다.

고쳐진 것

“삼전 30층, 저 망했나요” 기사는 Gemini 때 원문이 다루는 세 주제 (K자 경제/미국 기준금리/AI 시대 자산배분) 중 “미국 기준금리” 섹션이 통째로 증발했었다 — 케빈 워시 지명, 트럼프의 파월 비난, FOMC 동결 결정까지 원문 3분의 1 분량이 흔적도 없이 빠졌던, 그때까지 발견한 것 중 가장 큰 규모의 누락이었다. 오늘 Luna로 다시 넣어보니 그 케빈 워시 관련 내용은 정확히 보존돼 있었다.

“A reality check on the AI jobs hysteria”도 비슷했다. Gemini 버전은 대졸 실업률 5.6%라는 핵심 수치와, “이번엔 다르다는 근거가 있나?”를 다루는 역사적 반박 섹션(제프리 힌턴의 방사선과 발언, 2016년 오바마 정부 보고서의 트럭 기사 실업 전망 220만310만 명)이 통째로 빠졌었다. Luna 버전엔 5.6%도, 220만310만이라는 숫자도 그대로 들어 있었다.

“A Practical Guide to Becoming an AI-Native Engineer”는 Gemini 때 “개인의 전환 여정”과 “팀 전환: 문화적 기반”(MIT의 심리적 안전감 83% 통계 포함) 두 섹션이 통째로 빠졌던 기사다. Luna 버전엔 이 83%를 포함해서 원문의 구체적 수치(75%, 개발자 3만 명, 40~50%, 70% 등) 대부분이 그대로 남아 있었다.

“정년 전 잘려도 연금포기 NO” 기사에서는 Gemini가 “월 2만240원”이라는 금액을 “월 2만2,400원”으로 자릿수 자체를 깨뜨렸었다. Luna 버전에는 이런 숫자 손상이 보이지 않았다.

안 고쳐진 것, 혹은 다른 걸로 바뀐 것

그런데 “삼전 30층” 기사를 다시 보면, 미국 기준금리 섹션은 살았지만 이번엔 다른 게 빠져 있었다 — 기사 도입부의 구체적 인물 사례(직장인 이모씨, 삼성전자 실적 수치)가 통째로 사라진 것이다. 밀도는 분명 좋아졌는데, “뭐가 살아남고 뭐가 죽는지”의 패턴 자체가 바뀐 셈이다. 모델을 바꾸면 실패율은 낮아지지만, 어떤 부분이 취약한지는 예측할 수 없게 다시 섞인다는 뜻이었다.

다리오 아모데이(앤트로픽 CEO) 인물 소개 기사는 더 극단적인 사례였다. Gemini 버전은 “가장 영향력 있는 인물”이라며 여러 번 등장하는 샘 올트먼의 이름이 세 노트 어디에도 없는 게 문제였다. Luna 버전에서 그 문제를 다시 확인하지는 못했지만, 대신 훨씬 심각한 게 빠져 있었다 — 기사 후반부의 핵심 사건(베네수엘라 군사작전에 클로드와 팔란티어가 투입되고, 국방부와 정면 충돌하고, 연방기관 사용이 중단됐다는 대목) 전체가 통째로 빠져 있었다. 모델을 바꾼다고 “빠지는 것 자체가 없어진다”가 아니라 “무엇이 빠지는지가 다시 굴러간다”는 걸 다시 확인한 셈이다.

Nonviolent Communication 요약 기사는 아예 재현되는 쪽이었다. Gemini 때 발견한 두 누락(“변호사·엔지니어·군인의 직업 규범” 나열, 여성에 관한 문장 하나)이 이번에도 그대로 나왔다. 회사를 바꿔도 안 고쳐지는 실패가 있다는 뜻이다.

대차대조표

Gemini(과거 기록)Luna(오늘 재검증)
삼전 30층 — 미국 기준금리 섹션통째 누락보존
삼전 30층 — 도입부 인물 사례(기록 없음)통째 누락
AI jobs hysteria — 5.6%, 역사적 반박 섹션통째 누락보존
AI-Native Engineer — MIT 83% 섹션통째 누락보존
연금 기사 — 금액 자릿수손상됨정상
아모데이 — 샘 올트먼 이름누락(미확인)
아모데이 — 베네수엘라 작전 섹션(기록 없음)통째 누락
Nonviolent Communication — 두 누락재현그대로 재현

패턴을 하나로 정리하면 이렇다. 원문의 구체적 사실이 통째로 빠지는 유형(#45) 자체는 두 모델 다 겪는다. 다만 Luna는 같은 실패를 훨씬 적게 겪고(63개 중 70%는 아무 문제 없이 클린), 숫자 손상이나 없는 사실을 지어내는 유형은 이번 감사에서 거의 안 보였다. “모델을 바꾸면 다 해결된다”가 아니라 “실패율이 줄고, 실패의 분포가 다시 섞인다”에 더 가까웠다.

모델과 무관한 버그도 새로 나왔다

63개를 전수로 훑다 보니, 어느 회사 모델을 쓰든 똑같이 겪을 구조적 버그도 몇 개 새로 나왔다. 하나는 같은 ingest 호출 안에서 함께 만들어진 형제 노트끼리 서로 링크를 안 걸고, 이름이 같은 예전 노트로 링크가 새는 문제였다. 이게 왜 문제냐면, /refactor가 자동으로 돌 때마다 같은 두 주제(“AI Native Engineering”, “Agentic Development Life Cycle”)를 매번 다른 후보 ID·다른 새 이름으로 중복 병합 제안했는데, 그 반복의 진짜 원인이 콘텐츠가 실제로 중복돼서가 아니라 이 링크 배선 버그 때문이었다. 모델을 아무리 좋은 걸로 바꿔도 이런 종류는 안 고쳐진다 — 프롬프트나 모델이 아니라 링크를 연결하는 로직 자체의 문제라서다.

또 하나는 원문을 여는 구체적 일화나 사건 서사가 유독 잘 빠진다는 패턴이었다. 수치·리스트형 섹션은 꽤 잘 살아남는데, 기사 도입부의 인물 사례나 서사형 문단은 8개 기사에서 반복적으로 통째 누락됐다 — 위에서 본 “삼전 30층” 도입부, “삼전닉스 없이 20억” 기사의 마크 트웨인 일화, 아모데이 기사의 베네수엘라 섹션까지 전부 이 계열이다.

이 두 가지(링크 배선 버그, 서사형 섹션 손실)와 그 외 몇 개를 합쳐서 새 GitHub 이슈 5개로 등록했다. 표본이 아직 1~2개뿐이라 당장 고치기보다는 사례를 더 모으는 단계다.

이제 이 결과를 정규 테스트로 만드는 중

이 감사 결과를 그냥 문서로만 남기지 않고, 예전부터 써온 실사용 픽스처 체계(실제 기사 원문 + 발견한 문제를 적어둔 메모 + 그 문제가 재현되는지 자동으로 확인하는 마커)에 편입시키는 작업을 하고 있다. 이미 있던 24개는 “Gemini 때는 이랬는데 Luna는 어땠다”는 대조 기록을 추가하고, 나머지 39개는 새 픽스처로 만드는 중이다. 앞으로 프롬프트를 수정할 때마다 이 픽스처 하나하나를 기준으로, “이번 수정이 실제로 이 구체적 사례를 고쳤는가”를 확인하면서 진행할 생각이다.

남는 생각

벤치마크 점수 하나로 “이 모델이 더 낫다”고 결론 내리지 않고 직접 붙여본 덕분에, 숫자로는 안 보이던 것까지 봤다. Luna가 밀도도 잘 보존하고 창작도 덜 하는 건 숫자로 이미 나온 결과였지만, “그럼 예전에 문서로 남겨둔 그 구체적 버그들은 실제로 없어졌나”는 같은 원고를 다시 넣어보기 전엔 알 수 없었다. 그리고 그 답은 “네, 근데 다른 게 새로 빠졌어요”에 가까웠다 — 깔끔한 승리가 아니라, 실패의 종류가 달라진 개선이었다.

그리고 회사를 바꿔도 안 고쳐지는 문제(형제 노트 링크 배선, 서사형 섹션 손실)가 따로 있다는 것도, 63개를 전부 훑고 나서야 뚜렷해졌다. 모델 선택은 콘텐츠 품질의 문제고, 이런 구조적 버그는 시스템 자체의 문제다 — 같은 증상처럼 보여도 고치는 방법이 다르다는 걸 이번에 다시 확인한 셈이다.


Share this post:

Previous Post
링크가 깨질 줄 알고 새 필드까지 설계했는데, 이미 다 되어 있었다