검색 엔진을 거대한 도서관이라고 상상해 보세요. 사용자의 검색어 (질문) 를 사서가 대신 찾아주는 상황입니다.
기존 방식 (BM25/일반 검색): 사서가 책 제목에 딱 맞는 단어가 있는지 눈으로 하나하나 찾아봅니다. "사과"라고 검색하면 "사과"라는 글자가 있는 책만 찾습니다. 하지만 "사과"와 "애플"이 같은 뜻이라는 걸 모르면 놓치기 쉽죠.
새로운 방식 (SPLADE/LSR): 사서가 AI를 썼습니다. AI 는 "사과"라고 검색하면 "사과"뿐만 아니라 "과일", "빨간색", "맛있다" 같은 연관된 개념도 찾아냅니다. 하지만 문제는 너무 많은 단어를 동시에 찾아서 시간이 오래 걸린다는 점입니다.
🎯 이 연구가 해결한 문제: "단어 목록 (어휘) 의 크기"
이 연구는 **"사서가 사용하는 단어 목록 (어휘) 을 어떻게 구성하느냐에 따라 검색 속도와 정확도가 달라진다"**는 것을 발견했습니다.
연구팀은 세 가지 다른 사서 (모델) 를 만들어 비교했습니다.
1. 작은 단어 목록을 가진 전통적인 사서 (32K SPLADE)
상황: 사전에 있는 단어가 약 3 만 2 천 개입니다.
특징: 단어가 적어서 책장 (인덱스) 을 넘길 때 한 번에 많은 책을 볼 수 있습니다. 하지만 단어가 적으니 "사과"와 "애플"을 연결하는 데 한계가 있어, 정확한 답을 찾기 위해 더 많은 책을 뒤져야 할 수도 있습니다.
2. 큰 단어 목록을 가진 초보 사서 (100K Random)
상황: 사전에 단어가 10 만 개로 엄청나게 늘어났습니다. 하지만 이 사서는 아무것도 모르는 상태에서 시작했습니다 (무작위 초기화).
특징: 단어 목록이 넓으니 다양한 각도로 책을 찾을 수 있습니다. 하지만 처음부터 모든 단어를 잘 이해하지 못해서, 정확한 답을 찾기 위해 더 많은 책을 뒤져야 (비용 증가) 했습니다.
3. 큰 단어 목록을 가진 베테랑 사서 (100K ESPLADE)
상황: 단어 목록은 10 만 개로 넓지만, 이 사서는 **미리 수많은 책을 읽으며 훈련 (프리트레이닝)**을 받은 베테랑입니다.
특징: 단어 목록이 넓어서 다양한 각도로 접근할 수 있고, 미리 훈련을 받아 어떤 단어가 중요한지 잘 압니다.
🏆 실험 결과: "가위로 자르기 (Pruning)"의 중요성
검색 엔진은 너무 많은 책을 뒤지면 느려집니다. 그래서 중요하지 않은 단어는 잘라내고 (Pruning), 상위 몇 개 단어만 남기는 전략을 썼습니다.
결과 1: 가위로 잘랐을 때 (효율성 극대화)
작은 단어 목록 사서 (32K): 단어가 적어서 잘라내면 찾을 수 있는 책이 너무 적어져서 정확도가 뚝 떨어졌습니다.
초보 사서 (100K Random): 단어 목록이 넓어서 잘라내도 찾을 수 있는 책이 많지만, 훈련을 안 받아서 정확도가 여전히 낮았습니다.
베테랑 사서 (100K ESPLADE):최고의 성과! 단어 목록이 넓어서 잘라내도 중요한 책들을 잘 골라내고, 미리 훈련을 받아서 정확도도 높았습니다.
💡 핵심 교훈 (이 논문이 말하고자 하는 것)
단어 목록의 크기가 곧 '생각의 깊이'입니다: 기존에는 단어 목록을 단순히 '언어를 표현하는 도구'로만 봤습니다. 하지만 이 연구는 **"단어 목록의 크기가 모델이 세상을 얼마나 세밀하게 표현할 수 있는 능력 (표현력) 을 결정한다"**고 말합니다. 단어 목록이 넓을수록, 잘라내더라도 중요한 정보를 잃지 않고 효율적으로 찾을 수 있습니다.
미리 훈련 (Pretraining) 이 필수입니다: 단어 목록이 넓기만 해서는 안 됩니다. 그 넓은 목록을 미리 훈련시켜서 (ESPLADE) 어떤 단어가 중요한지 알고 있어야, 검색 비용은 줄이면서 정확도는 높일 수 있습니다.
검색을 위한 '새로운 언어'가 필요하다: 우리가 일상에서 쓰는 '사과'라는 단어와, 검색 엔진이 효율적으로 찾기 위해 만든 '사과'라는 코드는 다릅니다. 이 연구는 검색 엔진을 위해 **단순한 언어가 아니라, '검색과 효율성'에 최적화된 새로운 언어 (잠재적 어휘)**를 만들어내는 것이 중요하다고 제안합니다.
📝 한 줄 요약
"검색 엔진을 더 빠르고 정확하게 만들려면, 단어 목록을 넓게 만들고 (10 만 개), 미리 훈련시켜서 (ESPLADE) 불필요한 정보는 잘라내더라도 핵심을 놓치지 않게 해야 한다."
이 연구는 검색 엔진 개발자들에게 "단어 목록을 어떻게 구성하느냐가 검색의 성패를 좌우한다"는 새로운 통찰을 주었습니다.
1. 문제 정의 (Problem)
배경: 학습된 희소 검색 (Learned Sparse Retrieval, LSR) 인 SPLADE 와 같은 모델은 역색인 (inverted index) 의 효율성을 유지하면서 의미적 매칭을 수행할 수 있어 주목받고 있습니다.
현황 및 한계:
기존 SPLADE 모델은 BERT 의 Masked Language Modeling (MLM) 출력을 기반으로 학습되지만, 기본 Wordpiece 어휘 (약 32K) 를 사용합니다.
Wordpiece 는 자연어 단어보다 세분화되지 않은 (coarse-grained) 의미를 가지며, 이로 인해 활성화된 용어의 다양성이 낮고 역색인의 포스팅 리스트 (posting list) 가 길어질 수 있어 검색 비용 (FLOPS) 이 증가하는 문제가 발생합니다.
최근 ESPLADE (Expanded SPLADE) 와 같이 커스텀 어휘를 확장하는 연구가 있었으나, 어휘의 크기 (Size) 와 사전 학습 가중치 (Pretrained weights) 가 검색 효율성과 효과성에 미치는 구체적인 역할에 대한 체계적인 연구는 부족했습니다.
핵심 질문: 어휘의 크기와 초기화 방식 (사전 학습 vs 무작위) 이 희소 표현의 특성 (표현력) 과 검색 시스템의 효율성 (FLOPS) 및 효과성 (Ranking Performance) 에 어떻게 영향을 미치는가?
2. 방법론 (Methodology)
저자들은 BERT 기반의 다양한 어휘 크기와 초기화 방식을 가진 모델을 구축하고 실험했습니다.
모델 구성:
SPLADE-32K: 기존 32K 크기의 Wordpiece 어휘를 사용하는 일반 SPLADE 모델.
ESPLADE-100K: 100K 크기의 확장된 어휘를 사용하며, ESPLADE 사전 학습 방법 (확장된 MLM) 으로 초기화된 모델.
Rand-100K: 100K 크기의 확장된 어휘를 사용하지만, MLM 헤드를 무작위 (Randomly) 로 초기화한 모델.
데이터 및 학습:
네이버의 실제 검색 클릭 로그 (Query-Document 쌍) 를 사용하여 파인튜닝 수행.
손실 함수: 인-배치 네거티브 손실 (In-batch negative loss) 과 희소성 정규화를 위한 Joint FLOPS Loss를 결합하여 학습.
효율성 최적화 (Pruning):
학습된 희소 표현에서 **MLM 로짓 점수 (Logit Score)**를 기준으로 하위 점수의 용어를 제거하는 **정적 가지치기 (Static Pruning)**를 적용.
쿼리 (qk) 와 문서 (dk) 의 최대 활성화 용어 수를 제한하여 FLOPS(계산 비용) 를 BM25 수준 이하로 낮추는 시나리오를 설정.
평가 지표:
효율성: FLOPS (포스팅 리스트 탐색 비용 추정치).
효과성: MRR@10, Recall@10, Recall@100.
3. 주요 기여 및 발견 (Key Contributions & Findings)
3.1 어휘 크기의 역할: 표현 능력 (Representational Capacity)
발견: 단순히 어휘의 크기가 커지면 (32K → 100K), 모델이 더 다양한 용어 집합을 사용하여 문서를 표현할 수 있게 됩니다.
효과: 큰 어휘 크기는 역색인의 포스팅 리스트 길이를 줄여 FLOPS 를 획기적으로 낮추면서도 (BM25 수준 이하), 검색 효과성을 유지하거나 향상시킵니다.
해석: LSR 에서 어휘는 단순한 언어적 표현 도구를 넘어, 검색 엔진 내에서의 '표현 사양 (Representational Specification)'을 정의하는 차원으로 작용합니다. 큰 어휘는 더 많은 '점 (dots)'을 제공하여 결정 경계를 세밀하게 구성할 수 있게 합니다.
3.2 사전 학습 가중치의 중요성
발견: 100K 크기의 어휘를 가진 ESPLADE (사전 학습됨) 모델은 Rand-100K (무작위 초기화) 모델보다 일관되게 더 높은 검색 효과성을 보였습니다.
이유: 무작위 초기화 모델도 큰 어휘 크기 덕분에 32K 모델보다 나은 성능을 내지만, 사전 학습된 가중치는 문맥을 이해하는 초기 상태를 제공하여 더 정확한 희소 표현을 학습하고, 가지치기 (Pruning) 가 적용된 상황에서도 성능 저하를 최소화합니다.
3.3 가지치기 (Pruning) 와 성능의 상관관계
발견: FLOPS 를 BM25 수준 이하로 강하게 제한 (Pruning) 했을 때, 작은 어휘 (32K) 를 가진 모델은 성능이 급격히 떨어지는 반면, 큰 어휘 (100K) 를 가진 모델은 성능을 잘 유지했습니다.
해석: 큰 어휘는 가지치기로 인해 일부 용어가 제거되더라도, 남은 용어들이 여전히 높은 판별력 (Discriminative Power) 을 유지할 수 있도록 돕습니다. 즉, 어휘의 다양성이 가지치기 환경에서의 견고성 (Robustness) 을 보장합니다.
3.4 어휘의 의미 변화 (Lexical to Latent)
통찰: 랭킹 손실 (Ranking Loss) 과 FLOPS 정규화 손실은 어휘를 원래의 언어적 의미 (Lexical/Semantic) 에서 벗어나, **랭킹을 위한 잠재적 용어 (Latent Terms)**로 변환시킵니다.
의미: 사전 학습된 어휘뿐만 아니라 무작위 어휘조차도 이러한 손실 함수 하에서 효과적인 검색을 위한 '잠재 표현 공간'의 일부로 재구성됩니다. 이는 LSR 에서 어휘가 언어학적 의미를 넘어 검색 엔진 내 쿼리와 문서의 상호작용을 정의하는 구조적 요소임을 시사합니다.
4. 실험 결과 (Results)
FLOPS vs 성능: 가지치기를 적용하여 FLOPS 를 BM25 수준 (약 0.002x) 으로 낮췄을 때, ESPLADE-100K 모델은 SPLADE-32K보다 훨씬 높은 MRR 과 Recall 을 기록했습니다.
비교:
SPLADE-32K: 가지치기 시 성능이 크게 저하됨 (포스팅 리스트가 길어 제거 시 손실이 큼).
Rand-100K: 32K 모델보다 효율성과 효과성이 우수하지만, ESPLADE-100K 보다는 성능이 낮음.
ESPLADE-100K: 가장 높은 효율성 (낮은 FLOPS) 과 효과성 (높은 MRR/Recall) 을 동시에 달성.
통계: 100K 모델은 32K 모델에 비해 평균 포스팅 리스트 길이가 짧아져 (Table 3), 동일한 FLOPS 예산 내에서 더 많은 관련 문서를 탐색할 수 있음을 확인했습니다.
5. 의의 및 결론 (Significance & Conclusion)
새로운 관점: 이 논문은 LSR 에서 어휘의 역할을 단순한 '언어적 표현'이 아닌, **검색 엔진의 효율성과 효과성을 결정하는 '표현 사양 (Representational Specification)'**으로 재정의했습니다.
실용적 시사점:
어휘 크기 확장: 검색 효율성을 극대화하기 위해 어휘 크기를 확장 (100K 이상) 하는 것이 필수적이며, 이는 가지치기 (Pruning) 를 통한 비용 절감과 성능 유지의 균형을 맞출 수 있게 합니다.
사전 학습의 필요성: 확장된 어휘를 사용하더라도, 효과적인 검색을 위해서는 해당 어휘에 대한 **사전 학습 (Pretraining)**이 반드시 필요합니다.
시스템 설계: 대규모 검색 시스템에서 LSR 을 도입할 때, 역색인의 구조와 어휘 구성을 함께 최적화해야 하며, 단순한 언어적 의미보다는 랭킹 목적에 부합하는 잠재적 표현 공간 설계가 중요함을 강조합니다.
이 연구는 LSR 의 성능을 개선하기 위해 어휘의 크기와 초기화 전략을 체계적으로 설계해야 함을 입증하며, 향후 더 효율적이고 효과적인 검색 모델 개발을 위한 새로운 방향성을 제시합니다.