AI 스키마 생성

AI를 사용해 샘플 데이터에서 구조화된 JSON 스키마를 생성하며, 자동 자가 수정과 지능형 후처리를 지원합니다.

작동 방식

스키마 생성은 원시 엔티티 데이터를, 강화 중 어떤 정보를 추출할지 정확히 정의하는 타입이 지정되고 주석이 달린 JSON 스키마로 변환합니다. 스키마를 직접 작성하는 대신, 샘플 JSON을 붙여넣으면 AI가 구조를 분석하고 타입을 추론하며 전문 영역을 할당하고 개선점을 제안합니다.

생성 파이프라인

생성은 하나의 거대한 프롬프트가 아닙니다. 한 가지 관심사만 다루는 작은 호출들이 이어지며, 대부분 동시에 실행됩니다. 각 호출이 한눈에 볼 수 있는 자료에 대해 좁은 질문 하나에만 답하기 때문에, 작고 저렴한 모델로도 쓸 만한 스키마를 만들 수 있습니다.

  1. 샘플 정규화(LLM 미사용) — 단위를 함께 담고 있는 값은 단위를 이름에 넣은 숫자로 바뀌고("8.275 h"half_life_seconds: 29790이 됩니다), 기본 타입으로 표현할 수 없는 날짜는 정수 연도가 됩니다. 관측된 모든 값이 이 변환을 뒷받침해야 하며, 그렇지 않으면 해당 속성은 텍스트로 유지됩니다. 저장되는 것은 이렇게 다시 작성된 샘플입니다.
  2. 정체성 범위 지정 — 샘플을 변경할 수 있는 마지막 단계이므로 다른 모든 호출보다 먼저 실행되는 단일 호출입니다. 관련 배열의 항목이 해당 엔티티 자체에 대한 정보와 상위 항목과의 연결에 대한 정보를 함께 담고 있으면 항목이 재구성됩니다. 연결에 대한 정보는 그대로 두고, 엔티티 자체의 정보는 이름이 지정된 하위 객체 아래로 중첩됩니다. 이 과정이 없으면 두 종류의 정보가 하나의 정체성을 공유하게 됩니다.
  3. 스켈레톤 도출(LLM 사용 안 함) — 속성 트리, JSON 타입, null 허용 여부는 샘플에서 그대로 가져옵니다. 여러 위치에서 재사용되는 형태는 재사용 가능한 정의가 되고, 한 곳에만 있는 객체는 관계 검사가 그곳에서 엔터티를 인식한 경우에만 정의를 갖게 됩니다. 지역화된 객체(예: {"en": "...", "fr": "..."})는 하나의 다국어 값으로 합쳐집니다.
  4. 병렬 질문을 실행합니다 — 별도의 동시 호출이 엔티티의 식별 정보와 이름, 동작 플래그(key, preserve, multilingual, nullable 및 형식 제안), 정수 필드가 실제로 이산적인지 여부, 어떤 문자열이 닫힌 어휘에서 오는지, 그리고 속성이 어떤 전문 도메인으로 라우팅되는지를 결정합니다.
  5. 문서 작성 — 전문 도메인마다 한 번씩 해당 도메인의 페르소나로 호출하여 각 속성의 설명과 예시를 생성하고, 값이 실제로 비어 있을 수 있는지에 대한 자체 재검토 의견도 함께 제시합니다.
  6. 조립, 검증, 저장(LLM 미사용) — 조각들이 병합되고, 8가지 검증 규칙이 안전장치로 실행되며, 결정론적 후처리가 플래그 충돌을 해결한 뒤 스키마가 저장됩니다. 저장 시 콘텐츠 해시로 중복이 제거되므로 동일한 스키마가 중복 생성되지 않습니다.

각 단계는 자체적으로 최대 3회 재시도하며 시도 간에 답변이 누적되므로, 단편적으로 응답하는 모델도 결국 수렴합니다. 그 후 단계는 확보한 결과를 받아들이고 빈 부분은 결정적으로 채워집니다. 즉, 성능이 낮은 모델은 생성을 실패시키는 대신 설명의 품질을 낮출 뿐입니다. 전체 실행을 실패시킬 수 있는 것은 식별 정보와 도메인 라우팅뿐입니다. 모든 호출은 개별 프롬프트로 과금되고 기록되므로, 레코드에서 어디에 얼마가 쓰였는지 정확히 확인할 수 있습니다.

하나 대신 동일한 entity 유형의 여러 샘플을 전달할 수 있습니다 — 그러면 schema가 해당 샘플들의 필드 합집합을 포괄하고, 특정 샘플에서 누락된 항목은 nullable로 처리되며, 샘플 전반에서 확인된 값은 실제 예시가 됩니다. 필드 이름은 일치해야 합니다: 서로 다른 entity 유형을 설명하는 샘플은 거부되며, 공통 필드가 전혀 없어 해당 행을 식별할 수 없게 되는 배열 내 객체도 마찬가지로 거부됩니다. 샘플 편집기는 generation을 소비하기 전에 이러한 차이를 표시합니다.

고유 단위를 포함하는 값은 schema가 도출되기 전에 숫자로 변환됩니다. "8.275 h""85 ms"가 섞인 열은 정렬하거나 범위로 필터링하거나 집계할 수 없기 때문입니다. 단위는 속성 이름(half_life_seconds)으로 옮겨지고, "stable"처럼 숫자가 아닌 대체 표현은 null이 되며, 1년 이전으로 거슬러 올라가는 날짜는 정수 연도(기원전은 음수)가 됩니다. 이런 날짜는 어떤 날짜 타입으로도 저장할 수 없고 텍스트로는 잘못 정렬됩니다. 샘플 패널도 이에 맞게 갱신되어 항상 schema가 설명하는 샘플을 표시합니다. 변환이 확실하게 읽어내지 못하는 값은 입력하신 그대로 유지됩니다.

단계별 자가 교정

각 단계가 좁은 질문 하나에만 답하므로 교정도 좁은 범위로 이루어집니다. 각 단계의 검증기는 돌아온 결과 중 쓸 수 있는 부분은 그대로 두고, 빠진 부분만 다시 요청합니다. 처음부터 다시 생성하는 것이 없으므로, 부분적으로 맞은 답변은 낭비된 시도가 아니라 진전입니다.

예: 30개 속성에 대한 플래그 단계

시도 1모델은 그중 22개에 대해 응답하면서 답변을 여러 번의 도구 호출로 나눕니다. 작은 모델에서 흔히 나타나는 실패 양상입니다. 22개는 모두 유지됩니다.
재시도후속 요청에서는 남은 8개 속성만 요구합니다. 질문이 짧을수록 온전한 답변을 받을 가능성이 높아집니다.
시도 26개가 추가로 도착합니다. 마지막 2개는 결정론적 기본값으로 대체되며, 부족분은 실패로 처리되지 않고 생성 레코드에 기록됩니다.

8가지 검증 규칙은 조립된 스키마에 대해 여전히 최종 검사로 실행됩니다. 타입 정확성, 전문 분야 지정, 참조 무결성, 완전성이 그 대상입니다. 이 시점에서 규칙은 교정 장치라기보다 안전망 역할을 합니다. 각 규칙에 대한 자세한 내용은 Validation Rules 가이드를 참고하세요.

스키마에 포함되는 내용

생성된 스키마는 단순한 타입 정의 이상입니다. 각 속성에는 강화 프로세스를 안내하는 메타데이터가 포함됩니다:

유형

JSON 스키마 유형(string, number, integer, boolean, array, object)

설명

AI에게 어떤 정보를 찾아야 하는지 알려주는 맥락 설명입니다

expertise

어떤 전문 영역(재무, 규제 등)이 이 값을 제공하는지입니다

식별

이 필드가 인스턴스를 식별하는 요소인지 여부입니다. 식별 속성은 두 가지 역할을 동시에 합니다. 보강 프롬프트를 올바른 엔티티에 집중시키고, 융합이 배열 항목을 매칭하는 기준이 됩니다. 식별 속성도 null을 허용할 수 있습니다 — 비슷해 보이는 형제 항목을 구분하는 한정자는 일부 계열 전체에 실제로 값이 없더라도 여전히 식별 속성입니다

값 어휘

문자열의 값이 작고 관례적인 집합(상태, 등급, 분류 코드)에서 나오는 경우, 생성 기능이 샘플에 쓰인 표기 그대로 멤버를 제안하며, 이는 보강이 수렴해 가는 열린 어휘가 됩니다. 목록 밖에서 관찰된 값은 편집기에 후보로 표시되고, 값이 더 이상 늘어나지 않으면 집합을 닫으면 됩니다. 닫힌 집합은 보강이 벗어날 수 없는 엄격한 계약이 됩니다

Nullable

필드가 null이 될 수 있는지 여부 — null을 허용하지 않는 필드는 데이터베이스 승인에 필수입니다

다국어

필드를 여러 언어로 보강해야 하는지 여부입니다

유지

보강 중에 원래 값을 변경하지 않고 유지할지 여부입니다

예시

AI를 올바른 형식으로 안내하는 현실적인 예시 값입니다

형식 / 패턴

문자열 값에 대한 기계 검증 가능한 형태입니다. 형식에 맞지 않는 답변은 거부되고 재시도되며, 저장된 값은 표준 형태를 유지합니다. 생성 과정은 샘플로 입증된 명명된 형식(date, time, date-time, uuid, email, uri, ipv4, ipv6)만 지정합니다 — 정규식 패턴은 아직 아무도 보지 못한 값에 대한 예측이며, 잘못된 패턴은 해당 필드의 모든 보강을 실패시키므로 정규식은 편집기에서 직접 추가하세요

전문 영역 감지

AI는 의미론적 의미에 따라 스키마 속성을 전문 영역으로 그룹화합니다. 예를 들어 제약 회사 스키마에는 “Financial Analyst”, “Regulatory Expert”, “Corporate Information” 같은 영역이 있을 수 있습니다. 이러한 영역은 multi-expertise 전략이 병렬로 전문화된 LLM 호출을 실행하여 더 심층적인 결과를 얻는 데 사용됩니다.

  1. 1각 속성의 도메인별로 테이블을 다시 묶습니다
  2. 2이 전문가 호출 한 번으로 채워지는 속성
  3. 3해당 호출에 부여되는 페르소나
도메인은 레이아웃이 아니라 각 속성의 속성값이며, 토글은 보기만 재배치합니다. 도메인 이름 옆의 문장은 해당 보강 호출에 부여된 페르소나이고, 개수는 그 한 번의 호출이 답해야 하는 속성의 수입니다.

도메인 수 제한

전문 분야 수는 과도한 분할을 방지하기 위해 데이터의 속성 수에 따라 자동으로 제한됩니다:

속성 5개
도메인 1개
속성 12개
도메인 2개
속성 30개
도메인 5개
속성 60개
도메인 10개

후처리

조각들이 모이고 나면, 모델에 맡겨서는 안 되는 모든 사항을 결정론적 단계가 실제 입력 데이터를 근거로 확정합니다:

Nullable 확장

샘플 중 하나라도 누락되었거나 null인 필드는 모델의 답과 관계없이 nullable이 됩니다. 따라서 알 수 없는 값은 데이터 품질 오류가 아니라 허용되는 답이 됩니다. 샘플은 범위를 넓히는 방향으로만 작용합니다. 소수의 샘플은 해당 인스턴스에 값이 존재한다는 사실만 증명할 뿐 그 타입의 모든 인스턴스에 대해서는 증명하지 못하므로, 모델에도 한 표를 주고 두 결과를 OR로 결합합니다.

플래그 충돌 해결

공존할 수 없는 속성은 다시 묻지 않고 규칙에 따라 조정됩니다. preserve가 multilingual과 nullable보다 우선하고, 닫힌 어휘가 남으면 multilingual이 해제되며, 키 속성은 enum을 유지하지 않습니다.

배열 항목 키 복구

배열 안의 모든 객체에는 최소 하나의 키 속성이 보장됩니다. 키 속성은 융합이 중복을 제거하는 기준 단위이므로, 키가 없는 배열 항목은 두 모델의 답변을 병합할 수 없게 만듭니다.

expertise 컬렉션

모든 고유 전문 영역이 메트릭 및 전략 구성을 위해 스키마에서 수집됩니다.

스키마가 작성된 언어입니다

스키마는 타입 이름, 속성 설명, 전문 분야 레이블과 제안 등 스키마 자체를 특정 언어로 기술합니다. 이는 보강 결과를 생성할 언어와는 다른 개념입니다. 생성할 때 언어를 지정하거나, 지정하지 않으면 샘플의 속성 이름에 쓰인 언어가 결정합니다. 프랑스어 샘플에서 영어 스키마가 나오는 일이 없어집니다. 선택한 언어는 저장되므로 이후 AI 편집도 영어로 되돌아가지 않고 같은 언어로 작성합니다.

샘플 자체를 생성하기

시작하는 데 샘플 데이터는 필요하지 않습니다. 원하는 샘플을 평범한 말로 설명하기만 하면 — 엔터티의 종류, 담아야 할 속성, 어느 정도의 크기와 깊이인지 — 필요하다면 근거가 될 문서를 첨부하거나 웹 검색으로 실제와 대조하면서 — 플랫폼이 샘플을 대신 작성합니다. 여러 개를 요청하면 하나를 바꿔 쓴 것이 아니라 서로 다른 인스턴스를 여러 개 받게 됩니다.

  1. 1요청: 엔터티 종류, 속성, 크기 예산
  2. 2필드 개수가 아니라 생성되는 인스턴스 개수입니다
  3. 3Auto로 두면 모델이 명명 규칙을 선택합니다
“대표 예시”에는 이미 염두에 둔 인스턴스를 입력합니다. 샘플당 하나씩 순서대로 매칭되며, 비워 둔 자리는 자동으로 만들어집니다.

모든 인스턴스가 한 번에 선택됩니다

첫 번째 샘플은 같은 호출에서 나머지 샘플이 무엇을 다룰지도 함께 결정합니다. “예시 하나”를 N번 따로 요청하면 똑같이 유명한 사례가 어김없이 N번 반복되며, 등장 대상 전체를 미리 지정해야 비로소 서로 구별되는 샘플이 만들어집니다.

첫 번째 샘플이 구조를 확정합니다

나머지 샘플은 단순히 맞춰 달라고 요청하는 것이 아니라 샘플 1의 구조를 계약으로 삼아 그에 맞춰 병렬로 생성됩니다. 따라서 변형 샘플이 필드 이름을 바꾸거나 필드를 추가·삭제할 수 없습니다. 그래도 중복되거나 형식이 잘못된 샘플이 나오면 횟수가 제한된 재시도 단계에서 다시 요청하며, 요청한 개수를 채우지 못하면 조용히 더 적게 제공하지 않고 그 사실을 알려 드립니다.

요청은 반드시 지켜지며, 필요할 때는 질문으로 되돌아옵니다

요청에 담긴 모든 내용이 반영됩니다. 크기 예산은 최대한 많이 생성하려는 생성기의 성향보다 우선하고, 요청한 구조는 기본값보다 우선합니다. 반영할 수 없는 항목이 있으면 그 이유와 함께 응답에 표시되며, 조용히 누락되는 일은 없습니다. 단 한 가지, 샘플 개수는 요청에 포함할 대상이 아닙니다. 생성되는 샘플 수는 샘플 개수(sample count)로 정해지며, 각 샘플은 정확히 하나의 인스턴스입니다. 텍스트에 “샘플 3개”라고 적어도 하나의 객체에 감싸인 목록이 반환되지는 않습니다. 요청이 실제로 모호한 경우(해석이 여러 가지인 엔터티 종류, 서로 양립할 수 없는 두 범위 등)에는 생성기가 추측하지 않고 생성을 시작하기 전에 먼저 질문합니다. 언어는 기본값이 auto이며, 요청에 사용된 단어에서, 그다음으로는 첨부된 문서에서 추론됩니다.

모호성 검사

속성 이름을 상위 객체의 맥락에서 읽고, 그 이름이 물을 수 있는 서로 다른 대상이 몇 개인지 세어 보세요. 하나면 명확합니다. 둘 이상이면 모델마다 서로 다른 하나를 선택하게 되어, 해당 열에는 다른 질문에 대한 답이 뒤섞입니다. 회사의 annual_revenue는 그룹 전체일 수도 개별 엔티티일 수도 있고, 총액일 수도 순액일 수도 있으며, 통화도 여러 가지일 수 있습니다. 물을 대상이 아예 없는 경우, 즉 이 상위 항목에 존재하지도 않는 것을 가리키는 이름은 더 나쁩니다. 찾아볼 것이 없으니 모델이 값을 지어내기 때문입니다.

생성 단계에서는 이 문제를 두 번 걸러냅니다. 프롬프트 자체가 한 가지로만 해석되는 이름을 요구하고, 완성된 스키마를 다시 훑는 후처리 단계가 여전히 그렇지 못한 이름을 표시합니다. 이 단계의 해결책은 이름 변경입니다. 설명은 이름에서 생성되었으므로 설명이 그 출처인 이름의 모호성을 해소할 수 없고, 아직 스키마에 의존하는 것도 없기 때문입니다. 샘플 생성도 샘플에 동일한 검사를 실행해 사용자가 보기 전에 이름 변경을 적용합니다. 설명, 요약, 메모 같은 자유 서술 텍스트는 표시되지 않습니다. 표현은 달라지더라도 묻는 질문은 명확하기 때문입니다.

표시된 속성은 워크플로 편집기에서 “모호함” 배지와 함께 그 이름이 가질 수 있는 해석을 보여 줍니다. 스키마가 운영에 반영된 뒤에는 해결책이 설명 다시 쓰기로 바뀌며, 데이터 계약을 깨지 않고 하나의 의미로 고정합니다. 전체 기준과 해결 방법은 모호성 검사 가이드를 참고하세요.

설명으로부터 샘플 엔터티를 생성할 때 “Use web search”를 활성화하면 모델이 학습 데이터에만 의존하지 않고 웹에서 최신 정보를 찾아볼 수 있습니다. 이렇게 하면 특히 가격, 직원 수, 최신 출시처럼 빠르게 바뀌는 정보에 대해 더 최신이고 정확한 샘플 값을 얻을 수 있습니다. 이 옵션은 제공자가 내장 웹 검색을 지원하는 모델에서만 사용할 수 있으며, 검색 호출은 다른 모델 사용과 마찬가지로 제공자가 과금합니다.

  1. 1검색 기능이 내장된 모델에만 해당합니다
  2. 2여기서 모델을 바꾸면 비활성화될 수 있습니다
체크박스는 바로 아래에서 선택한 모델과 연동됩니다. 제공자에 내장 검색이 없는 모델을 고르면 체크박스가 비활성화되며, 선택을 조용히 무시하는 대신 그 이유를 표시합니다.

AI 스키마 편집

생성 후 자연어 지침을 사용하여 스키마를 수정할 수 있습니다. 명령을 입력하면 AI가 기존 스키마 구조를 유지하면서 변경을 적용합니다. 각 편집마다 추가 개선을 위한 5가지 제안도 생성됩니다.

편집 명령 예시

employee_count 정수 필드를 추가합니다
도시와 국가를 포함한 중첩 주소 객체를 생성합니다
모든 텍스트 필드에 프랑스어 설명 추가
$defs를 사용하여 모회사 참조를 정의합니다
website 필드를 nullable로 표시

AI 편집은 입력 데이터와 비교하지 않고 생성 규칙의 일부(타입 검사, 참조 무결성, 전문 분야 일관성)를 사용하여 검증됩니다. 필드를 의도적으로 추가하거나 제거할 수 있기 때문입니다.

AI 제안

스키마 생성과 AI 편집 모두 서로 다른 개선 범주를 다루는 5가지 맞춤 제안을 생성합니다:

데이터 완전성엔티티를 보강할 수 있는 누락된 필드
데이터 품질닫힌 어휘, null 허용 여부, 타입 수정
관계중첩 구조, $defs를 통한 엔티티 참조
국제화다국어 번역, 로케일 지원
비즈니스 컨텍스트도메인별 필드 및 전문성 그룹화

제안은 Workflow Editor에 클릭 가능한 칩으로 표시됩니다 — 하나를 클릭하면 AI 편집 입력란이 자동으로 채워지고 적용됩니다.

다음 단계