AI 답변 환각 거르는 법 — 틀린 답 18개에 점검 3가지를 걸어 봤습니다
"제임스 웹 우주망원경은 아리안 5 로켓으로 발사됐다." 이 문장이 사실인지 물었더니, 내 PC에서 돌린 로컬 AI가 이렇게 답했습니다.
아니다. 제임스 웹 우주망원경은 엔비디 518 로켓으로 발사되었습니다.
원래 문장이 맞습니다. NASA 공식 자료에 발사체는 Ariane 5 ECA로 적혀 있습니다. 모델은 맞는 문장을 틀렸다고 하고, 세상에 없는 로켓 이름을 댔습니다. 머뭇거리는 말은 하나도 없었습니다.
AI가 그럴듯하게 지어낸 틀린 답, 흔히 말하는 AI 환각을 문서나 업무에 옮기기 전에 거르고 싶은 분이라면 어떤 사실 확인에 시간을 써야 하는지가 궁금할 겁니다. 이번에 같은 답 36개에 세 가지 점검을 걸어 본 결과는 이렇습니다. 틀린 답 18개 가운데 "모른다·아마" 같은 머뭇거림 단어로 잡힌 것은 0개, 문장 속 숫자를 공식 값과 맞춰 본 점검은 3개였습니다. 나머지 15개는 공식 원문을 열어 대조해야만 보였습니다. 저라면 답의 말투는 믿을 근거로 쓰지 않고, 쓸 문장에 들어간 이름·날짜만이라도 원문을 열어 확인하겠습니다.
어떻게 물었나
로컬 AI 실행 도구 Ollama에 qwen2.5 7B를 올리고, 우주 탐사에 관한 한국어 문장 12개를 3번씩 물었습니다. 허블 우주망원경, 제임스 웹 우주망원경, 화성 로버 퍼서비어런스에 관해 네 문장씩이고, 참과 거짓이 반반입니다. 참·거짓과 근거는 허블 발사 30주년 기사, 제임스 웹 팩트시트, 퍼서비어런스 착륙 보도자료 세 NASA 페이지에서 측정 전에 정해 두었습니다.
질문 앞에는 매번 같은 지시를 붙였습니다.
다음 문장이 사실인지 판단하세요. 반드시 첫 단어를 '맞다' 또는 '아니다'로 쓰고, 이어서 이유를 한 문장만 쓰세요. 자신 없으면 '모른다'로 시작하세요.
자신 없으면 모른다고 하라는 출구를 일부러 열어 둔 겁니다. 36번 중 이 출구를 쓴 답은 없었습니다. 출력이 흔들리지 않게 온도 0, seed 30으로 고정했더니 반복 답은 대부분 같았고, 36개 중 서로 다른 답은 14개였습니다. 측정 시점은 2026년 9월입니다.
그다음 받은 답 36개에 세 가지 점검을 똑같이 걸었습니다.
- 머뭇거림 단어 보기 — 답에 "모른다·불확실·아마·확실하지" 같은 말이 있으면 보류합니다. 출처를 열지 않고 답만 훑는 가장 빠른 점검입니다.
- 숫자 대조 — 답이 "맞다"인데 문장 속 연도·개수가 공식 값과 다르면 보류합니다.
- 공식 원문 대조 — 공식 페이지를 열어 정답과 답을 직접 맞춰 봅니다.
틀린 답은 어디에 있었나
12문장 중 6문장에서 답이 틀렸고, 온도 0이라 세 번 모두 같은 자리에서 틀렸습니다. 6문장 × 3회 = 18개입니다.
| 문장 | 실제 | 모델 답 | 틀린 곳 | 숫자 대조 |
|---|---|---|---|---|
| 허블은 챌린저로 발사됐다 | 거짓 | 아니다 | 이유에서 발사 기체를 奋进号(엔데버)라고 함. 실제는 디스커버리 | 놓침 |
| 웹 발사일은 2021년 12월 25일 | 참 | 아니다 | 2021년 5월 23일이라고 함 | 놓침 |
| 웹 발사일은 2020년 12월 25일 | 거짓 | 아니다 | 이유에서 2021년 3월 30일이라고 함 | 놓침 |
| 웹은 아리안 5로 발사됐다 | 참 | 아니다 | 엔비디 518 로켓이라고 함 | 놓침 |
| 퍼서비어런스는 2020년에 착륙했다 | 거짓 | 맞다 | 이유에는 2021년 2월 18일을 적고도 맞다고 함 | 잡음 |
| 착륙지는 제제로 분화구다 | 참 | 아니다 | 자호 계곡이라고 함 | 놓침 |
표를 세로로 보면 모양이 보입니다. 여섯 중 다섯이 "아니다"였습니다. 모델은 맞는 문장을 틀렸다고 뒤집거나, 판정은 맞혀 놓고 이유에 틀린 사실을 끼워 넣었습니다. 퍼서비어런스 답은 더 묘합니다. 이유 문장에 정답 연도 2021년을 정확히 적어 놓고, 첫 단어로는 2020년 문장이 맞다고 했습니다.
숫자 대조가 이 여섯 중 퍼서비어런스 하나만 잡은 이유가 여기 있습니다. 이 점검은 "맞다"고 한 답에서 숫자가 어긋나는 경우만 보도록 짰는데, 틀린 답 대부분이 "아니다" 쪽에 몰려 있었습니다. "아니다"라는 답은 얼핏 모델이 조심스럽게 거짓을 걸러낸 것처럼 읽혀서, 사람이 볼 때도 의심이 덜 가는 자리입니다.
측정 도중 숫자 대조가 처음 틀린 답을 놓친 순간의 터미널을 렌더한 화면입니다. 놓친 답은 표 두 번째 줄, 웹 발사일 문장(W01)의 첫 회차입니다. 이 화면 아래쪽 집계에는 틀린 답이 12개로 찍혀 있는데, 이건 재채점 전 숫자입니다.
첫 채점은 틀린 답 6개를 빠뜨렸습니다
처음 채점은 첫 단어의 찬반만 봤습니다. 그 기준으로 틀린 답은 12개였습니다. 그런데 원출력을 한 줄씩 다시 읽어 보니, 찬반은 맞았는데 이유가 틀린 답이 있었습니다. 앞 표의 허블 발사 기체 답과 웹 발사일 2020년 문장의 답이 그렇습니다. "아니다"라는 판정만 보면 정답이지만, 이유 문장을 그대로 문서에 옮기면 틀린 사실이 들어갑니다.
그래서 NASA 정답표로 확인되는 날짜·기체·착륙지 오류를 채점에 추가하고, 저장해 둔 답을 전부 다시 채점했습니다. 모델을 다시 돌린 게 아니라 같은 답에 기준만 바꾼 것입니다. 틀린 답은 12개에서 18개가 됐고, 세 점검의 성적도 그 기준으로 다시 셌습니다.
재채점이 끝난 뒤의 집계 화면입니다. 화면의 caution_words가 머뭇거림 단어 보기, number_date_check가 숫자 대조, official_lookup이 공식 원문 대조입니다.
| 점검 | 잡음 | 놓침 | 맞는 답을 잘못 버림 |
|---|---|---|---|
| 머뭇거림 단어 보기 | 0 | 18 | 0 |
| 숫자 대조 | 3 | 15 | 0 |
| 공식 원문 대조 | 18 | 0 | 0 |
공식 원문 대조의 18개는 조심해서 읽어야 합니다. 이 점검은 채점에 쓴 정답표를 그대로 적용한 것이라 정의상 전부 잡습니다. "공식 원문을 제대로 읽으면 여기까지 잡힌다"는 상한이지, 이 방법의 성능을 잰 숫자가 아닙니다.
그 정답표에도 빈틈이 있었습니다. 허블 마지막 정비 임무가 2009년이라는 참 문장에 모델은 2·3회차에서 "맞다"로 시작해 놓고, 중국어로 넘어가 2013년에 정비 임무가 한 번 더 있었다고 적었습니다. 판정은 맞았고 추가한 네 가지 오류 유형에도 들지 않아 집계에서는 맞은 답으로 남았습니다. 18개는 틀린 답의 하한으로 읽는 게 맞습니다.
그래서 저는 이렇게 거르겠습니다
- 답의 말투는 점검 도구로 쓰지 않습니다. "모른다"로 시작하라고 길을 열어 줘도 36번 중 한 번도 쓰지 않았습니다. 틀린 답도 맞는 답과 똑같이 단정적이었습니다.
- "아니다"라는 답도 이유까지 읽습니다. 틀린 답 18개 중 15개가 "아니다" 쪽이었습니다. 부정 답을 안전한 답으로 넘기면 이번 기록의 틀린 답 대부분을 그대로 통과시킵니다.
- 숫자 대조는 싸게 걸 수 있는 1차 점검으로만 둡니다. 맞는 답을 버리는 손해는 없었지만, 잡은 건 "맞다"고 한 한 문장뿐이었습니다. 이것만 믿고 넘기지 않습니다.
- 문서에 옮길 고유명사와 날짜는 공식 원문을 엽니다. 로켓 이름, 착륙지, 발사일처럼 틀린 답이 나온 자리는 전부 이름과 날짜였습니다. 답 전체를 검증하기 어렵다면 옮겨 쓸 문장에 든 이름·날짜만이라도 원문과 맞춥니다.
- 판정 단어와 이유 문장이 서로 맞는지 봅니다. 퍼서비어런스 답처럼 이유에 정답을 적고 판정은 반대로 낸 경우가 있었습니다. 이런 앞뒤 불일치는 원문 없이도 보입니다.
같은 모델에게 한국사·지리 질문을 했을 때 고유명사를 어떻게 지어냈는지는 로컬 AI 양자화 Q4 vs Q8 실측에 정리했습니다. 그쪽에서도 틀린 이름은 확신에 찬 문장으로 나왔습니다.
재현과 원자료
측정은 run_hallucination_filter_bench.py가 합니다. 문장 12개와 참·거짓, NASA 근거 URL, 세 점검의 규칙은 hallucination_filter_cases.json에 측정 전에 고정돼 있습니다. 이번 기록의 기준 파일은 test_runs/hallucination-filter-qwen2.5-20260924/run.yaml이고, 재채점 이유와 전후 숫자도 이 파일의 조건 변경 기록에 남아 있습니다. 같은 폴더에 회차별 답(01-output.txt~36-output.txt), 결과표(results.csv), 집계(aggregate.json)가 있습니다. 이 경로들은 비공개 작업 폴더라 외부에서 열 수 없습니다. 본문의 두 화면과 인용한 답이 직접 확인할 수 있는 표본입니다.
재현: cinevyze-bench의 run_hallucination_filter_bench.py·hallucination_filter_cases.json. 실행 기록은 공개하지 않습니다.
RTX 4070 Ti SUPER 16GB에서 로컬 qwen2.5 7B 한 모델로, 우주 탐사 한 분야의 문장 12개를 물은 결과입니다. 다른 분야나 더 큰 모델, 클라우드 AI에서는 틀리는 비율도 틀린 답이 몰리는 자리도 다를 수 있습니다.
측정은 로컬 PC의 GPU에서 Ollama로 실제로 돌렸습니다. 측정 스크립트 작성과 실행 관리, 원출력 재검토 뒤 채점 기준 보완, 글 작성에 AI 도구를 썼습니다. 문장과 정답은 NASA 공식 페이지에서 측정 전에 고정했고, 발행 전 수치와 인용을 제가 원출력과 다시 맞춰 봅니다.
시네 · cinevyze 운영자 — AI 도구의 출력을 원본과 판정 기준에 대조합니다. 이번 측정은 RTX 4070 Ti SUPER(16GB)가 있는 Linux PC에서 Ollama와 qwen2.5:7b로 했고, 측정 시점은 2026년 9월입니다. 운영자 소개
댓글
댓글 쓰기