LLM이 구조화된 데이터를 생성할 때 그럴듯해 보이는 사실을 지어낼 수 있습니다. Entity Enricher는 8개의 방어 계층을 사용하여 정확한 데이터 또는 데이터 없음을 제공하며, 자신 있게 들리는 허구는 결코 제공하지 않습니다.
자유 텍스트에서는 환각으로 생성된 문장이 명백하게 모호합니다. 구조화된 출력에서는 "founded_year": 1987과 같은 환각 필드가 권위 있어 보이며 올바른 값과 구별하기가 거의 불가능합니다. 세 가지 요인이 이를 특히 위험하게 만듭니다:
환각된 JSON 값은 실제 값과 똑같아 보입니다. 얼버무림도, "대략"도 없이 — 그저 깔끔하고 확신에 찬, 그러나 틀린 데이터 포인트일 뿐입니다.
필수 필드는 LLM이 지식이 없을 때도 값을 생성하도록 강제합니다. 모델은 구조에 공백을 남기는 대신 데이터를 지어냅니다.
구조화된 데이터는 데이터베이스, 분석, 자동화로 직접 공급됩니다. 잘못된 값은 사람의 검토 없이 파이프라인 전체로 전파됩니다.
| 패턴 | 예시 | 원인 |
|---|---|---|
| 확신에 찬 허위 생성 | "ceo": "John Smith" | LLM이 필수 필드를 그럴듯한 이름으로 채웁니다 |
| 시간적 혼동 | "revenue": "$2.3B" | 학습 데이터 마감 시점 또는 기간 혼동 |
| 엔터티 통합 | Company B에 대한 Company A의 속성 | 겹치는 학습 데이터의 유사한 이름 |
| 적절한 기본값 | "employees": 500 | LLM이 모른다고 인정하기보다 “그럴듯한” 숫자를 선택합니다 |
| 지어낸 관계 | "subsidiary_of": "Alphabet" | LLM이 존재하지 않는 관계를 추론합니다 |
Entity Enricher는 단일 기법에 의존하지 않습니다. 각각 다른 실패 모드를 겨냥하는 8개의 독립적인 방어 계층을 쌓아 올립니다. 한 계층이 환각을 놓치더라도 다음 계층이 잡아냅니다.
보강이 시작되기 전에, 빠른 LLM이 엔티티가 스키마 타입과 일치하는지 분류합니다. 이는 엔티티 전체에 대한 환각을 근본적으로 차단합니다.
예시: “Planet” 스키마에 대한 “Titan”은 위성으로 표시됩니다 — 강화 모델은 이 컨텍스트를 받아 행성 특유의 필드에는 null을 사용합니다.
모든 전략은 LLM에 "정확하고 보수적으로 — 추측하기보다 null을 선호하세요."라고 지시합니다. Nullable 스키마 필드는 모델이 "모르겠습니다"라고 말할 수 있는 명시적 권한을 부여합니다.
이는 구조화된 환각의 가장 큰 원인인 스키마 압박을 직접적으로 해결합니다.
스키마 속성은 전문 영역별로 그룹화됩니다. 각 LLM 호출은 해당 영역 내의 필드만 보며, 그 영역에만 집중하라는 지침을 받습니다.
범위가 좁을수록 환각의 여지가 줄어듭니다. 금융 전문가는 규제 데이터를 추측하지 않습니다.
키 속성(is_key: true로 표시됨)은 프롬프트에서 강조되어, LLM이 다른 필드를 채우기 전에 식별 정보에 집중하도록 합니다.
이는 모델을 알려진 사실에 기반시켜 조작된 세부 정보로의 편차를 줄입니다.
8개 검증 규칙이 LLM 출력에서 타입 불일치, 잘못된 참조, 구조적 오류를 검사합니다. 검증에 실패하면 ModelRetry가 트리거되어 오류가 교정을 위해 LLM으로 다시 전송됩니다.
단일 에이전트 실행 내에서 최대 6회까지 자동으로 수정합니다. LLM이 자신의 실수를 스스로 바로잡습니다.
preserve: true로 표시된 필드(ID, SKU, 타임스탬프)는 보강 후 원래 입력 값으로 복원됩니다. LLM은 실측 데이터를 덮어쓸 수 없습니다.
보호되는 필드: 엔티티 ID, 시스템 코드(EAN, SKU), 가져오기 식별자, 생성 타임스탬프입니다.
동일한 엔티티를 2개 이상의 독립적인 모델에 실행하고 출력을 필드별로 비교합니다. 불일치는 잠재적 환각으로 표시됩니다.
Claude가 매출을 $2.3B라고 하고 GPT-4가 $1.8B라고 하면, 그 충돌이 감지되어 표시됩니다.
감지된 충돌은 규칙 기반 투표(다수결, 중앙값, 합집합) 또는 정확성, 완전성, 일관성을 평가하는 전용 LLM 중재자를 통해 해결됩니다.
각 arbitration 결정에는 근거와 신뢰 수준이 포함됩니다 — 충돌이 어떻게 해결되었는지에 대한 완전한 투명성을 제공합니다.
핵심 원칙
데이터가 없는 것이 잘못된 데이터보다 항상 낫습니다. 모든 계층이 이 원칙을 강화합니다 — 시스템은 그럴듯하게 들리는 조작된 값 대신 null을 반환하도록 설계되었습니다.