임베딩 검색, 어떤 모델·검색 방식이 빠르고 정확한가?
요약: 시맨틱 검색의 속도·품질은 어떤 임베딩 모델을 쓰느냐만큼 어떤 검색 방식을 쓰느냐가 가르며, 밀집(bi-encoder)은 문서당 벡터 1개로 가장 빠르고, ColBERT(late interaction)는 토큰 단위라 더 정확하지만 인덱스가 크며, 교차인코더 리랭커는 가장 정확하지만 느려 상위 20~200개에만 쓴다. 모델로는 Qwen3-Embedding 8B가 MTEB 다국어 70.58로 선두급이고, 0.6B는 약 639MB로 노트북 CPU에서도 돈다. 한 줄 요약: 임베딩 모델은 정확도를, 검색 방식(밀집·ColBERT·리랭커)은 속도-정확도 균형을 정한다.
시맨틱 검색의 속도·품질은 어떤 임베딩 모델을 쓰느냐만큼 어떤 검색 방식을 쓰느냐가 가르며, 밀집(bi-encoder)은 문서당 벡터 1개로 가장 빠르고, ColBERT(late interaction)는 토큰 단위라 더 정확하지만 인덱스가 크며, 교차인코더 리랭커는 가장 정확하지만 느려 상위 20~200개에만 쓴다. 모델로는 Qwen3-Embedding 8B가 MTEB 다국어 70.58로 선두급이고, 0.6B는 약 639MB로 노트북 CPU에서도 돈다.
한 줄 요약: 임베딩 모델은 정확도를, 검색 방식(밀집·ColBERT·리랭커)은 속도-정확도 균형을 정한다. 밀집으로 빠르게 추리고 리랭커로 다시 정렬하는 2단계가 거의 항상 이득이다.
쉽게 말하면: 임베딩은 문장을 좌표로 바꾸는 자다. 가까운 좌표가 비슷한 의미다. 그 자를 얼마나 정밀하게, 얼마나 빨리 대느냐가 검색 품질을 정한다.
검색 방식은 무엇이 다른가?#
같은 임베딩이라도 매칭 방식에 따라 정확도와 비용이 갈린다. 밀집 bi-encoder는 질의와 문서를 각각 한 벡터로 줄여 코사인 유사도로 빠르게 찾고, 인덱스가 작다. ColBERT는 토큰마다 벡터를 남겨 질의 토큰이 가장 잘 맞는 문서 토큰에 '투표'(sum-of-max)해, 교차인코더에 근접한 정확도를 내면서도 문서를 미리 인덱싱해 둔다. 교차인코더 리랭커는 질의+문서를 함께 넣어 가장 정확하지만 매 쌍을 다시 계산해 느리다. 즉 밀집은 "미리 좌표만 저장", ColBERT는 "토큰 좌표를 다 저장", 리랭커는 "질문이 올 때마다 처음부터 다시 읽기"에 가깝다.
| 방식 | 표현 | 정확도 | 속도·비용 |
|---|---|---|---|
| Bi-encoder(밀집) | 문서당 벡터 1개 | 기준(빠른 1차) | 가장 빠름·인덱스 작음 |
| ColBERT(late interaction) | 토큰당 벡터 | 높음(교차인코더 근접) | 중간·인덱스 큼(토큰별 저장) |
| Cross-encoder(리랭커) | 질의+문서 동시 인코딩 | 최고 | 느림·상위 20~200개만 |
| 하이브리드(BM25+밀집) | 키워드+의미 결합 | 정확매칭 보완 | 1차에 BM25 추가 |
어떤 모델을 골라야 하나?#
용량과 품질로 고른다. Qwen3-Embedding은 0.6B·4B·8B로 나오고 모두 Apache-2.0다. 8B는 MTEB 다국어 70.58로 2025년 6월 기준 1위에 올랐고(독점 Gemini-Embedding을 앞섬), 0.6B는 약 639MB(4비트)로 CPU 노트북에서도 돌면서 BGE-M3의 1/10 크기로 경쟁력을 낸다. gte-Qwen2-7B는 MTEB 영어 70.24(검색 60.25), 1.5B는 67.16이다. 차원도 변수다 — Matryoshka(마트료시카) 학습 모델은 한 모델로 여러 출력 차원(예: 64~768)을 골라, 정확도를 조금 내주고 인덱스를 문서당 25KB까지 줄인다. 쉽게 말하면 큰 벡터의 앞부분만 잘라 써도 의미가 유지되도록 학습해, 저장·속도가 급할 때 차원만 줄이면 되는 것이다.
리랭커는 왜 거의 항상 이득인가?#
2단계가 1단계를 이기기 때문이다. 밀집 검색으로 상위 100개를 뽑고 교차인코더 리랭커로 다시 정렬하면 recall이 또렷이 오른다. 실제로 Qwen3-Reranker 계열은 임베딩 단독보다 모든 과제에서 성능을 높였다. 비용은 상위 후보에만 리랭커를 적용해 억제한다 — 전체 문서가 아니라 100개만 다시 계산하므로 느린 모델을 써도 감당된다. 지연도 감당 가능하다: 한 ModernBERT+ColBERTv2 파이프라인은 질의 인코딩 31.4ms + 리랭킹 26.3ms로 쿼리당 57.7ms, 대화형에 충분한 100ms 미만을 보고했다.
직접 측정하려면?#
내 데이터로 재라. MTEB는 출발점일 뿐 내 도메인을 대변하지 않는다.
- 같은 질문 묶음으로 모델별 recall@k와 임베딩 처리량(초당 문장)을 잰다.
- 밀집 단독 vs 밀집+리랭커 vs 하이브리드(BM25+밀집)를 같은 데이터에서 비교한다.
- 저장비가 문제면 Matryoshka로 차원을 줄여 정확도-인덱스 크기 곡선을 그린다.
참고 링크
참고: MTEB·지연 수치는 2025~2026년 공개 측정치이며 데이터·차원·하드웨어에 따라 달라진다(MTEB는 내 도메인과 다를 수 있음). 정확한 값은 본문 방법으로 내 데이터에 직접 측정하라. 모델·리더보드는 자주 바뀌니 분기별 갱신.
Responses
No responses yet. Be the first to respond.