피드로 돌아가기
Normalized Categories: One Filter for "Polos" Across Every Supplier
Dev.toDev.to
Backend

LLM 기반 정규화 카테고리 체계 구축을 통한 Cross-Supplier 통합 검색 구현

Normalized Categories: One Filter for "Polos" Across Every Supplier

PSRESTful2026년 5월 1일7intermediate

Context

공급업체마다 상이한 ProductCategory Taxonomy로 인해 통합 검색 시 데이터 파편화 발생. 사용자가 수동으로 카테고리를 매핑하고 결과를 병합해야 하는 운영 비효율성 및 검색 경험 저하 직면.

Technical Solution

  • Django 기반의 2단계 정규화 Taxonomy(NormalizedCategory, NormalizedSubcategory) 설계로 복잡도 제어
  • LLM Classifier를 활용하여 수십만 개의 기존 제품을 정규화 카테고리로 자동 매핑하는 플러그형 아키텍처 도입
  • API 응답 시 데이터 역정규화(Denormalization)를 통해 단일 호출로 전체 Category Tree를 반환하여 네트워크 오버헤드 감소
  • SQLAlchemy 서브쿼리를 통한 Category-Subcategory 계층 필터링 로직 구현으로 쿼리 효율성 확보
  • YAML 기반의 Taxonomy 관리와 6시간 주기 Shop-level 캐싱을 통한 데이터 일관성 및 성능 최적화
  • 폼 검증 단계의 Queryset 의존성을 제거하고 request.GET에서 직접 ID를 추출하는 패턴으로 캐시 불일치 문제 해결

- 다수의 외부 벤더 데이터 통합 시, 원본 데이터를 유지하는 Raw API와 정규화된 Normalized API를 분리하여 운영할 것 - 복잡한 계층 구조보다 사용자 경험에 최적화된 낮은 Depth(2-level)의 Taxonomy 설계를 우선할 것 - LLM 분류기 도입 시 추론 엔진을 교체 가능한 Pluggable 구조로 설계하여 Local(Ollama)과 Hosted 모델 간 유연성을 확보할 것 - API 응답 설계 시 데이터 규모가 작다면 의도적인 역정규화를 통해 API Call 횟수를 줄이는 전략을 검토할 것

원문 읽기