콘텐츠로 이동

ADR-0049: 스크리닝 LLM 트리아지 층 — 게시 후 감사·검수 확정 회수

  • 상태: 승인됨
  • 날짜: 2026-08-08
  • 관련: ALPHA-870 · ADR-0010(하이브리드 온프렘) · ADR-0018(룰 로직=코드) · ADR-0044(INVALIDATION 단독) · ADR-0045(실시간 스냅샷 게시) · ADR-0046(확신도 AND 게이트) · 논의 기록(노션 "아이디어 — 증권사 클라우드 배포 × LLM 스크리닝", 2026-08-08) · ADR-0051(BYOC 배포 토폴로지 — 배치 전제를 사실로 확정)

맥락

현행 스크리닝은 결정적 판정만으로 자동 제공을 결정한다 — 금칙어·단정 표현· 단일 출처 룰, min_source_count·min_confidence 게이트, UNCERTAIN 상시 검수, auto_publish_enabled 스위치(ADR-0046, PolicyEvaluator가 SSOT). 이 축이 못 잡는 위반 유형이 있다: 표현을 바꿔 쓴 투자권유성·단정 문구(부분일치 금칙어는 변주에 무력하고 오탐도 실측됐다), 그리고 설명문이 evidences 가 지지하는 범위를 넘는 주장을 하는 근거-주장 불일치다. 의미 기반 판정이 필요하며, 이는 LLM 이 맡을 수 있는 영역이다.

전제가 되는 배치 환경 사실 두 가지. ① ADR-0010 의 On-Prem 은 물리 서버가 아니라 증권사가 통제하는 실행 환경(증권사 명의의 전용/금융 클라우드 포함)이다. 증권사 클라우드 계정에 배치되면 그 계정 안의 매니지드 모델(AWS Bedrock 계열)을 PrivateLink 로 붙일 수 있어 데이터 반출 논쟁의 폭이 크게 줄어든다 — 다만 처리 주체·리전·로그 보존·학습 미사용 보장은 자동으로 증명되지 않으며 테넌트 승인 절차의 대상으로 남는다. "온프렘 = 폐쇄망 = LLM 불가"라는 암묵 전제는 이 배치 형태에서 성립하지 않는다. ② 스크리닝 입력물은 전부 비개인 콘텐츠(설명문·근거· 출처)로, 개인신용정보 처리가 없어 규제상 비중요업무 트랙이 유지된다. CSP AI API 활용은 국내 금융권 생성형 AI 도입의 주류 경로다(2026-08-08 조사, 노션 기록).

한편 실시간 스냅샷 게시(ADR-0045)로 판정 대상은 장중 스냅샷 단위로 유입되고, 다스냅샷 공존(as_of grain)에서 검증 대상은 노출 중 head 한정이 아니라 현재 PUBLISHED 전체다(ADR-0045 결정 4). LLM API 지연은 수백 ms~수 초라 건마다 동기 호출하면 서빙 지연이 되고, 비용은 룰 대비 건당 10~100배다. 콘텐츠 모더레이션 실무 표준은 저비용 필터를 앞단에 두는 캐스케이드 + 비동기 큐다 — 단 이 제품의 LLM 판정 대상은 "불확실한 소수"가 아니라 결정적 판정을 통과해 게시된 전체다 (의미 기반 위반은 룰이 불확실 표시조차 못 하므로). 호출량의 실효 상한은 아래 결정 5의 절감 층과 델타 재사용이 만들고, 그래도 남는 적체는 결정 4의 미감사 임계 정책이 드러낸다.

결정

  1. 스크리닝에 LLM 트리아지 층을 추가한다. 기본 경로에서 LLM 은 게이트가 아니라 에스컬레이터다. LLM 판정은 자동 차단도 자동 통과도 만들지 않는다 — 플래그가 서면 해당 게시물을 검수 큐(CR)로 올릴 뿐이다. 자동 제공을 결정하는 하드 게이트는 기존 결정적 판정(PolicyEvaluator)이 그대로 맡는다. 최종 판단은 검수자(인간)에 남는다. 예외는 결정 2의 게시 전 모드 하나다 — 그 모드를 택한 테넌트는 LLM 판정 완료를 게시의 선행 조건으로 승격시키는 것이며(비플래그 → 게시, 플래그 → 검수 확정까지 게시 보류), 그 경우에도 차단 확정은 검수자다.
  2. 배치 위치는 게시 후 감사가 기본이다. 결정적 판정만 게시 전 하드 게이트로 두고, LLM 은 게시 직후 비동기로 판정한다. 플래그 시 검수행이 기본이고, 게시물 회수는 검수자 확정의 결과로만 일어난다 — LLM 플래그가 직접 비노출을 만들지 않는다(결정 1의 귀결). 회수의 실체는 온프렘 로컬 상태 전이(게시 철회) 다 — ADR-0044 의 INVALIDATION 은 Cloud 가 발번해 온프렘이 소비하는 단방향 계약이므로 온프렘이 재사용할 수 없고, 이 ADR 은 그 전달 계약을 건드리지 않는다. "짧은 노출"의 수용 여부는 테넌트마다 다르므로 게이트 위치(게시 전/후) 는 테넌트 정책 노브로 둔다 — 게시 전을 택한 테넌트는 LLM 판정까지 게시가 대기하는 지연을 수용하는 것이다. 게시 후 플래그의 검수행은 현행 검수 전이를 재사용하지 않는다 — 현행 REVIEW_REQUIRED 전이는 서빙 술어상 즉시 비노출이라 "회수는 검수자 확정의 결과"와 모순되므로, 게시를 유지한 채 검수 큐에 올리는 사후 검수 태스크가 별도로 필요하다(원장 설계는 구현 티켓).
  3. 판정은 감사 계보에 남는다. LLM 판정마다 모델 ID·모델 버전(핀 고정)·프롬프트 버전·판정 출력을 점검 원장(screening_check 계열)에 기록한다. 재현성 없는 판정은 감사 재현성이라는 제품 가치(ADR-0010)를 훼손하므로 기록 없는 호출은 없다.
  4. 실패 시맨틱은 경로별로 명시한다. 게시 전 게이트 경로는 fail-closed — LLM 호출 실패 시 통과가 아니라 검수 대기다. 게시 후 감사 경로는 서빙을 유지하므로 구조적으로 fail-open 이다 — 이를 숨기지 않고, 미감사 구간을 기록해 관측 지표로 드러내고 복구 후 소급 판정한다. 미감사 노출 임계는 두 등급이 있고 — 관측 임계(초과 시 알람)와 강제 임계(초과 시 게시 전 모드 자동 전환, 이때만 노출이 실제로 멈춘다) — 어느 등급까지 채택할지는 테넌트 정책이며 값·기본값은 구현 티켓에서 정한다. 강제 임계를 끈 테넌트의 미감사 노출에는 보장된 상한이 없다.
  5. 호출량은 구조로 줄인다. ① 폐기분 스킵 — 판정 큐는 스냅샷 단위로 쌓고, 꺼낼 때 더는 PUBLISHED 가 아닌 스냅샷(철회·무효화분)만 스킵한다. 종목 키 latest-wins 덮어쓰기는 쓰지 않는다 — 다스냅샷 공존(ADR-0045)에서는 이전 스냅샷도 여전히 PUBLISHED 라 덮어쓰면 미감사로 남고, 검증 대상은 PUBLISHED 전체다(ADR-0045 결정 4). 이 스킵 규칙은 게시 후 감사 경로 항목에만 적용한다 — 게시 전 게이트 모드의 큐 항목은 아직 PUBLISHED 가 아닌 게 정상이므로 경로 표시로 구분한다. ② 델타 스크리닝 — 동일 모델·프롬프트 버전 안에서 판정 대상 텍스트 해시가 직전 판정과 같으면 verdict 를 재사용하고 재사용 사실을 기록한다. 버전이 바뀌면 재사용하지 않는다 — 버전 핀(결정 3)과 교체 절차가 실효하려면 캐시 키에 버전이 들어가야 한다. ③ 계층 게이트 — 결정적 판정에서 이미 차단/검수행이 확정된 건은 LLM 을 태우지 않는다(판정 조건 집합은 PolicyEvaluator 가 SSOT — 이 ADR 의 열거는 예시다). ④ 잔여 호출에만 동시성 상한·토큰 버킷을 적용한다.
  6. 새 인프라 컴포넌트를 들이지 않는다. 판정 큐는 메시지큐 인프라가 아니라 Postgres(SKIP LOCKED 소비)로 구현한다. 온프렘 스택의 외부 의존을 Postgres 하나로 유지하는 것은 딜리버리 스펙의 협상 표면을 최소로 유지하는 제품 결정이다. LLM 엔드포인트는 테넌트 계정 내 매니지드 모델을 기본으로 하고, 구체 모델·리전은 테넌트 딜리버리 스펙에서 정한다.

대안

  • LLM 을 게시 전 하드 게이트로 — 판정 지연이 그대로 서빙 지연이 되어 실시간 스냅샷 방향(ADR-0045)과 충돌하고, LLM 장애 시 fail-closed 가 서빙 정지가 된다. 비결정적 판정에 자동 차단 권한을 주는 것도 감사 재현성과 "AI 는 보조, 최종은 인간" 프레임에 어긋난다. 기본값으로 배제하되, 결정 2 의 테넌트 노브로는 남긴다.
  • LLM 플래그가 직접 회수(자동 비노출) — 오탐이 인간 검수 전에 게시물을 제거하고, 회수의 권위가 비결정적 판정으로 넘어가 결정 1과 모순된다. 노출 창을 줄이는 이득보다 "최종 판단은 인간" 서사의 훼손이 크다 — 배제. 노출 창은 검수 큐 우선순위(LLM 플래그 건 최상위)로 줄인다.
  • 금칙어·룰 사전 고도화로 대체 — 표현 변주는 열거로 못 쫓는다. 부분일치 오탐 실측이 이미 있고, 룰 추가는 오탐·유지비만 키운다.
  • 벤더 클라우드에서 중앙 LLM 스크리닝 — 게시물·검수 흐름이 벤더 통제 환경으로 나가 ADR-0010 이 배제한 방향으로 되돌아간다. 테넌트 환경 안에서 판정해야 고객 데이터 비반출·감사 재현성 서사가 유지된다.
  • 전용 메시지큐(SQS·Kafka) 도입 — 이 volume 에서 Postgres 큐 대비 이점이 없고, 온프렘 딜리버리에 승인 대상 컴포넌트 하나를 추가한다. 폐기분 스킵도 DB 큐(dequeue 시 게시 상태 조인)가 구현이 단순하다.

결과

  • 얻는 것: 결정적 판정이 못 잡던 의미 기반 위반의 검출 경로, 테넌트 통제 환경 안에서 완결되는 판정("귀사 클라우드 안에서, 귀사 정책으로, 전 과정 감사 기록")이라는 제품 서사 강화, 인프라 추가 없는 도입.
  • 잃는 것/트레이드오프: 게시 후 감사 기본값은 위반 콘텐츠의 노출 창(게시→플래그 →검수 확정→회수)을 허용한다 — 이 구간이 새 운영 지표가 되고, 보수 테넌트는 게시 전 노브로 흡수한다. 게시 후 경로의 fail-open 은 미감사 구간 관측·임계라는 운영 부담을 동반한다. LLM 판정 비용·모델 버전 관리 부담이 생긴다.
  • 따라오는 의무: 모델·프롬프트 버전 핀 고정과 교체 절차, 미감사 구간의 관측·소급 판정과 임계 정책(관측/강제 등급), 게이트 위치 노브의 정책 스키마 편입, 게시 유지형 사후 검수 태스크와 온프렘 게시 철회 상태 전이의 원장 설계(ADR-0044 전달 계약과 별개임을 유지). 구현은 전부 별도 티켓이다 — 이 ADR 은 방향 합의만 기록한다.