
"컨텍스트를 추가하면 모델이 더 똑똑해진다"는 말은 절반만 사실이었다
요약
RAG와 프롬프트 컨텍스트 추가가 모델의 지식 공백은 메울 수 있지만, 모델 자체의 독해력과 이해 능력(Capacity) 문제는 해결하지 못한다는 점을 실험으로 증명합니다. 문제의 원인이 정보 부족인지 모델의 지능 부족인지 구분하는 것이 효율적인 AI 개발의 핵심입니다.
핵심 포인트
- 컨텍스트는 고유명사, 생략된 주어 등 '누락된 지식'을 채우는 데 효과적임
- 모델의 근본적인 독해력과 어조 문제는 컨텍스트 추가로 해결되지 않음
- 문제 원인이 이해 능력 부족일 경우, 컨텍스트보다 모델 크기(Parameter)가 중요함
- RAG 투자 전, 정보 공백 문제인지 모델 용량 문제인지 구분해야 함
RAG와 프롬프트에 컨텍스트를 주입하는 것이 채워주는 것은 "누락된 지식"입니다. 모델 바로 앞에 정답이 놓여 있더라도 이해 능력의 부족 문제는 여전히 해결되지 않은 채로 남습니다.
"컨텍스트를 추가하면 모델이 더 똑똑해진다"는 말은 절반만 사실이었습니다.
컨텍스트가 채워주는 간극은 직접 찾아볼 수 있는 것들입니다. 화자, 고유명사, 생략된 주어 등 — 컨텍스트는 이 모든 것을 완벽히 채워주었습니다 (13-0). 하지만 깊은 독해력(Reading comprehension)과 어조(Register)는 모델 바로 앞에 정답이 놓여 있어도 해결되지 않습니다. 이는 원재료의 문제가 아니라 용량(Capacity)의 문제입니다.
실제 운영 환경과 유사한 전체 요인 실험(Full factorial)에서, 27B 모델 대비 손실률은 제가 컨텍스트를 어떻게 제공하든 76% / 75% / 76%로 유지되었습니다. 그리고 가장 비용이 많이 드는 방법(가중치에 직접 학습시키는 것)은 가장 저렴한 방법(프롬프트에 즉시 붙여넣는 것)을 이길 수 없었습니다 — 출력값은 94% 동일했습니다. 당신이 가진 문제의 절반이 어느 쪽인지는 투자하기 전에 구분할 수 있습니다.
"모델이 충분히 똑똑하지 않다면, 더 많은 컨텍스트를 제공하라" — 이것은 현재 AI 개발에서 가장 인기 있는 처방입니다. RAG (문서를 검색하여 프롬프트와 함께 모델에 전달하는 방식)는 동일한 아이디어의 확장입니다. 주변 정보를 제공하면 모델이 "컨텍스트를 읽고" 올바르게 답변할 것이라는 믿음입니다.
저도 똑같이 생각했습니다. 자막 번역에서 제가 사용하는 작은 모델 (8B = 80억 개의 파라미터)은 독해력 측면에서 대형 모델 (27B = 270억 개의 파라미터)에 뒤처집니다. 그래서 — 만약 앞뒤 문장을 함께 전달한다면 — 작은 모델도 분명 따라잡을 수 있지 않을까? 투자를 결정하기 전, 저는 이를 측정해 보았습니다.
결과는 정확히 반으로 갈렸습니다. 절반은 사실이었고, 나머지 절반은 거짓이었습니다. 만약 제가 그 거짓을 잡아내지 못했다면, 아무런 성과도 얻지 못할 훈련(training) 투자에 몇 주를 쏟아부을 뻔했습니다. 더 중요한 것은, 당신의 문제가 어느 쪽 절반에 속하는지를 투자하기 전에 구분할 수 있다는 점입니다. 만약 그것이 단순히 찾아볼 수 있는 정보의 공백이라면, 컨텍스트(context)가 저렴하게 그 빈틈을 채워줄 것입니다. 하지만 그것이 이해 능력(comprehension capacity)의 부족이라면, 오직 모델의 크기(size)만이 이를 해결할 수 있습니다. 이 차이가 바로 당신이 RAG에 베팅할지, 아니면 모델 자체에 베팅할지를 결정하는 기준이 됩니다.
첫째 — 컨텍스트는 실제로 효과가 있었다
첫 번째 실험은 상한선(upper bound)을 측정하는 것이었습니다. 만약 컨텍스트가 완벽하다면, 작은 모델이 얼마나 더 나아질 수 있을까? 화자의 성별, 고유명사의 정확한 읽기, 생략된 주어 — 저는 장면의 상태를 전지적 시점에서 준비한 뒤, 동일한 8B 모델을 사용하여 완벽한 컨텍스트를 제공받은 버전과 컨텍스트를 전혀 받지 못한 현재 버전을 대결시켰습니다.
평가는 쌍체 비교(pairwise) 방식(두 번역을 나란히 두고 항목별로 더 나은 것을 선택하는 방식; 이는 전체 점수를 매기는 것보다 결과의 변동성이 적습니다)으로 진행되었습니다. 한 드라마의 4개 에피소드에 걸쳐 86개 항목을 측정했습니다 —
완벽한 컨텍스트가 있을 때: 40승 / 없을 때: 22승 / 24무. 결정적 승리만을 기준으로 했을 때(분모에서 무승부 제외) 65%이며, 통계적으로 유의미합니다 (p≈0.03). 컨텍스트는 정말로 효과가 있었습니다. 지금까지는 처방이 유효했습니다.
— 하지만 무엇이 효과가 있었는지 분석해 보자
문제는 여기서부터 시작되었습니다. 저는 효과가 있었던 요소들을 차원(dimension)별로 나누어 다시 집계했습니다.
| 효과가 있었던 차원 | 기록 |
|---|---|
| 화자의 성별 (ore/watashi — 말투) | 8-0 |
| ... | |
| (이 차원들이 전부를 나타내는 것은 아니며, 하나의 항목이 여러 차원에 속할 수 있습니다. 따라서 차원별 합계가 전체 40승 / 22패와 일치하지는 않습니다.) |
보시다시피, 효과가 있었던 거의 모든 요소는 상위 세 가지 차원 — 화자의 성별 (speaker gender), 고유명사 (proper nouns), 생략된 주어 (dropped subjects) — 에 집중되어 있었습니다. 그리고 이 세 가지는 공통점이 있습니다. 바로 모두 찾아볼 수 있는 것이라는 점입니다. 누가 말하고 있는지, 이름이 어떻게 읽히는지, 생략된 주어가 누구인지. 직접 찾아본다면 대본 안에 모두 들어 있습니다. 이것들은 바로 지식의 공백 (gaps in knowledge) 입니다.
반면에, 장면의 어조 (register for the scene)는 효과가 없었으며 (was a wash), 의미론적 정확성 (semantic correctness)은 전혀 움직이지 않았습니다. 원재료, 즉 컨텍스트 (context)를 바로 눈앞에 가져다 놓아도 8B 모델은 여전히 그 차이를 번역해내지 못합니다. 이것은 지식의 공백 문제가 아니라, 이해와 표현의 능력 (capacity for comprehension and expression) 의 문제입니다.
덧붙이자면, 얼마 전까지만 해도 저는 "컨텍스트는 도움이 되지 않는다 — 무승부다"라고 결론지었습니다. 그 이유는 불충분한 컨텍스트를 불안정한 점수로 측정했기 때문입니다. 효과가 있는 요소(성별)와 효과가 없는 요소(어조)를 하나의 전체 점수로 섞어버리면 서로 상쇄되어 무승부처럼 보입니다. 차원별로 분리해서 측정했을 때 비로소 13-0이라는 신호가 보였습니다 (매니페스토의 첫 번째 원칙, 먼저 측정하라 (Measure First) — 무엇을 측정하느냐도 포함됩니다).
핵심 질문 — 컨텍스트가 작은 모델이 큰 모델을 따라잡게 해줄 것인가?
상한선 실험 (upper-bound experiment)을 통해 완벽한 컨텍스트가 있다면 효과가 있는 차원들이 있다는 것을 알게 되었습니다. 이제 실질적인 질문입니다. 만약 주변 문장들을 건네준다면, 8B가 27B를 따라잡을 수 있을까요? 이것이 투자 결정의 갈림길입니다.
저는 434개의 만화 아이템(일본어→영어)을 대상으로 제가 직접 만든 8B 모델을 대형 27B 모델과 비교 실험했습니다. 실제 서비스와 정확히 동일한 프롬프트 형식을 사용하였고, 생성의 무작위성을 0으로 고정했습니다 (temp0 = 매번 동일한 답변이 나옴; 이는 실험 변수를 깨끗하게 유지하기 위함입니다). 이에 더해, 다른 모든 조건은 동일하게 유지한 채 컨텍스트를 제공하는 세 가지 방식을 비교했습니다.
- A: 컨텍스트 없음 (no context) (현재 상태)
- B: 프롬프트에 즉석에서 컨텍스트 주입 (context injected into the prompt on the spot)
- C: 학습을 통해 가중치에 컨텍스트를 내재화 (context baked into the weights by training) (context-aware CPO = 컨텍스트가 첨부된 선호도 기반 학습 버전)
그 다음, 각각을 27B 모델과 대조하여 실행한 뒤 **27B 대비 손실률 (loss rate against the 27B)**을 살펴보았습니다 (결정적 답변 기준, 무승부 제외).
그림 1: 27B 대비 손실률은 컨텍스트를 제공하는 방식에 따라 변하지 않습니다. 컨텍스트 없음 76% / 프롬프트에 주입 75% / 학습을 통해 내재화 76%. 어떤 방식으로 컨텍스트를 제공하든, 격차는 움직이지 않았습니다.
참고: 만화 아이템 434개, temp0, 결정적 답변 기준 (무승부 제외).
컨텍스트 없음 76% → 프롬프트에 주입 75% → 가중치에 내재화 76% (이 전체 요인 실험은 모두 동일한 temp0 실행 결과입니다). 하지만 어떤 방식으로 컨텍스트를 제공하더라도, 27B와의 격차는 변하지 않았습니다. 이 temp0, 결정적 답변 기준에서, 세 가지 조건 모두에서 8B가 27B를 상대로
- 「太陽に溶かされて」 ("melted by the sun" — 일본어 원문은 주어가 생략되어 있음; 날개에 관한 시였던 앞 문장이 전달됨): 8B는 잘못된 주어를 선택하여 **"I'd be melted"**라고 답했습니다. 반면 27B는 **"they melt"**라고 올바르게 답했습니다.
- 「天文部を頼む」 ("천문부를 부탁해" — 문맥상 이 요청은 당신에게 하는 것임): 8B는 명령의 방향을 반대로 번역했습니다. 27B는 **"I want you to help"**라고 올바르게 번역했습니다.
- 캐릭터 이름 「相川仁」 (이름 한자 '仁'은 여러 가지 유효한 읽기 방식이 있음): 8B는 **"Masaru"**라는 읽기를 놓쳤고, 27B는 **"Jin"**이라고 답했습니다.
원재료, 즉 컨텍스트 (context)는 두 경우 모두 동일하게 전달되었습니다. 그럼에도 격차는 나타납니다. 이는 컨텍스트를 사용하는 능력 자체가 모델의 용량 (capacity)에 의해 제한된다는 것을 의미합니다. 지식을 바로 눈앞에 가져다 놓더라도, 그것을 읽어낼 용량이 없다면 사용할 수 없습니다.
결정적인 증상도 있었습니다. 긴 컨텍스트가 주어졌을 때, 8B는 19개 항목에서 출력 형식 (output format)을 깨뜨렸습니다 (27B는 4개 항목에서만 발생). 용량의 한계는 정확도뿐만 아니라 이와 같은 견고함 (robustness)의 저하로도 나타납니다.
"가중치에 구워 넣기 (Baking it into the weights)"는 "즉석에서 전달하기"를 단 한 치도 앞서지 못했다
마지막으로, 가장 비용이 많이 드는 옵션인 **가중치에 컨텍스트를 구워 넣는 방식 (C)**을 테스트했습니다. 컨텍스트를 즉석에서 프롬프트 (prompt)에 넣는 대신 (B), 컨텍스트를 포함하는 데이터에 대해 선호도 학습 (preference training)을 수행하면 모델이 컨텍스트를 더 잘 사용하는 법을 배울 수도 있을 것이라는 기대였습니다.
결과는 냉혹했습니다. 학습된 버전 (C)과 즉석에서 전달하는 버전 (B)은 temp0에서 94% 일치하는 출력을 생성했습니다 (차이가 나는 6%는 사소한 수준이었습니다). 256쌍의 자료로 번거롭게 학습을 진행했음에도 불구하고, 결과적으로는 컨텍스트를 즉석에서 프롬프트에 붙여넣는 것과 사실상 동일한 결과를 얻었습니다. → 따라서 이 학습 방식은 채택되지 않았습니다.
컨텍스트 엔지니어링 (Context engineering)은 필요합니다. 하지만 **"즉석에서 프롬프트에 전달하는 것만으로 충분"**했습니다. 가중치 (weights)에 이를 구워 넣는(baking) 것은 가치가 없었습니다. 그리고 무엇보다도: 컨텍스트를 어떻게 엔지니어링하든, 8B 모델 단독으로는 27B 모델에 도달할 수 없습니다. 그 격차를 줄이는 것은 컨텍스트의 역할이 아니라 용량 (capacity) — 즉, 더 큰 베이스 모델 — 의 역할이었습니다 (매니페스토의 두 번째 원칙, 여전히 더 저렴하고 빠를 수 있습니다 — 여기서는: 컨텍스트만 최적화하지 마십시오. 제약 요인은 컨텍스트 측이 아니라 용량 측에 있었습니다).
교훈 (Lessons)
-
컨텍스트는 부족한 지식을 해결하지만, 이해를 가로막는 벽은 용량입니다. 화자, 고유 명사, 생략된 주어와 같이 찾아볼 수 있는 공백은 컨텍스트나 RAG (Retrieval-Augmented Generation)를 통해 채워집니다 (13-0, 유의미함). 하지만 깊은 독해력 (reading comprehension)과 어조 (register)는 자료를 건네준다고 해서 채워지지 않으며, 모델의 용량이 필요합니다. RAG는 전자에 대한 특정한 치료법이며 후자에는 아무런 도움이 되지 않습니다. 투자하기 전에 이 둘을 분리하십시오.
-
효과가 있는 것과 용량에 제한된 것을 섞어서 측정하지 마십시오. 효과가 있는 차원 (성별 8-0)과 효과가 없는 차원 (어조 4-4)을 하나의 전체 점수로 섞으면 서로 상쇄되어 무승부처럼 보이고, 신호를 잘못 읽게 됩니다. 차원별로 분리해야만 무엇이 작동하고 무엇이 작동하지 않는지 볼 수 있습니다 (매니페스토의 첫 번째 원칙). 실제로 저는 한 번 섞어서 측정했다가, 컨텍스트가 도움이 되지 않는다는 잘못된 결론을 내렸습니다.
-
때로는 가장 비싼 옵션이 가장 저렴한 옵션을 이기지 못합니다. 컨텍스트를 가중치에 구워 넣는 것은 프롬프트에 붙여넣는 것을 이길 수 없었습니다 — 출력 결과가 94% 동일했습니다. 게다가, 모델이 읽지 못한다면 지식을 전달하는 것은 무용지물입니다 — 정확한 컨텍스트가 바로 앞에 있음에도 불구하고, 8B 모델은 여전히 주어와 고유 명사를 놓쳤습니다. 투자하기 전에 저렴한 방법과 비싼 방법을 동일한 기준으로 측정하십시오.
컨텍스트를 추가하면 모델이 더 똑똑해진다 — 이는 절반만 사실입니다. 채워지는 것은 당신이 찾아볼 수 있는 공백들뿐입니다. 이해를 가로막는 벽은 결국 모델 용량 (model capacity)이며, 지능만을 쫓는 것이 실시간에서 사용할 수 없는 결과물을 남기는 것과 마찬가지로, 컨텍스트만을 쫓는 것만으로는 용량의 벽을 넘을 수 없습니다.
부록: raw data
본문에 포함되지 않은 측정 조건, 판단 방법 및 별도 실행에 대한 교차 검증 내용입니다.
| 실험 | 결과 | 조건 및 주의사항 |
|---|---|---|
| 상한선 실험 (완벽한 컨텍스트 vs 없음) | 40승 / 22패 / 24무, p≈0.030 | 드라마 4개 에피소드, 8B-SFT, temp0, pairwise, n=86. 4개 에피소드 모두 동일한 방향을 가리킴 |
| ... | ||
| 본문의 출력 예시(「太陽に溶かされて」, 「天文部を頼む」, 「相川仁」)는 모두 프롬프트에 컨텍스트가 주입되어 재생성된 버전의 출력물입니다. |
원문은 LYR Performance Note #015에 게시되었습니다 — 이는 “Models — smaller, faster, sharper” 시리즈의 일부입니다. 전체 시리즈는 lyr.jp/en/research에서 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기