피드로 돌아가기
Dev.toAI/ML
원문 읽기
Regex 기반 파싱을 LLM 기반 Structured Output으로 전환하여 추출 정확도 95% 달성
How I Stopped Fighting Regex and Finally Extracted Data with LLMs
AI 요약
Context
비정형 고객 지원 이메일에서 Order ID, Intent, SKU를 추출하기 위해 47개의 Regex 패턴을 운용했으나, 데이터의 가변성과 오타로 인한 낮은 정밀도로 유지보수 한계 직면.
Technical Solution
- Pydantic 모델을 활용한 JSON Schema 정의로 출력 데이터의 타입 안정성 확보
- OpenAI JSON Mode와 Function Calling을 통한 비정형 텍스트의 정형 데이터 변환 구조 설계
- gpt-4o-mini 모델 채택을 통한 추론 비용 최적화 및 처리 속도 개선
- Schema Validation 실패 시 에러 메시지를 포함한 자동 Retry 로직 구현
- 엣지 케이스 해결을 위한 Few-shot Prompting 기법 적용 및 실패 로그 기반의 프롬프트 반복 개선
- 정형 패턴은 Regex로 처리하고 모호한 텍스트만 LLM으로 처리하는 하이브리드 파이프라인 구성
Impact
- 추출 정확도 95% 달성 및 미처리 건(5%)에 대한 수동 리뷰 프로세스 구축
- 개별 추출 비용 약 0.01 cents 수준으로 최적화
- 47개의 복잡한 Regex 패턴을 단순한 프롬프트와 스키마 정의로 대체하여 유지보수 공수 절감
실천 포인트
1. 비정형 데이터 추출 시 Pydantic과 같은 Typed Model을 통한 Validation 레이어 필수 구축
2. 비용 효율을 위해 High-end 모델보다 Task 적합도가 높은 Small-scale 모델(예: gpt-4o-mini) 우선 검토
3. LLM의 확률적 특성을 보완하기 위한 Few-shot 예시 제공 및 실패 로그 분석 기반의 프롬프트 튜닝 수행
4. 결정론적 처리가 필요한 단순 패턴은 Regex로, 문맥 파악이 필요한 부분은 LLM으로 분리하는 하이브리드 전략 고려