coredot.today
기술 탐색으로 돌아가기
임베딩안정

Qwen3-Embedding

LLM을 임베딩용으로 다시 학습한 0.6B·4B·8B 시리즈 — 지시문을 읽고 차원을 잘라 쓰는 다국어 검색의 기준선

직접 해보기 5실측빠른 시작
종류
모델
라이선스
Apache-2.0
언어
Python
사실 확인
2026.10.24
pip install -U sentence-transformers

TRY IT

직접 해보기

OVERVIEW

개요

무엇인가

Qwen3-Embedding은 알리바바 Qwen 팀이 2025년 6월 공개한 텍스트 임베딩·재랭킹 모델 시리즈입니다. 임베딩과 재랭커가 각각 0.6B·4B·8B 세 크기이고, 입력은 32K 토큰, 언어는 100개 이상(프로그래밍 언어 포함)입니다. 8B는 공개 당시 MTEB 다국어 리더보드 1위(70.58)였습니다. 4B는 69.45, 0.6B는 64.33입니다.

뼈대가 BERT 계열 인코더가 아니라 LLM(Qwen3) 입니다. 글을 쓰던 디코더를 임베딩용으로 다시 학습하고 마지막 토큰의 은닉 상태를 벡터로 씁니다. 크고 느리지만 질문의 뜻을 가장 잘 읽는 계열이고, 코어닷투데이의 2026년 RAG 스택 정리에서는 "하이브리드 기본 경로의 표준 부품"으로 분류했습니다.

어떻게 동작하나

1. 학습
대규모 비지도 사전학습 → 지도 미세조정 → 모델 병합. 학습 데이터의 상당 부분을 Qwen3 LLM이 합성했다.
2. 지시문 인식
질의 앞에 Instruct: {과제} \n Query: {질의}를 붙이면 과제에 맞게 벡터가 바뀐다. 문서에는 붙이지 않는다. 모델 카드는 대부분의 과제에서 1~5% 개선, 다국어에서도 지시문은 영어로 쓰라고 권한다.
3. 마트료시카(MRL)
기본 차원은 0.6B 1,024 · 4B 2,560 · 8B 4,096이고, 앞에서부터 잘라 더 작은 차원으로 쓸 수 있다.
4. 재랭커와 2단
임베딩으로 후보를 뽑고 같은 시리즈의 Qwen3-Reranker로 다시 고른다. 기본 경로는 0.6B 재랭커, 어려운 질의만 4B.

빠른 시작

모델 카드의 sentence-transformers 예시입니다(transformers 4.51.0 이상 필요). 질의에만 내장 프롬프트 query를 붙입니다.

python
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("Qwen/Qwen3-Embedding-0.6B")
queries = ["울산 청년 일자리 사업"]
documents = ["지역주도형 청년취업 지원사업 추진", "청년창업 지원사업 공고"]

q = model.encode(queries, prompt_name="query")  # 질의에만 지시문
d = model.encode(documents)                     # 문서는 그대로
print(model.similarity(q, d))

로컬에서는 ollama pull qwen3-embedding:4b(0.6b·8b 태그도 있음)로 받고 /api/embed에 dimensions를 주면 서버가 앞쪽 차원을 잘라 재정규화합니다. 코어닷투데이 실측에서 이 값은 저장해 둔 전체 벡터를 로컬에서 자른 값과 소수점 넷째 자리까지 같았습니다.

코어닷투데이 실측

맥 한 대(M1 Ultra 128GB)의 Ollama에서 코어닷투데이 블로그·뉴스의 제목 + 요약을 코퍼스로, 사람이 일부러 다른 말로 쓴 질문 22개, 로컬 LLM이 바꿔 쓴 질문 45개, 키워드 질문 18개로 두 번 쟀습니다(10월 1일 문서 589건 다섯 모델, 10월 11일 문서 660건 아홉 모델). Qwen3 세 모델은 Q4_K_M 양자화본입니다.

10월 11일 · 660건 · 85문항Qwen3-8BQwen3-4BQwen3-0.6B
nDCG@10 (최선 설정)0.8790.8500.785
지시문 효과+0.013+0.008−0.010 (없는 쪽이 낫다)
문서 처리량 · 질의 1건3.9건/초 · 115ms6.5건/초 · 84ms31.4건/초 · 27ms
기본 차원4,0962,5601,024
  • 8B와 4B의 차이는 "1등에 올리는 힘"이다. 어휘가 어긋난 67문항(589건 실험)에서 nDCG@10 0.860 대 0.815, Recall@5 0.923 대 0.878이었지만 Recall@10은 0.953 대 0.930으로 거의 같았다. 상위 20개를 재랭커로 다시 고르는 구조라면 4B로 충분하다.
  • 4B는 차원을 10분의 1로 잘라도 버틴다. 2,560 → 256에서 0.850 → 0.833, 1,024·512는 사실상 손실이 없었다. 128에서는 0.755로 떨어졌다.
  • 지시문은 데이터로 A/B한다. 사람이 쓴 22문항만 보면 8B는 지시문이 없는 쪽(0.829)이 있는 쪽(0.790)보다 높았다. 평균을 올린 것은 LLM이 바꿔 쓴 45문항이었고, 그 질문을 만든 LLM도 Qwen 계열이라 유리한 편향이 있을 수 있다.
  • Qwen 토크나이저는 한국어를 27% 더 잘게 쪼갠다. 같은 문서를 XLM-R 계열(BGE-M3)이 75,348토큰, Qwen3가 95,501토큰으로 봤다. 32K 창은 한국어로는 겉보기만큼 넓지 않다.
  • 308M짜리 EmbeddingGemma 1세대가 접두어를 지키자 0.852로 4B와 같은 점수를 냈다. 크기는 점수를 약속하지 않는다.

언제 쓰고, 언제 피하나

  • 잘 맞는다: 다국어·영한 혼용 코퍼스의 기본 Dense 검색(GPU가 있으면 4B, CPU면 0.6B), 리랭커까지 한 시리즈로 맞추고 싶을 때, 저장 예산에 맞춰 차원을 고르고 싶을 때.
  • 다른 방법을 먼저 본다: 한국어 긴 문서·실무 문서 검색은 KURE-v2(late interaction)가 MTEB 한국어 9과제 평균에서 8B(0.7826)보다 높았다(0.8160) — 다만 다중 홉 추론·보건·법령 과제에서는 8B가 이겼다. 매일 수만 건이 새로 들어오는 코퍼스라면 8B의 색인 처리량이 운영 비용이 된다(실측 처리량이면 100만 건에 약 사흘, 300M급 모델은 약 5시간). 키워드 질의가 대부분이면 크기는 무의미하다(키워드 18문항은 모두 만점).

한계와 주의

  • 모델 하나로 검색을 끝내지 않는다. 어려운 67문항에서 8B도 4개를 완전히 놓쳤고, BM25가 이긴 질문이 셋 있었고, "청년취업"과 "청년창업"을 헷갈렸다. BM25 + RRF + 재랭커와 함께 쓴다.
  • 문서와 질의의 설정을 섞지 않는다. 문서는 지시문 없이, 질의만 지시문 — 색인과 질의의 규칙이 달라지면 점수가 조용히 무너진다.
  • 실측의 범위. 코퍼스가 작고(589~660건, 평균 242~273자) 양자화본이다. 공개 순위(8B → 4B → 0.6B)는 지켜졌지만 0.6B는 공개 3위에서 실측 7위였다.
  • GitHub 저장소에는 LICENSE 파일이 없고, Hugging Face 모델 카드가 Apache-2.0을 표기한다(2026-10 확인). 지원 언어는 모델 카드 기준 "100개 이상"이다.

DEEP DIVE

더 깊이 읽기