AI가 멍청해지는 이유, 프롬프트 엔지니어링 3가지 전략으로 완벽 해결
똑똑한 AI가 왜 엉뚱한 답을 내놓을까요?
우리는 흔히 LLM(거대언어모델)에게 문맥(Context)을 많이 줄수록 더 똑똑하게 대답할 것이라 믿습니다. 특히 RAG(검색 증강 생성) 시스템을 구축할 때 이런 경향이 두드러지죠. 관련 있어 보이는 문서는 일단 다 긁어서 프롬프트에 쑤셔 넣곤 합니다.
하지만 구글 딥마인드(Google DeepMind)의 연구 결과는 우리의 이런 믿음에 경종을 울립니다. 오늘은 “Large Language Models Can Be Easily Distracted by Irrelevant Context” 논문을 통해, 왜 AI가 사소한 소음(Noise)에도 쉽게 무너지는지, 그리고 이를 막기 위해 당장 적용해야 할 해결책은 무엇인지 명쾌하게 정리해 드립니다.
현상: 천재가 바보가 되는 순간
먼저 아주 간단한 초등학교 수학 문제를 봅시다.
문제: 제시카는 클레어보다 6살이 많습니다. 2년 뒤에 클레어는 20살이 됩니다. 제시카는 지금 몇 살일까요?
챗GPT에게 물어보면 0.1초 만에 “24살”이라는 정답을 내놓습니다. 그런데 여기에 문제 풀이와 전혀 상관없는 문장 하나를 슬쩍 끼워 넣으면 어떻게 될까요?
문제: 제시카는 클레어보다 6살이 많습니다. 2년 뒤에 클레어는 20살이 됩니다. 20년 전에 클레어 아빠의 나이는 제시카 나이의 3배였습니다. 제시카는 지금 몇 살일까요?
놀랍게도 많은 LLM이 이 문장에 현혹되어 엉뚱한 계산을 시작합니다. 정답 대신 14살, 2살 같은 오답을 내뱉죠. 이처럼 AI는 생각보다 ‘불필요한 정보(Irrelevant Context)’에 취약합니다.
원인: AI는 왜 속을까? (3가지 함정)
연구진은 GSM-IC라는 벤치마크를 통해 AI가 유독 잘 속는 패턴 3가지를 발견했습니다. 여러분의 프롬프트에 이런 요소가 있는지 점검해 보시길 바랍니다.
① 주제가 비슷할수록 치명적이다 (In-Topic Noise)
AI는 아예 뚱딴지같은 소리(예: “오늘 날씨가 좋다”)는 잘 무시합니다. 하지만 문제와 관련된 듯한 정보에는 쉽게 낚입니다. 수학 문제에서 ‘신발 사이즈’ 이야기는 무시하지만, 등장인물의 ‘나이’나 ‘비용’ 이야기가 나오면 “어? 이것도 계산에 넣어야 하나?”라고 착각하는 것이죠.
② 역할 이름이 겹치면 혼란이 2배 (Role Overlap)
주인공 이름과 비슷한 인물이 등장하면 오답률이 급증합니다. 예를 들어 주인공이 ‘Jeanne’인데, 쓸모없는 문장에 ‘Jeanne’s father’가 등장하는 경우입니다. 실험 결과, 텍스트 다빈치-003 모델조차 이런 경우 정답률이 0% 가까이 곤두박질쳤습니다.
③ 숫자 범위가 비슷하면 계산에 포함한다 (Number Range)
문제에 나오는 숫자들과 단위나 크기가 비슷한 숫자가 불필요한 정보로 제시되면, AI는 본능적으로 그 숫자를 계산식에 포함하려는 경향을 보입니다.
해결책: 견고한 프롬프트를 만드는 3가지 전략
그렇다면 모델을 다시 학습시켜야 할까요? 아닙니다. 프롬프트 엔지니어링만으로 이 문제를 상당히 완화할 수 있습니다.
✅ 전략 1: “무시해”라고 명확히 지시하라 (Instructed Prompting)
가장 쉽고 확실한 방법입니다. 프롬프트 서두에 ‘마법의 문장’을 추가하세요. 단순히 “풀어라”라고 하는 것과 “무시하고 풀어라”라고 하는 것은 천지 차이입니다.
❌ 나쁜 예: “초등학교 수학 문제를 풀어보세요.”
⭕ 좋은 예: “초등학교 수학 문제를 풀어보세요. 질문에 포함된 관련 없는 정보는 무시해도 좋습니다. (Feel free to ignore irrelevant information given in the questions.)”
RAG 시스템을 운영 중이라면, 시스템 프롬프트에 “검색된 문서 중 질문과 관련 없는 내용은 철저히 배제하라”는 지시를 반드시 넣어야 합니다.
✅ 전략 2: 예시에도 ‘노이즈’를 섞어라 (Few-shot with Noise)
보통 퓨샷(Few-shot) 예시를 만들 때 깔끔한 정답만 보여주곤 합니다. 하지만 연구진은 오히려 ‘관련 없는 정보가 섞인 예제’를 보여주는 것이 AI의 면역력을 키워준다고 말합니다.
방법: 예시(Exemplar) 질문에 불필요한 문장을 일부러 넣으세요. 그리고 답변(CoT) 과정에서 그 정보를 무시하고 정답을 도출하는 과정을 보여주는 겁니다. AI가 이를 보고 “아, 이런 정보는 거르는 거구나”라고 학습하게 만드는 원리입니다.
✅ 전략 3: 다수결을 따르라 (Self-consistency)
가장 강력한 방법입니다. AI에게 같은 질문을 여러 번 던져 20개 정도의 답변을 생성하게 한 뒤, 가장 많이 나온 답을 채택하는 것입니다. 소음에 휘둘려 오답을 낼 확률이 획기적으로 줄어듭니다.
요약 및 제언
현실의 데이터는 교과서처럼 깔끔하지 않습니다. RAG가 긁어오는 문서에는 필연적으로 노이즈가 섞여 있고, 사용자의 질문에는 사족이 달리기 마련입니다.
모델이 알아서 문맥을 잘 파악할 것이라 맹신하지 마세요. 오늘 당장 여러분의 시스템 프롬프트에 이 한 줄을 추가하는 것부터 시작해 보시길 권합니다.
“Feel free to ignore irrelevant information.”
이 작은 디테일이 여러분의 서비스를 훨씬 더 똑똑하고 견고하게 만들어줄 것입니다.
