검색 결과 '0건'을 없애기 위한 오늘의집의 다국어 Retrieval 시스템

썸네일

이커머스에서 검색 결과가 0건인 화면만큼 잔인한 게 있을까요? 사용자는 즉시 불만을 느끼고, 이탈하고, 장기적으로는 매출까지 깎여나가요. 오늘의집 검색팀은 이 문제를 줄이기 위해 연관검색어, 광고 기반 대체 제안, 검색 의도 분석 등 다양한 방법을 시도해왔지만, 근본적인 해결을 위해 다국어 Retrieval 시스템을 새로 설계했어요.

오늘의집은 국내를 넘어 일본, 미국까지 글로벌 앱을 서비스하고 있어요. 한국어, 영어, 일본어를 동시에 잘 이해하는 모델이 필요했죠. CLIP 기반 모델을 먼저 검토했지만 한국어 학습량 부족과 텍스트 인코더의 컨텍스트 길이 제한이 걸림돌이었어요.

BGE-M3 모델을 Fine-Tuning해서 다국어 검색 정확도를 끌어올렸다

전략은 명확했어요. 텍스트에 대한 깊은 Semantic Proximity를 먼저 확보하고, 이후 이미지 영역으로 확장하는 거죠. BGE-M3 모델은 Dense, Sparse, ColBERT 학습을 동시에 수행하는 구조인데, XLM-RoBERTa를 백본으로 사용해서 한국어, 영어, 일본어 이해 능력이 뛰어나요.

검색팀은 유저 인터랙션 데이터를 기반으로 Fine-Tuning을 수행했어요. Matryoshka Representation Learning을 적용한 결과, 128차원에서도 1024차원 대비 성능 저하가 거의 없었죠. 100만 개의 Float32 벡터 기준 약 512MB 수준으로 인덱스 크기를 줄여서 색인 속도와 활용성을 크게 개선했어요.

벡터가 한쪽으로 쏠리는 문제까지 해결했다

EmbeddingGemma의 Spread-Out Regularizer를 참고해서 BGE-M3의 Loss를 발전시킨 부분도 주목할 만해요. 벡터들이 특정 방향으로 몰리지 않고 전체 임베딩 공간에서 균형 있게 분산되도록 유도하는 방식이에요. 쿼리 추론 서버는 Text Embeddings Inference로 배포해서 평균 4~6ms의 응답 속도를 보장하고 있어요.

검색 결과 0건이라는 건 사용자에게 "여기엔 당신이 원하는 게 없어요"라고 말하는 것과 같아요. 기술적으로는 임베딩 차원을 줄이고 다국어 모델을 Fine-Tuning하는 이야기지만, 비즈니스 관점에서는 사용자가 떠나지 않게 만드는 마지막 방어선을 구축한 셈이죠.