TL;DR
비정형 텍스트에서 이름·회사·가격·날짜 등 구조화 필드를 뽑기 위해 매 문서마다 LLM을 호출하면 지속 비용과 응답 일관성 문제에 직면한다. 이 게시물은 LLM에게 일회성으로 추출기 프로그램을 작성하게 한 뒤 그 코드를 로컬에서 반복 실행하는 워크플로를 소개해 매 호출 비용과 변동성을 제거하는 방법을 제시한다. 라벨 단계에서 저비용 모델로 예제를 태깅하고 캐싱해 재라벨링을 피하며, 빌드 단계에서 강한 모델이 TypeScript(정규식·단어 목록·문맥 휴리스틱)를 생성해 검증셋으로 자체 테스트·패치하고 여러 후보를 비교·선발하는 방식으로 추출기를 자동화한다. 최종적으로 생성된 코드를 네트워크나 API 키 없이 로컬에서 실행하면 문서당 처리 시간이 마이크로초 단위로 줄고 결과가 결정론적이 된다. 결과적으로 초기 생성 과정에서는 LLM 호출이 필요하지만 그 후 운영 단계에서는 LLM 호출이 완전히 사라져 비용과 응답 변동성이 크게 줄어든다. 구현체는 npm과 GitHub에 공개되어 있어 실제 코드와 파이프라인을 바로 확인·적용할 수 있다.
실용적 조언
- 라벨 예제는 data.jsonl에 모아 두고 저비용 모델로 태깅한 뒤 결과를 캐싱해 재작업을 피할 것
- 생성된 추출기 코드는 TypeScript(정규식·단어 목록·휴리스틱) 형태로 만들고 검증셋으로 반복 테스트해 오류를 패치할 것
- 여러 후보를 생성해 성능 기준으로 선발하는 population/evolution 방식을 도입하면 단일 모델 오류에 의한 실패를 완화할 수 있다
- 운영시에는 생성된 코드를 로컬에서 실행해 API 호출·네트워크 의존성을 제거함으로써 비용과 응답 변동성을 낮출 것
섹션별 상세
용어 해설
- 프로그램 합성(Program Synthesis)
- — 자연어 지시나 예제를 바탕으로 사람이 쓸 법한 실행 코드(정규식·휴리스틱·파서 등)를 자동으로 생성하는 기법으로, 입력 텍스트를 추출 규칙으로 변환해 반복적 LLM 호출을 코드 실행으로 대체하는 방식에서 핵심 역할을 한다.
- 캐싱(Caching)
- — 한 번 계산한 결과(예: 라벨링된 예제)를 저장해 이후 동일 입력에 대해 재호출을 피하는 방법으로, 라벨링 비용을 한 번으로 제한하고 동일한 입력에 대해 결정론적 결과를 보장하는 데 쓰인다.
- 검증셋(held-out 예제)(Validation Set)
- — 모델이나 생성된 추출기 코드가 과적합 없이 일반화하는지 확인하기 위해 학습에 쓰이지 않은 예제를 따로 떼어두는 데이터로, 생성된 코드의 테스트·수정·성능 비교에 사용된다.
- 정규표현식(Regex)
- — 문자열 패턴을 서술해 특정 형식(날짜, 금액, 티커 등)을 추출하는 텍스트 처리 도구로, 자동 생성된 TypeScript 추출기 내부에서 핵심적인 규칙 기반 매칭 수단으로 활용된다.
언급된 도구
LLM으로 추출기 코드를 생성하고 로컬에서 실행하는 파이프라인 패키지
저비용 라벨링(예제 태깅)용 LLM
생성된 추출기 코드를 실행하는 언어(정규식·휴리스틱 구현)
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.