← 전체 프로젝트
프로덕션 G-Man Auto Parts · 2025–2026

자동차 부품 AI 의미 검색

구매자와 공급업체는 자기 언어로 평범한 단어를 입력해 특정 차량에 정확히 맞는 부품을 찾을 수 있어야 했습니다. 저는 검색을 처음부터 끝까지 구축했고, 정부 R&D 사업이 요구한 95% 정확도에 도달했음을 입증하는 테스트 스위트도 만들었습니다.

역할
유일한 AI/ML 엔지니어. 설계, 임베딩, 개체명 인식, LLM 단계, 평가, 프로덕션 운영을 맡았습니다.
결과
정부 R&D 사업의 3,000개 부품 테스트에서 95% 이상의 정확도. 과제는 승인되었습니다.
기술 스택
Python, Django REST Framework, Weaviate, spaCy, OpenAI API (GPT-4o-mini), Celery, PostgreSQL, AWS S3
규모
카탈로그에는 부품 레코드가 200만 건 이상 있고, 판매 중이며 검색 가능한 매물은 30만 개 이상입니다. Kia, Hyundai, SsangYong, Chevrolet 차량을 다룹니다.

문제

사람들은 같은 부품을 여러 방식으로 부릅니다. “headlight”나 “head lamp”처럼 표현이 다르기도 하고, 비공식 명칭이나 다른 언어를 쓰기도 합니다. 하지만 정답은 정확히 한 차량에 맞는 하나의 부품 번호입니다. 브랜드, 모델, 연식, 연료, 변속기, 세대, 위치(좌/우, 앞/뒤)가 모두 맞아야 합니다.

경직된 키워드 필터로는 이를 처리할 수 없었습니다. 회사에는 평범한 말을 이해하고 거의 매번 올바른 부품을 돌려주는 검색이 필요했습니다. 이 검색은 정부 R&D 사업에 제출한 과제의 일부이기도 했습니다. 과제가 승인되려면 검색이 3,000개 부품으로 고정된 테스트에서 95% 정확도에 도달해야 했습니다.

검색 요청 처리 흐름

  1. 언어 확인 작은 언어 감지기가 먼저 실행되어, 필요할 때만 LLM을 호출합니다.
  2. LLM 정규화 영어가 아닌 질의를 번역하고 정리합니다​(GPT-4o-mini).
  3. 개체 추출 spaCy NER이 브랜드, 모델, 연식, 연료, 변속기, 부품명, 위치, 세대를 찾아냅니다.
  4. 필터 적용 벡터 검색 추출한 개체를 Weaviate 의미 검색 위에 정확한 필터로 적용합니다.
  5. LLM 재정렬 LLM 후처리 필터가 명백히 틀린 결과를 제거하고 나머지의 순서를 다시 정합니다.
  6. 결과 구매자에게는 상품 검색, 공급업체에게는 카탈로그 매칭 결과를 제공합니다.
  • Django REST API두 가지 검색 모드를 스토어와 관리자 도구에 제공
  • 정확도 테스트 스위트고정된 테스트 세트로 같은 파이프라인을 실행
  • S3 리포트모든 테스트 실행 결과를 저장하며 재배포 후에도 유지
프로덕션 검색 파이프라인입니다. 점선으로 표시한 단계는 영어가 아닌 질의에만 실행됩니다.

예시: 검색어 하나가 처리되는 과정

  1. 한국어로 입력한 검색어 현대 쏘나타 2019 왼쪽 헤드라이트
  2. LLM 정규화 후 Hyundai Sonata 2019 left headlight
  3. 추출한 개체(정확한 필터로 사용)
    • brand: Hyundai
    • model: Sonata
    • year: 2019
    • side: left
    • part: headlight
    별칭 목록이 “headlight”를 카탈로그 이름인 Head Lamp Assembly로 바꿉니다.
  4. 벡터 검색과 LLM 재정렬 후 결과
    • Head Lamp Assembly · Left 가장 먼저 표시
    • Fog Lamp · Left LLM이 제외
단계를 보여 주기 위해 가상의 검색어로 만든 예시입니다.

구축한 내용

  • 벡터 검색 핵심. 부품 카탈로그를 Weaviate에 임베딩하고 Django REST Framework로 검색 서비스를 만들었습니다. 각 부품에서 어떤 텍스트를 임베딩할지, 예를 들어 필드 라벨, 부품 위치, 차량 연식, 선별한 동의어를 직접 골라, 올바른 부품이 더 많이 검색되게 했습니다.
  • 개체를 엄격한 필터로. spaCy가 자유 형식 질의에서 구조화된 정보를 뽑아 정확한 필터로 바꿉니다. 표현의 차이는 벡터 검색이 처리하고, 차량과 위치가 맞는지는 필터가 보장합니다.
  • 두 가지 검색 모드. 구매자는 상품 검색을 씁니다. 공급업체는 자동 매칭을 씁니다. 공급업체가 부품을 업로드하면 검색이 그 부품을 카탈로그 레코드와 연결하고, 서로 다른 부품 번호마다 별도의 결과를 만듭니다.
  • 다국어 질의. 영어가 아닌 질의는 LLM이 번역하고 정리합니다. 이 LLM을 GPT-3.5-Turbo에서 GPT-4o-mini로 바꿔 더 낮은 비용으로 더 좋은 품질을 얻었고, 언어 확인 단계가 LLM 호출 횟수를 낮게 유지합니다.
  • 관련성 튜닝. LLM 재정렬기가 명백히 틀린 결과를 제거합니다. 별칭 목록이 일상적인 단어를 카탈로그 이름에 연결하므로, “headlight”로 검색하면 Head Lamp Assembly를 찾습니다. 이 덕분에 일상적인 표현의 정확도가 올랐습니다.
  • 프론트엔드 연동. 온라인 스토어와 관리자 도구를 검색 API에 연결했습니다. 페이지의 필터가 질의에 반영되고, 매칭 결과가 공급업체의 입력 폼을 채우며, 결과는 관련성 순으로 정렬되고 확신도 임계값 아래는 잘라 냅니다.

정확도 측정

정확도는 추측이 아니라 측정해야 했습니다. 프로덕션 검색과 같은 파이프라인을 선별된 고정 테스트 세트로 실행하는 내부 테스트 페이지를 만들었습니다.

  • 지표: accuracy@1, accuracy@3, precision, recall, F1, 혼동 행렬, 교차 검증.
  • 반복 가능한 실행: 자동 또는 수동으로 실행합니다. 실행마다 실행한 사람과 LLM 단계 사용 여부를 기록합니다.
  • 안전한 설계: 테스트 데이터는 별도 컬렉션에 두고, 테스트가 프로덕션 데이터에 절대 접근하지 못하도록 보호 장치를 두었습니다.
  • 오류 분석: 질의에 결과가 하나도 없으면 원인을 추적했습니다. 오래된 테스트 레코드, 카탈로그 항목과 맞지 않는 매물, 서로 충돌하는 두 개체 패턴, 질의에 들어간 차체 색상 같은 원인을 찾아 하나씩 고쳤습니다.

결과

  • 95%+정부 R&D 사업의 3,000개 부품 테스트에서 얻은 정확도
  • 승인테스트를 통과한 R&D 과제
  • 30만+판매 중이며 검색 가능한 매물, 부품 레코드 200만 건 이상의 카탈로그 기반

검색은 구매자와 공급업체 모두를 위해 프로덕션에 출시되었습니다. 프로덕션에서도 자동 정확도 테스트를 실행하고, 발견된 문제를 해결했습니다.

이 페이지에는 회사 코드, 내부 데이터, 비공개 URL을 싣지 않았습니다.