← 미리디 아카이브

RLSC 온보딩 파이프라인 상세 2026-08-26

RLSC 생성 여정

원본 시트 한 장이 최종 RLSC가 되기까지. Full Sheet → 구조 결정 → role 부여 → 최종 조립. 구조는 '자동'이 아니라 LLM의 추론 결과라는 것이 이 그림의 요점이다.

agentic-rlsc-structuriser 부품 상세 도식 6·8 전후 맥락 도식 9
§0

오케스트레이터

전체를 도는 것은 AgenticRLSCStructuriserManager 하나다. ID를 단순화해 두고, 아래 ①–③ 루프를 돌린 뒤, 가장 좋은 결과를 골라 원본 ID로 되돌린다.

AgenticRLSCStructuriserManager
createIdMapping(단순 ID) → 아래 루프 반복 → selectBestRLSC → restoreRLSCIds(원본 ID)

⓪ 전처리는 이 루프보다 앞단에서 한 번만 돈다.

전처리 — 구조화 입력 만들기

Full Sheet를 그대로 LLM에 넣지 않는다. 절대좌표로 펴고, 페이지 role을 판정하고, 배경을 떼어 낸 뒤 전경만 구조화 대상으로 넘긴다 — 토큰이 줄고 정확도가 오른다.

Full Sheet
원본 레이아웃 시트 · PageJson
ALSC
절대좌표 구조화
TemplateDefiner
페이지 role 판정 · per_page_page_role
BackgroundExtractor
배경/전경 분리 (slidemaster / foreground)
foreground ALSC
구조화 대상 (배경 제외 → 토큰↓ · 정확도↑)
전처리 산출물 foreground ALSC가 ①의 입력이 된다.
§1

구조(type) 결정 — LLM이 '어떻게 묶을지'를 정한다

IN: foreground ALSC
⓪ 산출 · 단순 ID
callLLMForLayoutFunctions
LayoutFunction[] · 모드: LLM / CustomModel
applyPostProcessing
1×N Grid 등 비효율 구조 정규화
applyLayoutFunctions
명령 → 실제 트리 생성
OUT: 트리 (아직 role 없음)
newRlscNoRole

여기가 추론이다

말단 type은 원본에서 그대로 가져오지만, 컨테이너(그룹핑)는 여기서 LLM이 만들어 낸다. 즉 구조는 '자동 계산'이 아니라 추론 결과다.

§2

role 부여 — 생성된 트리에 의미역할 얹기

IN: 트리 (role 없음)
callLLMForRoleAssignment
→ 각 요소의 role 후보 (roleFunctionsYaml)
confidence ≥ 0.7 필터
ROLE_ASSIGNMENT_CONFIDENCE_THRESHOLD
applyRoleAssignments
통과한 role만 트리에 반영
OUT: 트리 + role = 후보 RLSC
rlsc (with role)
임계 미만 role은 버린다 — 무리한 추론을 방지한다. role은 optional이라 이렇게 나중에 얹힌다.

화면에 보이는 Inference Model Type이 바로 이 모델이다.

§3

반복 평가 → 최종 RLSC

구조가 옳은지 점수화하며 개선한다. 규칙 기반 분석 → 채점 → 계속할지 결정, 세 부품이 한 바퀴를 이룬다.

반복 루프 (상세: 도식 8)
  • ContextGenerator — 규칙 기반 구조 분석
  • Evaluator — 0~1 점수 (role 가중 0.30 최대)
  • Iterator — generate / complete / abort
generate → ①로 복귀(피드백 반영) · complete·abort → 루프 탈출
selectBestRLSC
히스토리 중 최고 overall 점수 선택
restoreRLSCIds
단순 ID → 원본 요소 ID 복원
최종 RLSC
layouts.structured_content_agentic_jsonb
generate일 때는 피드백을 안고 §1 구조 결정으로 되돌아간다 — 이 되돌이가 반복 개선의 실체다.

다운스트림: Design Object 추출 · SmartBlock (도식 9).