TL;DR
긴 문서에서 한 번의 호출로 전체 JSON 스키마를 얻으려 할 때 모델의 출력 토큰 한도 때문에 응답이 중간에서 잘려 파서가 전체를 거부하는 문제가 발생하며, 게시물은 이를 해결하기 위해 필드를 'path = value' 한 줄로 평탄화하고 스키마를 모델 토큰 한도에 맞춰 여러 호출로 분할하는 방식을 제안했다. 이 방식을 적용한 nfield는 같은 10‑Q 테스트에서 qwen3.6-27b 기준 필드 정확도 82%를 기록했고 가장 근접한 단일 호출 도구는 37% 수준으로 보고되었으며, ExtractBench 369개 필드 테스트에서는 nfield가 85%를 기록한 반면 단일 호출 도구들은 0%에 그쳤다. 구현은 dict·Pydantic·dataclass 입력을 받는 구조로 기존 파이프라인에 통합 가능하며, 분할 전략은 필드 수가 약 50개를 초과하는 대규모 폼에서 실질적 이득을 제공하지만 작은 폼에서는 단일 호출과 동률이다. 따라서 대규모 구조화 추출 워크플로에서는 호출 분할·평탄화·재조립 로직을 도입해 실패 범위를 축소하고 재시도 단위를 줄이는 것이 실용적 이점이 있다.
커뮤니티 반응
작성자는 자신이 라이브러리를 만든 사람이라고 공개한 뒤 코드 링크를 댓글에 올린다고 밝혔고, 같은 문제를 겪은 LangChain 사용자들이 공감할 것이라는 문맥을 덧붙여 피드백을 요청했다. 게시물 자체에 여러 비교 수치와 구체적 사례가 포함되어 있어 다른 사용자들이 재현 경험이나 추가 실험 결과를 공유하기 용이한 상태가 조성되었다. 작성자의 요청은 문제 재현 지점과 대규모 스키마 추출 워크플로에서의 경험 공유로 귀결되었다.
주요 논점
nfield의 평탄화와 스키마 분할 방식은 토큰 제한에 걸리는 출력 전체를 무효화하는 위험을 필드 단위 손실로 격하시키므로 대규모 필드 추출에서 정확도를 대폭 개선한다.
스키마 분할 전략은 필드 수가 어느 수준을 초과할 때만 이득을 제공하며, 게시물 자체에서 50필드 이하에서는 단일 호출 도구와 동률이라는 제한 조건을 명시했다.
합의점 vs 논쟁점
합의점
- 단일 호출로 전체 JSON을 얻으려는 접근은 모델의 출력 토큰 한도 때문에 넓은 스키마에서는 신뢰성이 낮다는 점이 일반적으로 인정된다. 이 문제는 출력이 중간에 잘릴 경우 파서가 전체 응답을 거부하는 체계적 실패로 이어진다는 점에서 심각성을 가진다. 따라서 대규모 스키마를 다룰 때는 호출 전략을 재설계해야 한다는 합의가 형성되어 있다.
- 스키마 분할과 출력 평탄화는 실패 범위를 축소하고 호출 단위로 재시도 및 병렬화를 적용할 수 있게 하므로, 대량 필드 추출에서 비용 대비 신뢰도를 개선할 수 있다는 점에서 실무적 가치가 있다는 데 동의가 모아진다. 다만 이 접근은 후처리에서 평탄한 출력들을 원래의 중첩 구조로 정확히 재구성할 수 있어야 실용성이 확보된다. 따라서 통합 파이프라인에서의 재조립 로직과 검증 절차가 필수적이다.
논쟁점
- nfield가 제시한 방법이 항상 최선인지에 대해서는 논쟁의 여지가 있다, 일부는 모델이나 프롬프트 설계를 개선하면 단일 호출로도 문제를 완화할 수 있다고 주장할 여지가 있다. 게시물은 토큰 한도와 요청 형태가 병목이라고 명시했지만, 모델·프롬프트·후처리 세부 조합에 따라 다른 해법이 경쟁력을 가질 수 있다. 이 점에서 어떤 상황에서 분할이 명백히 유리한지에 대한 경계 설정이 필요하다는 이견이 존재한다.
- 성능 측정의 일반화 가능성에 대한 의문이 제기될 수 있는데, 게시물의 수치는 특정 문서집(예: Nike 10‑Q, ExtractBench)에 근거한다는 점에서 도메인·언어·스키마 특성에 따라 결과가 달라질 가능성이 있다. 따라서 동일한 이득이 모든 유형의 문서나 언어, 모델에 대해 재현되는지에 대해서는 추가 검증이 요구된다. 이 때문에 일부에서는 더 넓은 벤치마크와 공개 재현 가능성이 필요하다고 본다.
실용적 조언
- 대규모 스키마를 추출할 때는 먼저 모델의 실제 토큰 한도를 확인하고 그 한도에 맞춰 스키마를 분할하는 계산을 자동화해야 한다. 호출을 최소화하면서도 각 호출이 토큰 한도 안에 들도록 필드를 묶는 로직을 구현하면 실패 시 재시도 범위를 좁힐 수 있다. 또한 평탄화된 'path = value' 출력 방식을 사용하면 일부 라인 손실이 전체 파싱 실패로 확산되는 것을 방지할 수 있으며, 이후 경로 표기를 따라 중첩 구조를 재구성하는 후처리 파이프라인을 준비해야 한다.
- 작업 파이프라인에 기존 Pydantic 모델이나 dataclass를 입력으로 받을 수 있는 통합 지점을 마련하면 nfield처럼 입력 타입을 그대로 활용해 기존 코드와 호환성을 유지할 수 있다. 테스트 단계에서는 필드 수를 50개 이하와 초과 구간으로 나눠 단일 호출과 분할 호출의 성능 차이를 비교해 분할 적용 임계값을 실험적으로 확인해야 한다. 벤치마크는 같은 모델과 동일한 문서셋으로 반복 실행하여 결과의 일관성을 검증하는 것이 중요하다.
섹션별 상세
이미지 분석

이미지는 표 형태의 수치(예: nfield 82%, instructor 37%, LangChain 22%, native JSON 22%, LangStruct 1%)를 시각적으로 요약해 도구 간 격차를 한눈에 보여준다. 이 차트는 게시물의 주장인 '단일 호출 방식이 넓은 스키마에서 실패하기 쉽다'는 점을 수치로 뒷받침하며, 모델 변경 시에도 격차가 유지되거나 확대된다는 서술과 일관된 정량적 근거를 제공한다.
툴별 필드 단위 정확도를 막대 형태로 비교한 차트로 nfield가 82%로 가장 높고 나머지 단일 호출 기반 도구들이 낮은 성적을 기록한 수치 표를 시각화하고 있다.
용어 해설
- Token limit
- — 모델이 한 번의 호출 또는 응답에서 처리할 수 있는 토큰 수의 상한으로, 입력·출력 합계가 이 한도를 넘으면 출력이 잘리거나 에러가 발생한다. 긴 문서나 넓은 스키마를 다룰 때 호출을 나누는 기준이 되며 모델 선택과 호출 분할 전략에 직접 영향을 준다.
- Schema splitting
- — 전체 JSON 스키마를 여러 개의 작은 작업 단위로 나누어 각 호출이 모델의 토큰 한도 안에 들어가도록 하는 기법으로, 모델 출력이 중간에서 잘려 전체 결과가 무효화되는 문제를 회피한다. 분할 후에는 각 호출 결과를 재조합해 원래의 중첩 구조를 복원하는 후처리가 필요하다.
- Pydantic
- — Python 데이터 검증 및 설정 라이브러리로, 타입 선언에 따라 구조화된 모델을 정의하고 JSON 직렬화/역직렬화를 지원한다. 게시물에서는 nfield가 dict, Pydantic 모델, dataclass 입력을 받아 기존 파이프라인에 쉽게 통합되는 점을 강조하는 맥락에서 언급됐다.
- Flat path serialization
- — 중첩된 JSON 구조 대신 'path = value' 형태의 평탄한 라인 단위 출력으로 각 필드를 독립적으로 출력하게 하는 직렬화 방식으로, 출력이 중간에 잘려도 해당 라인만 손실되며 전체 문서가 무효화되는 확률을 낮춘다. 이후 코드에서 경로 표기를 따라 중첩 구조로 재구성한다.
언급된 도구
대규모 문서에서 구조화된 필드 추출을 위해 스키마 분할과 평탄화 직렬화를 적용하는 오픈소스 라이브러리
LLM 기반 애플리케이션을 구성하는 프레임워크로서 게시물에서는 단일 호출 방식의 도구 사례로 비교 대상에 포함됨
구조화된 출력 생성 시 사용되는 라이브러리로서 비교 벤치마크에 포함되어 낮은 필드 정확도가 보고됨
비교 대상에 포함된 도구 이름으로서 필드 정확도 표에서 다른 단일 호출 도구들과 함께 평가됨
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.