pile·
AI / ML·미리디미리디·

통합 검색 임베딩 모델 개발기: 디자인 검색을 하나의 표현 공간으로 묶기

미리디 AI팀 검색파트가 미리캔버스의 여러 검색 기능을 태스크별 모델로 각각 운영하던 구조에서 하나의 통합 임베딩 모델로 옮긴 개발기 1편이다. 텍스트 쿼리, 이미지 쿼리, 이미지+텍스트 멀티모달 쿼리를 같은 표현 공간에서 비교해야 했고 디자인 도메인 특성상 이미지의 비율까지 정보로 다뤄야 했다. Qwen3-VL-Embedding을 골라 LoRA로 파인튜닝했고 손실 함수 세 가지를 함께 썼다.

핵심 포인트
  • 태스크마다 최적 모델을 두는 방식은 초기에 효과적이었지만, 기능이 늘수록 모델을 탐색·학습·서빙·유지하는 부담이 커지고 한 검색에서 얻은 학습 신호를 다른 검색으로 확장하기 어려웠다.
  • 통합의 목표는 모델 수 감소가 아니라 여러 태스크의 데이터를 한 모델이 함께 학습해 일관된 임베딩 공간을 갖는 것이었다.
  • 디자인 이미지는 세로 포스터부터 긴 상세페이지까지 비율 편차가 커서, 정사각형으로 리사이즈하면 타이포그래피·여백·요소 배치 같은 핵심 정보가 왜곡된다.
  • 모델 선택의 가장 큰 기준은 원본 비율에 따라 가변 토큰으로 인코딩하는 Naive Dynamic Resolution이었다.
  • 텍스트-이미지 데이터는 cosine similarity 임계치가 과제마다 분포가 달라 안정적이지 않았고, MLLM에게 관련성을 직접 판별시키는 방식으로 전환했다.
상세 정리
  • 검색의 성격: 디자인 검색은 키워드와 이미지를 매칭하는 문제가 아니라 텍스트의 의미, 이미지의 스타일, 레이아웃과 비율, 사용자의 선택 신호까지 함께 이해해야 하는 문제다.
  • 기존 운영: 텍스트로 디자인을 찾는 검색에는 CLIP 계열 대조학습 모델을 쓰고 자체 사용자 행동 데이터를 더해 고도화했으며, 비슷한 분위기의 템플릿을 찾는 것처럼 사전학습만으로 충분한 태스크는 BLIP을 별도 학습 없이 서빙했다.
  • 과제 1 text-to-image retrieval: 사용자는 "여름 메뉴 세로 포스터", "물감으로 그린 강아지"처럼 단일 키워드가 아니라 여러 단어가 조합된 구문으로 검색하므로, 단어를 개별 매칭하는 것을 넘어 검색어 전체의 의도를 이미지와 연결해야 한다.
  • 과제 2 image-to-image retrieval: 별도 검색어 없이 기준 이미지 하나만으로 색감·스타일·레이아웃·분위기를 반영해야 한다. 텍스트 검색이 "무엇에 관한 디자인인가"라면 이쪽은 "어떤 분위기와 어울리는가"에 가깝다.
  • 과제 3 image+text-to-image retrieval: 기준 이미지에서 스타일 조건을, 텍스트에서 의미 조건을 가져와 둘을 동시에 만족하는 "같은 결의 다른 요소"를 찾는다.
  • 데이터 정제 1: 텍스트-이미지는 관련성이 비교적 명확해 초기에는 벡터 간 cosine similarity에 임계치를 뒀지만, 과제마다 유사도 분포가 달라 하나의 임계치를 적용하기 어렵고 과제별로 조정해도 필터링 품질이 안정적이지 않았다.
  • 그래서 유사도라는 간접 신호 대신 유저 로그에서 수집한 쌍을 MLLM에 입력해 검색어와 실제로 관련이 있는지 직접 판단하게 하고 관련성 낮은 쌍을 제거했다.
  • 데이터 정제 2: 스타일 검색은 색감·분위기·레이아웃처럼 정답 경계가 흐려 필터 하나로는 부족해, 모델 기반 필터와 규칙 기반 필터를 함께 썼다.
  • 모델 기반 필터는 명백히 어긋난 스타일 쌍만 보수적으로 제거하고, 규칙 기반 필터는 같은 결과 그룹 안에서 유저가 많이 선택한 디자인을 Head, 거의 선택하지 않은 디자인을 Tail로 보고 Head 대비 Tail의 채택 비율이 일정 수준 이상 벌어지면 그 Tail 쌍을 학습 데이터에서 제거했다.
  • 즉 모델 필터는 시각적으로 맞지 않는 쌍을, 규칙 필터는 실제 사용자에게 외면받은 스타일을 걸러낸다.
  • 모델 후보: Jina-embedding-v4와 VLM2Vec 계열을 함께 검토한 끝에 Qwen3-VL-Embedding을 선택했다.
  • 비율이 정보인 이유: 가로형 배너와 정사각형 카드, 세로형 포스터는 같은 이미지를 다른 크기로 보여주는 것이 아니라 서로 다른 사용 맥락과 레이아웃 구조를 갖는 디자인이다.
  • NDR의 이점: Qwen2-VL에서 도입된 방식을 이어받아 이미지를 고정 크기로 강제하지 않고 원본 비율에 따라 가변적인 수의 토큰으로 인코딩한다. 템플릿·요소·사진처럼 형태가 다른 대상을 하나의 모델에서 다뤄야 하는 상황에 맞았다.
  • 또 하나의 선택 근거는 Qwen3-VL 파운데이션 모델이 텍스트와 이미지를 각각 따로 처리하는 것이 아니라 두 입력을 함께 이해하고 비교하는 표현을 만드는 데 초점이 맞춰져 있다는 점이었다.
  • LoRA를 고른 이유: 전체 파라미터를 업데이트하는 FFT는 도메인에 깊게 적응하지만 학습 비용과 튜닝 부담이 크다. 9개 검색 과제에 걸친 대규모 유저 채택 로그를 다뤄야 해 무거운 학습을 반복하기보다 빠르게 실험하고 안정적으로 적용할 방식이 필요했다.
  • 롱테일 고려: 채택 로그가 많은 대표 쿼리뿐 아니라 로그가 적은 롱테일 쿼리도 안정적으로 처리해야 하는데 이 구간에서는 사전학습 모델의 일반적인 시각·언어 지식이 중요하다. LoRA는 원본 가중치를 고정한 채 일부 저차원 행렬만 학습해 기존 지식을 크게 훼손하지 않는다.
  • 손실 함수 1 NCE Loss: 쿼리와 관련 있는 positive 쌍은 가깝게, 관련 없는 negative 쌍은 멀어지게 학습하는 대조 학습이며 negative는 주로 같은 배치 안의 다른 샘플을 활용했다.
  • 손실 함수 2 Ranking Loss: 검색에서는 정답을 찾는 것만큼 더 적합한 결과를 상위에 노출하는 것이 중요하므로 positive 쌍들 사이의 상대적 순서를 학습해 상위 랭킹 품질을 높인다.
  • 손실 함수 3 Spread-out Loss: 학습 중 임베딩이 좁은 영역에 몰리면 서로 다른 대상 간 변별력이 떨어지므로, 단위 초구면 위에 고르게 분포하도록 유도해 공간을 넓게 쓰고 구분도를 높인다.
  • 정리하면 NCE는 관련성 구분을, Ranking은 결과 간 순서를, Spread-out은 임베딩 공간의 안정성을 담당한다.
  • 다음 편에서는 이 구조가 9개 검색 태스크에서 실제로 효과를 냈는지 태스크별 학습 결과와 그 과정에서 마주한 문제, 해결 시도를 다룬다고 예고한다.
왜 읽나멀티모달 검색을 태스크별 모델로 운영하다 통합을 고민하는 ML 엔지니어에게 모델 선택 기준, 유저 로그 기반 데이터 정제 방법, 손실 함수 조합의 역할 분담을 정리해 준다.
미리디
미리디 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·stackoverflow-blogStack Overflow Blog·

    에이전틱 SDLC를 QA 엔지니어링 마인드셋으로 구축하기

    Motorola Solutions의 테스트 엔지니어링 선임 매니저 Suneet Malhotra가 Stack Overflow 팟캐스트에 출연해 MCP(Model Context Protocol) 기반 에이전틱 SDLC 파이프라인 구축과 LLM-as-judge 평가 방법론을 소개했다. QA 엔지니어링 관점을 소프트웨어 개발 생애 전반에 적용하고, 설계 단계 직후 스펙을 강화해 결함 비용을 줄이는 'QA shift-left' 접근을 다룬다.

    요약 이어보기
    #llm-agent#mcp#test-automation+2
  2. AI / ML·LINE EngineeringLINE Engineering·

    보안 업무를 위한 AI 에이전트 플랫폼 「SAGE」 개발기 1편: 판단은 사람에게 남기는 설계

    LY Corporation Security Development Division이 보안 업무용 AI 에이전트 플랫폼 SAGE의 개발 과정을 공개했다. "완전 자동화"와 "도입 미루기" 양 극단 사이에서 "판단은 사람에게 남기는 설계"를 핵심 원칙으로 삼고, 3단계 점진적 도입 전략(AI 보조→에이전트 협업→자동화)을 채택했다. 현재는 1단계를 중심으로 파일럿·실운영 중이다.

    요약 이어보기
    #llm-app#opensearch#mcp+2