보강 흐름 - Entity Enricher 문서

보강 흐름

Entity Enricher가 단일 엔터티를 처리하는 방식을 단계별로 안내합니다 — 입력에서 분류, 병렬 모델 실행을 거쳐 구조화된 출력까지.

파이프라인 한눈에 보기

입력
엔터티 JSON
+ 스키마
분류
선택적
유형 확인
병렬 model
Claude
재무
규제
일반
GPT-4
재무
규제
일반
검증
유형 검사
자가 수정
출력
구조화된
모델별 JSON

1단계: 강화 구성

Workflow Editor 페이지를 열고 강화를 설정하세요. 워크플로 스테퍼가 파이프라인 단계인 Sample Data, Schema, Enrichment, Results를 안내합니다 — 스키마가 database sync에 연결된 경우에는 Database Ready 단계가 추가되어, 실행의 변경 사항이 데이터베이스에 큐잉되었음을 확인합니다(또는 저장이 거부된 이유를 설명합니다).

스키마 패널(왼쪽)

샘플 JSON을 붙여넣어 스키마를 자동 생성한 다음, 대화형 속성 트리를 살펴보세요. 속성을 편집하고 전문 분야를 추가하며 필드를 검색 키나 보존 대상으로 지정하세요.

보강 패널 (오른쪽)

강화 옵션(전략, 모델, 언어, 분류, 응답 스키마 및 엄격한 구조화 출력 토글)을 구성하고 엔티티 검색 키(이름, 웹사이트, 국가 등)를 입력하여 엔티티를 식별하세요.

결과 패널

각 모델의 실시간 진행 상황과 결과를 표시합니다. 여러 모델을 사용할 경우 융합을 위한 “결과 병합” 버튼이 나타납니다.

토큰이 소비되기 전에 확인되는 항목

일부 요청은 애초에 쓸 만한 결과를 만들어 낼 수 없으며, 이를 가장 저렴하게 발견할 수 있는 지점은 첫 LLM 호출 이전입니다. 두 가지 계약이 사전에 적용됩니다.

입력 계약

스키마는 입력에 무엇이 반드시 포함되어야 하는지를 명시합니다. 어떤 엔터티인지 알려 주는 키 필드, 제공하는 배열의 모든 항목에 대한 키, preserve로 표시된 모든 필드의 값(제공된 적 없는 값은 보존할 수 없습니다)이 그것입니다. 이 중 하나라도 빠진 요청은 모든 위반 사항을 한 번에 나열한 단일 오류와 함께 거부되며, 스키마의 전체 계약도 함께 반환됩니다. 따라서 거부를 반복하며 요구 사항을 하나씩 알아낼 필요 없이 한 번에 수정할 수 있습니다. 이 계약은 저장된 모든 스키마에 공개되므로 클라이언트가 전송 전에 확인할 수 있습니다.

닫힌 배열 계약

항목을 직접 제공한 배열은 정확히 그대로 보강됩니다. 모델은 각 항목에 대해 아는 내용을 채워 넣을 뿐, 항목을 추가하거나 삭제할 수 없습니다. 다섯 개의 항목을 보냈다면 다섯 개가 그대로 돌아옵니다. 모델이 처리하지 못한 항목은 사라지지 않고 원문 그대로 다시 삽입되며, 모델이 지어낸 항목은 제거됩니다. 비워 둔 배열은 여전히 열려 있습니다 — 모델이 사실을 발견하는 것이며, 그것이 바로 목적입니다.

2단계: 사전 분류 (선택 사항)

분류 모델을 선택한 경우, 엔터티가 스키마 유형과 일치하는지 확인하기 위해 빠르고 저렴한 LLM 호출이 먼저 실행됩니다. 이는 엔터티가 일치하지 않을 때 강화에 토큰을 낭비하는 것을 방지합니다. 자세한 내용은 분류 문서에서 확인하세요.

비차단: 어떤 이유로든 분류가 실패해도 보강은 정상적으로 진행됩니다. 분류는 순전히 참고용입니다 — 보강 프롬프트에 컨텍스트를 추가하지만 파이프라인을 절대 차단하지 않습니다.

3단계: 전략 실행

선택한 각 모델은 지정한 전략으로 엔티티를 처리합니다. 지정하지 않으면 기본적으로 스키마의 형태에 따라 자동 선택되며, 실행이 시작될 때 선택된 전략을 알려 줍니다. 여러 모델을 선택하면 제공자 간에는 병렬로 실행되고(Claude와 GPT-4가 동시에 실행됩니다), 같은 제공자의 모델은 속도 제한을 지키기 위해 순차적으로 실행됩니다.

다중 전문 분야 예시(3개 분야)
1
전문 분야별로 스키마 분할
속성은 전문 영역별로 그룹화됩니다: 재무 필드, 규제 필드, 일반 필드.
2
병렬 LLM 호출을 실행합니다
각 expertise는 관련된 schema 속성만 담긴 집중된 prompt를 받습니다. 모두 동시에 실행됩니다.
3
결과를 점진적으로 fusion합니다
각 전문 영역이 완료되면 그 출력이 누적된 결과에 병합됩니다. 부분 결과를 실시간으로 확인할 수 있습니다.
4
보존 로직 적용
'preserve'로 표시된 필드의 원래 값이 복원되어 입력 데이터가 그대로 유지됩니다. 배열 내부에서는 보강된 항목이 위치가 아니라 키 필드를 기준으로 입력 항목과 다시 매칭되므로, 순서가 바뀐 응답에서도 올바른 값이 복원됩니다.

4단계: 검증 및 자체 수정

각 LLM 응답은 schema에 대해 실시간으로 검증됩니다. 출력이 예상되는 타입이나 제약 조건과 일치하지 않으면 시스템이 자동으로 오류를 LLM에 다시 보내 수정하도록 합니다.

자동으로 수정되는 항목:
숫자 대신 문자열
"42.2"는 42.2가 됩니다
배열로 인덱싱된 객체
{"0": "a", "1": "b"}은(는) ["a", "b"]가 됩니다
문자열 null
"null" 또는 "None"은 실제 null이 됩니다
model이 확정하지 못한 값
값을 지어내지 않고 그대로 선언합니다 — 해당 경로는 null이 됩니다

LLM 호출당 최대 5회까지 자동으로 재시도합니다. 각 재시도에는 구체적인 검증 오류가 함께 전달되므로 LLM이 무엇을 고쳐야 하는지 정확히 알 수 있습니다. 복구도 정밀하게 이루어져, 답변 전체가 아니라 잘못 반환된 리프 항목만 다시 요청합니다.

이 목록에 없는 항목에 주목하세요. 모델이 판단하지 못한 값은 재시도해야 할 오류가 아닙니다. 모든 필드는 값 없이 반환될 수 있고 모델은 무엇을 찾지 못했는지 명시하므로, “알 수 없음”은 실패가 아니라 하나의 답입니다. 누락된 값을 허용할지는 나중에 엔터티가 데이터베이스에 승인되는 시점에 결정되며, 모델에 추측을 강요해서 정하지 않습니다.

소스에서 출력 강제

선택적 토글 두 개는 provider가 출력을 반환하기 전에 제약하도록 요청하므로, 애초에 수정이 필요한 응답이 줄어듭니다. 둘 다 이를 지원하는 model에만 적용되며, 나머지는 모두 위의 검증 및 재시도 루프로 처리됩니다.

응답 스키마
provider의 기본 응답 schema 채널로 schema를 전송하여 JSON이 서버 측에서 강제되도록 합니다. 기본적으로 비활성화되어 있으며, 그렇지 않으면 지원 가능한 model은 도구 호출 채널을 사용합니다.
엄격한 구조화된 출력
사용되는 구조화 채널에 관계없이 디코딩을 schema로 제약합니다(드리프트 없음). 기본적으로 켜져 있으며, 이를 적용할 수 없는 model에서는 조용히 무시됩니다.

5단계: 실시간 스트리밍

Entity Enricher는 Server-Sent Events(SSE)를 사용하여 진행 상황을 실시간으로 스트리밍합니다. 모든 모델이 완료될 때까지 기다릴 필요가 없습니다 — 각 전문 분야 또는 모델이 완료될 때마다 결과가 점진적으로 나타납니다.

이벤트 타임라인 (모델 2개, 전문 영역 3개 예시)
0.0sstarted작업이 시작되고 모델 2개가 대기열에 추가됩니다
0.1sclassification_started사전 점검 시작
0.8sclassification_completed엔터티가 "일치"로 확인됨(95%)
0.9smodel_startedClaude와 GPT-4가 병렬로 시작됩니다
1.2sexpertise_completedClaude: 재무 완료, 부분 결과 스트리밍됨
1.5sexpertise_completedClaude: 일반 완료, 결과 업데이트됨
1.8sexpertise_completedClaude: 규제 완료, 전체 결과 준비됨
1.9smodel_completedClaude가 완전한 구조화된 출력으로 완료되었습니다
2.5smodel_completedGPT-4가 완전한 구조화된 출력으로 완료되었습니다
2.5scompleted모든 모델 완료, 스트림 종료

6단계: 결과 검토

각 model은 구조화된 JSON 출력, expertise별 진행 배지, 토큰 사용량, 비용, 처리 시간을 표시하는 자체 결과 패널을 갖습니다. 다중 expertise 전략을 사용할 때는 각 도메인이 완료됨에 따라 expertise 배지가 실시간으로 업데이트됩니다.

모델별로 보이는 항목:
  • 상태 배지 — 대기 중, 실행 중, 성공, 실패 또는 부분 완료
  • 전문 분야 배지 — 분야별 진행 상황을 보여주는 색상 알약(파란색 = 실행 중, 초록색 = 완료, 빨간색 = 실패)
  • 점진적 JSON — 각 전문 분야가 완료될 때마다 출력이 업데이트됩니다
  • 지표 — 처리 시간, 토큰 수, USD 단위 비용
  • 진행 로그 — 모든 이벤트에 대한 타임스탬프가 찍힌 항목

부분 성공 처리

다중 전문 분야 전략을 사용하면 일부 전문 분야는 실패하고 다른 전문 분야는 성공할 수 있습니다. Entity Enricher는 전체를 폐기하는 대신 성공한 전문 분야의 병합된 출력을 “부분” 상태로 반환합니다. 그런 다음 전체 강화를 다시 실행하지 않고 실패한 전문 분야만 재시도할 수 있습니다.

예시: 3개의 전문 분야 중 2개가 성공하면, 성공한 분야를 다루는 구조화된 출력을 얻습니다. 실패한 전문 분야는 다시 시도할 수 있으며, 그 결과는 기존 출력에 병합됩니다.

다음에 무슨 일이 일어나나요?

강화가 완료되면 결과가 나중에 참조할 수 있도록 History 페이지에 저장됩니다. 여러 모델을 사용한 경우 다중 모델 퓨전을 사용하여 결과를 병합할 수 있습니다.