Turning Simple User Requests into AI-Understandable Instructions
사용자의 의도를 AI가 명확히 이해할 수 있도록 쿼리 확장
EVA는 사용자가 입력하는 명령을 기반으로 동작하는 시스템입니다.따라서 EVA가 안정적이고 정확한 판단을 내리기 위해서는 사용자의 요청 내용이 AI가 명확하게 이해할 수 있는 형태로 전달되는 것이 매우 중요합니다
하지만 우리가 일상적으로 사용하는 자연어 표현은 사람에게는 단순하고 명확해 보이더라도, AI 모델 입장에서는 사용자의 명령 해석이 모호하거나 너무 많은 추론을 요구하는 경우가 많습니다. 이러한 간극이 바로 AI 시스템의 오작동이나 부정확한 판단의 원인이 됩니다.
이를 근본적으로 해결하기 위해 EVA에서는 Few-Shot 프롬프팅 기법을 활용하여 사용자의 간단한 요청을 자동으로 구조화된 표현(Structured Query)으로 확장하는 방식을 개발하고 적용했습니다
본 포스트에서는
- 왜 단순한 자연어 요청이 AI에게는 어려운지,
- 어떻게 쿼리 확장을 통해 AI의 이해도를 높일 수 있는지,
- 실제 현장 적용 시 얼마나 성능이 개선되었는지
를 중심으로, 사용자의 의도를 AI가 더 명확하게 이해하도록 만드는 실질적인 방법과 그 효과를 공유하고자 합니다.
1. “사람이 쓰러지면 알려줘” — 단순해 보이지만 AI에게는 어려운 요청
현장에서 안전 관리자가 EVA에게 다음과 같이 요청한다고 가정해 보겠습니다.
“사람이 쓰러지면 알려줘요.
이 문장은 사람에게는 충분히 명확해 보입니다. 하지만 실제로는 이 한 문장 안에 다양한 상황과 판단 기 준이 포함되어 있어, AI에게는 상당한 혼란을 줄 수 있습니다.
현장에서 발생할 수 있는 다양한 상황들
카메라가 비추는 화면에는 다음과 같이 해석이 애매한 장면들이 실제로 자주 등장합니다:
-
누워 있는 사람과 앉아 있는 사람이 함께 있을 때: 누워 있는 사람이 정말 쓰러진 것인지, 아니면 휴식 중인지 판단이 필요합니다.
-
작업자 일부가 장비나 구조물에 가려져 자세를 명확히 판단하기 어려울 때: 신체의 일부만 보이는 상황에서 쓰러짐 여부를 어떻게 판단해야 할까요?
-
바닥에서 스트레칭을 하거나 몸을 구부리는 모습이 쓰러짐처럼 보일 때: 정상적인 활동인데도 알람을 보내야 할까요?
-
소파나 휴게 공간에서 누워서 쉬고 있을 때: 이것은 명백히 정상적인 휴식 상황이지만, AI는 어떻게 이를 구분할 수 있을까요?
이런 복잡한 상황들을 분석하는 과정에서, 우리는 AI가 더 정확한 판단을 내리기 위해서는 명확하게 구조화된 정보가 필요하다는 중요한 인사이트를 얻게 되었습니다.
예를 들어, 시스템에서는 "쓰러진 사람이 있습니다"라고 판단하여 관리자에게 알람을 보냈지만, 동시에 제공된 근거 설명에서는 "사람이 누워있긴 하지만 위급한 상황으로 보이지는 않습니다"라고 출력하는 경우를 관 찰했습니다.
이러한 관창을 통해, 단순한 한 문장의 요청만으로는 AI가 복잡한 현실 상황의 맥락을 충분히 이해하고 일관된 판단을 내리기에 추가적인 정보가 필요하다는 것을 확인할 수 있었습니다.
2. AI가 사람의 요청을 오해하는 이유
그렇다면 왜 이처럼 간단해 보이는 요청이 AI에게는 정확하게 해석되기 어려울까요?
VLM이 동시에 처리해야 하는 복잡한 작업들
그 이유는 EVA의 VLM(Vision-Language Model)이 사용자의 한 문장을 해석하는 과정에서 실제로는 여러 가지 복잡한 판단을 동시에 수행해야 하기 때문입니다.
AI는 한 장의 이미지와 사용자가 입력한 한 줄의 요청 문장만을 바탕으로 다음의 모든 단계를 순차적으로, 그리고 일관성 있게 처리해야 합니다:
1. 이미지 속 장면과 사람의 상태를 정확히 이해하기
- 화면에 몇 명의 사람이 있는지 파악하고
- 각 사람이 어떤 자세를 취하고 있는지 분석하며
- 주변 환경과 상황을 종합적으로 이해해야 합니다
2. 사용자가 정확 히 어떤 상황을 감지해 달라고 요청했는지 해석하기
- "쓰러지다"라는 표현이 구체적으로 어떤 상태를 의미하는지 추론하고
- 사용자가 관심을 가지는 위험 상황의 특징을 파악해야 합니다
3. 현재 분석 중인 장면이 "알람을 보내야 하는 상황"에 해당하는지 판단하기
- 앞서 파악한 장면의 특징과 사용자의 요청을 종합하여
- 실제로 위험한 상황인지 판단을 내려야 합니다
4. 정상적인 예외 상황(휴식, 작업 자세 등)에 해당하는지 확인하기
- 누워있지만 위험하지 않은 정상 상황(휴식, 스트레칭)은 아닌지
- 특수한 작업 자세나 환경적 요인을 고려해야 하는지 검토해야 합니다
5. 최종적으로 알람을 보낼지 말지를 결정하고 그 근거를 설명하기
- 모든 판단을 종합하여 최종 결론을 내리고
- 왜 그러한 결정을 내렸는지 논리적으로 설명할 수 있어야 합니다
자연어 한 문장의 한계
EVA에서는 VLM이 위와 같이 장면 이해 → 의도 해석 → 규칙 판단 → 예외 처리 → 알람 결정이라는 다섯 단계의 복잡한 과정을 한 번에 모두 수행해야 하는 구조로 되어 있었습니다.
핵심적인 문제는 이 다섯 단계의 판단을 정확하게 수행하기 위해 필요한 구체적인 기준과 조건들이 사용자가 입력한 자연어 한 문장 안에는 충분히 명시되어 있지 않다는 점입니다.
사람은 오랜 경험과 상식을 통해 이러한 암묵적인 기준들을 자동으로 보완하고 이해할 수 있습니다. 하지만 AI는 명시적으로 규칙과 기준을 설명해주지 않으면, 제한된 정보만으로 모든 것을 스스로 추론하고 판단해야 하는 어려움에 직면하게 됩니다.
발생할 수 있는 두 가지 치명적인 오류
이러한 구조적 한계로 인해 실제 운영 환경에서는 다음과 같은 두 가지 유형의 오류가 발생할 수 있습니다:
오탐(False Positive) - 정상 상황을 위험으로 잘못 판단
- 판단 기준이 명확하지 않기 때문에 정상적인 장면조차도 탐지 대상으로 오해하기 쉽습니다
- 이로 인해 불필요한 알람이 반복적으로 발생하면 관리자는 알람 피로를 겪게 되고, 결국 정말 중요한 알람도 무시하게 되는 심각한 문제로 이어질 수 있습니다
미탐(False Negative) - 위험 상황을 놓치는 경우
- 예외 상황을 어떻게 고려해야 할지 판단 기준이 없어서 정작 위험한 장면을 놓치기도 합니다
- 실제 사고 상황을 감지하지 못하면 안전 모니터링 시스템으로서의 가치를 완전히 상실하게 됩니다
- 이는 단순한 기술적 문제를 넘어 실제 안전 사고로 이어질 수 있는 치명적인 결함입니다
이러한 분석을 통해 EVA는 자연어 요청을 AI가 더 잘 이해할 수 있는 형태로 변환하는 것이 필요하다는 것을 인식하게 되었습니다. 이에 저희는 구조화된 방식으로 명확한 판단 기준을 제시하면 AI가 복잡한 현실 상황을 더욱 정확하게 이해하고 일관성 있게 판단할 수 있도록 Enriched Input 시스템을 설계하고 개발하게 되었습니다.
3. 사용자의 요청을 AI가 이해할 수 있는 언어로 번역하기: Enriched Input
자연어 한 문장만으로는 AI가 정확한 판단을 내리기에 필요한 기준이 부족하다는 점을 확인했습니다. 이를 해결하기 위해 EVA는 사용자의 요청을 구조화된 형태의 기준(Structured Conditions)으로 자동 변환하는 시스템을 개발했습니다.
우리는 이 방식을 Enriched Input(쿼리 확장)이라고 부릅니다.
기존 방식의 근본적 한계
기존 방식에서는 사용자의 요청을 있는 그대로 AI에게 전달했습니다.
사용자 입력:
"사람이 쓰러지면 알려주세요."
AI에게 전달되는 내용:
"사람이 쓰러지면 알려주세요." (그대로 전달)
이 한 문장은 사람에게는 충분히 이해 가능한 수준입니다. 하지만 앞서 살펴본 것처럼, AI가 이를 바탕으로 정확한 판단을 내리기에는 구체적인 기준이 너무 압축되어 있고 암묵적인 정보가 많습니다.
Enriched Input: 요청을 두 가지 명확한 축으로 분리하기
EVA의 Enriched Input 시스템은 사용자의 간단한 요청을 받으면, 이를 자동으로 분석하여 두 가지 구조화된 축으로 나누어 변환합니다:
탐지 조건(Detection Conditions)
“이런 상황이 감지되면 알람을 보내세요.
탐지 조건은 AI가 확인해야 할 핵심 요소들을 명확하게 명시합니다. 모호한 표현 대신 구체적인 판단 기준을 제공하여 AI가 정확히 무엇을 찾아야 하는지 알 수 있도록 합니다.
예시: 쓰러짐 탐지 이미지 안에 사람이 한 명 이상 존재하는가? 그 중에서 최소 1명 이상이 바닥에 완전히 누워 있는 상태인가? 누워 있는 자세가 의도적인 자세가 아닌 쓰러진 것처럼 보이는가?
이처럼 탐지 조건은 "이런 상황이 있으면 주목해야 한다"는 명확한 판단 기준을 제공합니다.
예외 조건(Exception Conditions)
“이런 경우는 알람을 보내지 마세요”
예외 조건은 탐지 조건에 해당하더라도 실제로는 정상적인 상황인 경우를 구체적으로 명시합니다. 이를 통해 불필요한 오탐을 크게 줄일 수 있습니다.
예시: 쓰러짐 탐지의 예외 상황들 사람이 바닥에 앉아 있거나 쪼그려 앉아서 정상적인 작업을 수행하고 있는 경우 작업자의 신체 대부분이 기계나 구조물에 가려져서 정확한 자세를 판단할 수 없는 경우 휴게 공간에서 소파나 의자에 누워 명백하게 휴식을 취하고 있는 경우
예외 조건은 "이런 상황은 위험하지 않다"는 안전 필터 역할을 합니다.
Enriched Input 적용 전/후 비교 : 실제 사례로 보는 변화
사용자의 간단한 요청이 Enriched Input 시스템 도입 전과 후에 어떻게 잘라지는지 구체적인 사례를 통해 살펴보겠습니다.
| 사용자 요청 | Enriched Input 결과 |
|---|---|
| 마스크를 쓰지 않는 사람 을 찾아주세요 | Detection Steps : * 사람이 존재함 * 최소 1명 이상의 사람이 마스크를 착용하지 않음 Exceptions : * 모든 사람이 마스크를 착용한 경우 * 카메라 각도 등으로 인해 마스크 착용 여부를 확인할 수 없는 경우 |
| 쓰러진 사람을 찾아주세요. | Detection Steps : * 사람이 존재함 * 최소 1명 이상의 사람이 쓰러져 있음 Exceptions : * 쓰러져 있는 사람은 모두 상반신(머리·허리)만 보이는 경우 * 쓰러져 있는 사람은 모두 하반신(다리·발)이 보이지 않는 경우 * 쓰러져 있는 사람은 모두 휴대폰을 보고 있는 경우 * 쓰러져 있는 사람은 모두 의자에 기대 누워 있는 경우 * 쓰러져 있는 사람은 모두 형체 식별이 어려운 경우 * 쓰러진 사람이 없는 경우 |
| 앉아서 작업 중인 사람 중, 마스크를 착용하지 않은 사람을 찾아주세요 | Detection Steps : * 사람이 존재함 * 최소 1명 이상의 사람이 앉아 있음 * 최소 1명 이상의 사람이 작업 중이 있음 * 최소 1명 이상의 사람이 앉아서 작업 중이며 마스크의 형체가 얼굴에서 보이지 않음 Exceptions : * 앉아서 작업 중인 모든 사람이 마스크를 착용한 경우 * 카메라 각도 등으로 인해 앉아서 작업 중인 사람들의 마스크 착용 여부를 확인할 수 없는 경우 |
이처럼 탐지 조건과 예외 조건을 명시적으로 분리하여 제공하면, AI는 모호한 자연어 한 문장을 스스로 해석하고 추론하는 대신, 명확하게 정의된 기준에 따라 체계적이고 일관성 있게 판단할 수 있게 됩니다. 이는 마치 사람에게 업무를 지시할 때 "알아서 해줘"라고 막연하게 말하는 것과, "이런 조건들을 확인하고, 이런 예외 상황들은 제외하고 판단해줘"라고 구체적으로 지시하는 것의 차이와 같습니다.
현장에서 점점 구체화되는 요청 패턴
실제 운영 현장을 관찰해보면, 사용자의 요청은 시간이 지나면서 점점 더 구체화되고 정교해지는 경향이 있습니다.
초기 요청:
"마스크 미착용자를 탐지해주세요"
첫 번째 개선 (작업 상황 고려):
"앉아서 작업하는 사람 중에서 마스크 미착용자를 탐지해주세요"
(서 있는 사람이나 이동 중인 사람은 제외)
두 번째 개선 (추가 예외 상황 반영):
"앉아서 작업하는 사람 중에서 마스크 미착용자를 탐지해주세요
단, 노트북으로 작업하는 사람은 제외해주세요"
(사무직 근무자는 마스크 착용 의무 대상이 아님)
Enriched Input 방식의 강점은 이러한 조건의 점진적인 고도화를 매우 쉽게 반영할 수 있도록 설계되어 있다는 점입니다. 시스템이 자동으로 생성한 구조화된 조건을 사용자가 검토하고, 현장의 실제 상황에 맞게 탐지 조건이나 예외 조건을 직관적으로 추가하거나 수정할 수 있습니다. 따라서 복잡한 프로그래밍이나 기술 지식 없이도 비즈니스 로직을 쉽게 반영할 수 있는 것이 큰 장점입니다.


