
근거 기반 고장 코드 어시스턴트 구축: LLM이 잘못된 정보를 생성하는 것을 막는 방법
요약
LLM의 환각 현상을 방지하기 위해 검색 기반 근거화(retrieval grounding)를 적용한 고장 코드 진단 어시스턴트 구축 사례를 소개합니다. 모델이 기억에 의존하지 않고 반드시 검증된 데이터셋에서 정보를 찾아 출처를 인용하도록 설계하는 방법을 다룹니다.
핵심 포인트
- LLM의 환각을 막기 위해 검색 기반 근거화(retrieval grounding) 도입
- 모델이 기억이 아닌 외부 데이터베이스 쿼리 도구에 의존하도록 설계
- 출처가 없는 주장은 허용하지 않는 엄격한 시스템 프롬프트 적용
- 검색 결과가 없을 경우 추측 대신 매뉴얼 확인을 권고하도록 설정
대규모 언어 모델(LLM)은 그럴듯하게 들리는 데 능합니다. 진단 컨텍스트에서 '그럴듯한 것'과 '정확한 것'은 매우 다른 것이며, 이 간극은 비용을 초래합니다.
저는 소프트웨어를 개발하고 장비도 소유하고 있기 때문에 같은 문제에 계속 부딪혔습니다. 즉, 중장비의 고장 코드를 챗봇에 입력하면 자신감 있고 유창하지만 종종 틀린 답변을 얻게 되는 것입니다. 이 모델은 코드 의미를 지어내고(invents code meanings), 토크 사양까지 꾸며냅니다(makes up torque specs). 그리고 자신이 추측하고 있다는 사실을 절대 알려주지 않습니다. 저는 이런 행동을 거부하는 진단 어시스턴트를 구축할 수 있을지 알아보고 싶었습니다. 이것이 어떻게 완성되었는지에 대해 설명하겠습니다.
핵심 문제점
LLM은 고장 코드의 의미를 검색(retrieve)하는 것이 아니라, 그럴듯한 텍스트를 예측합니다. 일반적인 OBD-II 코드는 학습 데이터가 충분해서 보통 괜찮습니다. 하지만 제조사별로 코드가 다르고 실제 정보가 서비스 매뉴얼에 존재하는 중장비의 경우, 모델은 허점을 소설처럼 채우고(fills gaps with fiction) 자신이 그렇게 하고 있다는 메커니즘이 없습니다.
해결책은 더 큰 모델을 만드는 것이 아닙니다. 바로 **검색 기반 근거화(retrieval grounding)**입니다. 모델에게 답변을 말하기 전에 실제 데이터셋에서 찾아보도록 강제하고, 출처를 인용하게 하는 것입니다. 출처가 없으면 주장이 있을 수 없습니다(No source, no claim).
1단계: 데이터
기반은 고장 코드 데이터셋입니다. 온로드 및 오프로드 환경을 아우르는 156개 제조업체의 약 645,000개 코드가 포함되어 있습니다. 이 데이터를 정리하고 정규화하는 것이 가장 많은 작업이었습니다. 코드는 다양한 형식(SAE J1939 SPN/FMI, OEM별 문자열)으로 들어오기 때문에, 검색 기능은
2단계: 모델의 근거 설정 (grounding the model)
핵심 설계 결정 사항: 모델은 기억(memory)에 의존하여 답변할 수 없습니다. 모델에는 고장 코드 데이터베이스를 쿼리할 수 있는 도구가 주어지며, 시스템 프롬프트(system prompt)는 어떠한 진단적 주장(diagnostic claim)을 하기 전에 반드시 검색(retrieval)을 수행하도록 강제합니다. 검색된 기록은 컨텍스트(context)로 다시 전달되며, 모델의 역할은 이를 발명하는 것이 아니라 설명하는 것입니다.
두 가지 규칙이 대부분의 핵심적인 역할을 수행합니다:
- 모든 실질적인 주장은 반드시 검색된 출처(retrieved source)를 추적할 수 있어야 합니다.
- 만약 검색 결과가 없다면, 그에 대한 올바른 답변은 그럴듯한 추측이 아니라 "이 내용에 대해 검증된 출처가 없습니다. 매뉴얼을 확인하십시오"가 되어야 합니다.
두 번째 규칙이 매우 중요합니다. 출처가 없는 잘못된 답변은 답변이 없는 것보다 더 나쁩니다. 왜냐하면 누군가가 잘못된 수리 방향으로 가게 만들기 때문입니다.
3단계: 검증 (verification)
근거 설정(grounding)은 허위 정보 생성(fabrication)을 줄여주지만 완전히 제거하지는 못하므로, 두 번째 단계가 필요합니다. 더 저렴한 모델이 LLM-as-judge(판사로서의 LLM) 역할을 수행하며, 생성된 답변이 실제로 검색된 출처에 의해 뒷받침되는지 확인합니다. 이 과정은 먼저 로그 모드(log mode)로 실행하여, 시스템이 무언가를 차단(gate)하도록 허용하기 전에 오탐율(false-flag rates)을 측정할 수 있습니다. 수치가 허용하는 범위 내에서만 이 루프를 신뢰하십시오.
최종 결과물
중장비를 위한 무료 고장 코드 조회 및 근거 기반 AI 트러블슈터(troubleshooter)가 heavyequipmentfix.com에서 운영 중입니다. 로그인도 필요 없고, 판매하는 것도 없습니다. 이 어시스턴트는 출처를 인용하며, 허세를 부리는 대신 "확실하지 않음"이라고 말하도록 구축되었습니다.
시사점
좁은 도메인(narrow domains)에서 발생하는 대부분의 "AI는 신뢰할 수 없다"는 문제는 모델의 문제가 아니라 근거 설정(grounding)의 문제입니다. 모델을 실제 데이터로 제한하고, 인용을 강제하며, 출력을 검증한다면, 확신에 찬 거짓말이 위험한 분야에서도 진정으로 유용한 도구를 얻을 수 있습니다.
만약 여러분이 이 분야의 작업을 하고 있다면, 솔직히 제 말을 믿기보다는 차라리 이 시스템을 망가뜨려 보라고 권하고 싶습니다. 여러분이 아주 잘 알고 있는 코드를 입력해 보고 쓰레기 같은 답변을 내놓는지 확인해 보세요 — 도구는 여기 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기