대부분의 사람들은 LLM에 두서없고 장황하며 문법이 엉망인 프롬프트를 넣으면 쓰레기 같은 답변이 나올 것이라 생각한다. 하지만 이러한 직관은 틀렸다. 그리고 왜 틀렸는지를 이해하면, 이 모델들이 실제로 어떻게 작동하는지에 대한 중요한 사실을 깨닫게 된다.

맞춤법 오류? 거의 상관없다. 엉망인 문법? 신경도 쓰지 않는다. 모델은 오타를 포함한 인터넷 전체의 데이터로 학습되었다. “teh”가 “the” 옆에 쓰인 것을 수십억 번이나 보아왔다. 당신의 오타는 모델에게 아무런 문제가 되지 않는다. 그저 반올림 오차 수준일 뿐이다.

진짜 부작용은 사람들이 생각하는 것과 전혀 다른 곳에 있다. 그리고 실제 실패가 어디서 발생하는지 이해하면 이러한 시스템과 상호작용하는 방식 자체가 바뀌게 된다.

거친 입력이 대체로 잘 작동하는 이유

LLM은 어학 교사처럼 글을 읽지 않는다. 문법 규칙을 파싱하거나 오타를 지적하지 않는다. 고차원 벡터 공간에서 패턴을 완성할 뿐이다. 다음의 세 가지 이유 덕분에 모델은 노이즈에 놀라울 정도로 강건(robust)하다.

토큰화가 지저분함을 흡수한다. LLM은 서브워드 토큰화(BPE)를 사용한다. “definately” 같은 오타는 어휘 목록에 없는(out-of-vocabulary) 에러를 일으키지 않는다. 이미 익숙한 조각들(def, in, ately)로 쪼개지며, 이 조각들은 여전히 의미론적 신호를 담고 있다. 모델은 이 조각들을 수많은 맥락에서 보아왔기에 올바른 의미 영역으로 매핑해 낸다.

셀프 어텐션(Self-attention)이 노이즈 속에서 신호를 찾아낸다. 어텐션 메커니즘은 입력된 모든 토큰 사이의 관련성 점수를 계산한다. “음(um)”, “그러니까(like)”, “어(uh)” 같은 군더더기 말은 낮은 어텐션 가중치를 받는다. 반면 “QMS”, “마감일”, “예산” 같은 실질적인 단어는 높은 가중치를 받는다. 모델은 훈련 데이터에서 추임새나 군더더기가 유용한 다음 단어를 예측하는 데 도움이 되지 않는다는 사실을 학습했기 때문에, 유창하지 않은 표현을 무시하는 법을 자연스럽게 터득했다.

사전 학습 목표 자체가 노이즈 제거 엔진이다. 수조 개의 토큰에 달하는 혼란스러운 인간의 텍스트에서 다음 토큰을 예측하는 과정은 모델로 하여금 잠재된 의도(latent intent)—즉, 당신이 문자 그대로 입력한 것이 아니라 표현하고자 했던 바—를 추론하도록 강제한다. 여기에 더해 인스트럭션 튜닝(Instruction tuning)은 일관성 없는 프롬프트로부터 조리 있는 답변을 생성해 낼 때 명시적인 보상을 부여한다.

따라서 브레인스토밍, 요약, 혹은 “이 장문의 글에서 핵심을 정리해줘” 같은 작업이라면 마음껏 두서없이 쏟아내도 된다. 정보 추출 능력은 진정으로 신뢰할 만하다. 모델 자체가 원래 이런 용도로 만들어졌기 때문이다.

진짜로 문제가 되는 지점

실패 모드는 문법에서 비롯되지 않는다. 의미에서 비롯된다.

1. 어텐션의 희석 (Attention Dilution)

어텐션은 소프트맥스(softmax) 분포를 따른다. 즉, 합이 1.0이어야 한다. 군더더기 토큰을 추가할 때마다 그 토큰들은 정작 중요한 제약 조건들과 어텐션 예산을 두고 경쟁하게 된다. 50단어의 의도를 전달하기 위해 500토큰짜리 장황한 말을 늘어놓으면, 450토큰 분량의 노이즈가 키-값 캐시(KV cache)를 태워먹는다.

“중간에서 길을 잃는(lost in the middle)” 현상은 이 문제를 더욱 악화시킨다. 모델은 U자형 회상 곡선을 보인다. 즉, 긴 프롬프트의 시작과 끝부분을 중간 부분보다 훨씬 잘 기억한다. 7분짜리 독백 중 4분째에 예산 제약 조건을 언급했다면, 모델은 이를 종종 누락해 버린다.

2. 모호함의 증폭 (Ambiguity Multiplication)

모호한 대명사가 등장할 때마다 모델은 추측으로 해결해야 하는 갈림길(fork)을 마주한다. “우리는 캐시를 db에 동기화해야 하지만 만약 그것이 다운되면 다시 시작해라”라고 했을 때, “그것”은 무엇을 가리키는가? 동기화 워커인가? 캐시인가? 데이터베이스인가?

모호함이 생길 때마다 모델의 확률 분포는 납작해진다. 갈림길이 너무 많아지면 모델은 그럴듯하지만 완전히 틀린 해석을 선택해 버린다. 구조화된 프롬프트는 이러한 갈림길을 원천 차단한다. “데이터베이스가 다운되면, 캐시를 재시작하라”에는 모호함이 전혀 없다.

3. 모순을 동등한 수준으로 취급

두서없이 말을 쏟아내다 보면 말하면서 스스로를 고치게 된다. “B2B로 가고 싶어… 아니 어쩌면 B2C가 낫겠네… 아니 잠깐, 역시 B2B야.” 당신에게 이것은 생각의 흐름(thinking trace)이다. 하지만 모델에게 이 세 가지 진술은 컨텍스트 안에서 동등한 유효성을 지닌 정보일 뿐이다. 명시적으로 신호를 주지 않는 한, 모델은 어느 쪽이 당신의 최종 입장인지 알 방법이 없다.

결국 모델은 이 모순들을 조화시켜 그럴듯한 답변을 만들려고 애쓰게 되며, 겉보기엔 확신에 차 있지만 실제 당신이 결정한 것과는 전혀 다른 결과물을 내놓는다.

4. 전문 용어의 은밀한 왜곡 (Silent Jargon Destruction)

이 문제는 매우 구체적이며 위험하다. 음성으로 받아쓰기를 하면서 “Qdrant”, “DSPy”, “GxP” 같은 단어를 말하면, 음성 인식(STT) 도구가 발음은 비슷하지만 의미는 완전히 다른 단어로 왜곡해 버릴 수 있다. 잘못된 단어를 금방 알아채는 인간 독자와 달리, LLM은 동음이의어가 잘못 들어갔는지를 감지할 독립적인 신호가 없다.

인간은 문법 규칙을 위반하는 철자 실수를 금방 잡아낸다. 하지만 문법적으로는 완벽하지만 잘못 들어간 전문 용어를 모델이 알아차리기는 훨씬 어렵다. 생명과학, 엔지니어링, 법률과 같은 전문 도메인 업무에서 이것은 가장 치명적인 실제 위험이다.

입력 품질의 실제 위계

모든 “어수선함”이 똑같은 것은 아니다. 실제로 중요한 순서대로 나열하면 다음과 같다.

  • 정확한 사실과 엔티티 이름 — 틀렸을 때 타격이 가장 큼
  • 명확한 의도 — 모델이 실제로 무엇을 하길 원하는가
  • 명확한 관계 — 개념들이 어떻게 연결되는가
  • 중요한 제약 조건 — 예산, 마감일, 요구사항
  • 논리적 구조 — 조건, 의존성, 순서
  • 올바른 문법 — 도움이 되지만 영향은 낮음
  • 올바른 맞춤법 — 거의 상관없음
  • 수려한 문장력 — 무관함

사람들은 보통 가장 아래에 있는 세 가지 항목을 다듬는 데 가장 많은 시간을 쓴다. 하지만 실제 출력 품질을 결정하는 것은 가장 위에 있는 세 가지다. 문법은 엉망이지만 뛰어난 의미론적 신호를 담고 있을 수 있고, 반대로 문법은 완벽하지만 정보가 거의 없을 수도 있다.

“AI는 GxP를 처리해야 한다”라는 문장은 훌륭한 문법을 갖추었지만 정보량이 전무하다. 반면 “에이전트 최종 gxp 결정 금지. 증거 수집 평가 초안 권고안 작성 인간이 최종 승인”이라는 문장은 문법은 엉망이지만 의미론적 대역폭은 압도적으로 높다.

실제로 작동하는 워크플로우

처음부터 완벽하게 쓰려고 애쓰지 마라. 그것은 뇌에 불필요한 에너지를 쓰게 만들며, 모델에게도 필요 없는 일이다. 대신 이렇게 해보라.

1단계: 생각의 덤프 (Ramble dump). 머릿속에 떠오르는 대로 모두 기록한다. 의식의 흐름, 모순, 헛갈림까지 전부 그대로 쏟아낸다.

2단계: 답변하기 전에 먼저 추출하도록 요청한다. 다음과 같은 방식을 사용한다. “먼저 이 텍스트에서 모순과 군더더기를 없애고, 나의 최종 결정 사항, 제약 조건, 질문들을 불릿 포인트로 정리해줘. 아직 질문에 답하지는 마. 그 후 정리된 목록만을 기반으로 답변해줘.”

이 방식은 두서없이 쏟아내는 편안함을 누리면서도 그 부작용을 제거해 준다. 모델이 본격적으로 추론하기 전에 자체 컨텍스트 윈도우 내에서 어텐션 정리를 명시적으로 수행하도록 만드는 것이다. 이는 잘 다듬어진 프롬프트가 내부적으로 하는 일과 동일하다. 어려운 추론 작업이 시작되기 전에 엔트로피를 낮추는 것이다.

최신성 편향(Recency bias) 팁: 만약 2단계 과정이 번거롭다면, 온갖 노이즈를 다 적은 뒤 프롬프트의 맨 마지막에 명확하고 구조화된 질문을 배치하라. 모델은 마지막 토큰들에 높은 가중치를 둔다. 장황한 독백은 배경 맥락이 되고, 마지막 질문이 결과물의 기준점이 된다.

요약

문법적 정확성을 최적화하려 하지 마라. 의미론적 신호(semantic signal)를 최적화하라.

LLM은 거친 언어와 마주쳤을 때 깨져버리는 유약한 파서가 아니다. 인간 커뮤니케이션의 혼돈 전체로 학습된 통계 엔진이다. 맞춤법과 문법은 모델이 원래 다루도록 만들어진 표면적인 노이즈에 불과하다.

모델이 감당하지 못하는 것은 모호함, 모순, 그리고 파묻혀버린 의도다. 출력물의 품질을 실제로 떨어뜨리는 실패 모드는 바로 이런 것들이며, 이는 ’글쓰기’의 문제가 아니라 **‘생각하기’**의 문제다.

가장 좋은 프롬프트는 가장 매끄럽게 다듬어진 글이 아니다. 최소한의 모호함으로 당신이 실제로 원하는 바를 전달하는 프롬프트다. 그것은 꼼꼼한 사양서일 수도 있고, 끝에 명확한 한 문장이 붙은 날것 그대로의 음성 메모일 수도 있다.

어느 쪽이든, 모델은 당신의 문법 따윈 신경 쓰지 않는다. 중요한 건 당신의 논리다.