Study NoteBGE-M3 v5 표 1·3·부록 C.2와 mDPR·mContriever·E5 공식 model card·config 확인

BM25부터 E5-Mistral까지 BGE-M3의 비교 기준을 다시 읽었다

BGE-M3 논문에 등장하는 BM25·mDPR·mContriever·mE5-large·E5-Mistral-7B의 구조와 학습 조건, 입력 형식, tokenizer 통제와 benchmark 해석을 따로 정리했다.

M3-Embedding 논문의 baseline 문단을 읽다가 mDPR³, mContriever⁴, mE5large, E5mistral-7b에서 멈췄다.

처음에는 숫자와 저자명이 model version의 일부처럼 보였다. 원문과 각주, checkpoint config를 다시 확인하니 34는 Hugging Face 링크를 가리키는 각주 번호였고, Zhang et al., 2023, Wang et al., 2022는 인용 논문이었다.

이 글에서는 BGE-M3 자체보다 비교표에 들어간 baseline을 분리해 본다. 이름만 나열하면 모두 multilingual retrieval model처럼 보이지만, 실제로는 학습하지 않는 lexical 방식부터 7B decoder model까지 조건이 크게 다르다.

비교표에 들어간 방식부터 나눴다

lexical retrieval
└─ BM25

single-vector Dense retrieval
├─ mDPR
├─ mContriever
├─ multilingual-E5-large
└─ E5-Mistral-7B-Instruct

M3 retrieval functions
├─ Dense
├─ Sparse
├─ Multi-vector
└─ 세 방식의 결합

BM25는 exact term을 바탕으로 점수를 계산한다. 나머지 네 baseline은 query와 document를 각각 하나의 dense vector로 만든다. BGE-M3는 하나의 encoder에서 Dense, learned sparse, multi-vector 표현을 모두 만든다는 점이 다르다.

이 분류부터 해 두지 않으면 M3 Sparse를 BM25로 오해하거나, M3 All을 하나의 dense retriever와 같은 실행 경로로 비교하게 된다.

BM25는 학습하지 않는 lexical baseline이다

BM25는 query term이 document에 얼마나 등장하는지, 전체 corpus에서 얼마나 희귀한지, document가 얼마나 긴지를 반영한다.

  • term frequency가 늘어도 점수는 계속 선형으로 증가하지 않고 포화된다.
  • 여러 document에 흔한 term보다 희귀한 term에 큰 weight를 준다.
  • 긴 document가 단지 길다는 이유로 유리해지지 않도록 보정한다.

embedding model이 아니므로 neural inference가 필요 없다. 대신 tokenizer와 analyzer가 실제로 어떤 term을 만들었는지가 품질에 직접 영향을 준다.

BGE-M3 논문의 main table은 일반적인 Lucene analyzer가 아니라 M3와 같은 XLM-RoBERTa tokenizer를 BM25에 적용했다. 같은 tokenizer를 사용했다고 BM25가 Dense retrieval로 바뀌는 것은 아니다. text를 term으로 나누는 조건만 맞추고, 점수는 여전히 BM25 수식으로 계산한다.

mDPR은 mBERT 기반의 초기 Dense baseline이다

논문은 castorini/mdpr-tied-pft-msmarco를 사용했다.

확인한 config와 MIRACL의 설명을 합치면 다음 구조다.

  • mBERT 규모의 12-layer encoder
  • 768차원 single vector
  • 최대 512 token
  • query와 passage를 따로 encoding하는 bi-encoder
  • MS MARCO Passage로 pre-fine-tuning

checkpoint 이름도 학습 조건을 담고 있다.

tied
query encoder와 passage encoder가 weight를 공유

pft-msmarco
MS MARCO Passage로 pre-fine-tuning

BGE-M3 논문의 Zhang et al., 2023은 mDPR을 처음 제안한 논문이라는 뜻이 아니다. MIRACL에서 이 checkpoint를 baseline으로 사용한 구성을 가리킨다. mDPR은 MS MARCO로 학습한 뒤 MIRACL에서 zero-shot으로 평가됐다.

mContriever는 비지도 pre-training 뒤 MS MARCO를 학습했다

mContriever 공식 저장소는 29개 언어의 CCNet data로 contrastive pre-training한 multilingual retriever를 공개한다.

  • mBERT 기반 12-layer encoder
  • average pooling
  • 768차원 single vector
  • 최대 512 token

여기서 조심할 점은 실제 비교에 사용한 checkpoint다. 논문은 facebook/mcontriever-msmarco를 사용했다. 이름 그대로 multilingual contrastive pre-training 뒤 영어 MS MARCO로 fine-tuning한 model이다.

따라서 mContriever는 비지도 model이라고만 적으면 비교 조건을 잘못 요약하게 된다. pre-training에는 label이 없었지만 최종 checkpoint에는 supervised retrieval 학습이 들어갔다.

mE5-large는 XLM-R large 기반의 다국어 embedding model이다

논문의 mE5largeintfloat/multilingual-e5-large를 가리킨다.

  • XLM-RoBERTa-large 기반 24-layer encoder
  • 1,024차원 single vector
  • 최대 512 token
  • multilingual text pair의 weakly supervised contrastive pre-training
  • labeled retrieval data를 이용한 fine-tuning

E5 계열에서는 입력 prefix도 model 조건이다.

query: 사용자의 검색 질의
passage: 검색 대상 문서

공식 model card는 비대칭 retrieval에서 query:passage: prefix를 사용하도록 명시한다. prefix를 빼면 코드가 실패하는 것은 아니지만 학습 때 본 형식과 달라져 성능이 저하될 수 있다.

BGE-M3 논문의 Wang et al., 2022는 최초 E5 논문을 인용한다. multilingual E5의 학습 방법과 평가를 정리한 별도 기술 보고서는 2024년에 공개됐다.

E5-Mistral-7B는 이름만 같은 작은 변형이 아니다

intfloat/e5-mistral-7b-instruct는 XLM-R encoder가 아니라 Mistral-7B-v0.1을 embedding model로 바꾼 checkpoint다.

  • decoder-only Mistral backbone
  • 32 layers와 약 7B parameters
  • 마지막 유효 token을 pooling
  • 4,096차원 embedding
  • query에 task instruction 사용
  • document에는 instruction을 붙이지 않음

query 형식은 다음과 같다.

Instruct: Given a web search query, retrieve relevant passages that answer the query
Query: BM25와 Dense retrieval은 어떻게 다른가

BGE-M3 논문 표는 이 model의 최대 길이를 8,192로 기록했다. 현재 공식 model card의 예제와 limitation은 4,096 token을 사용하며 그보다 긴 입력을 권장하지 않는다. backbone config의 최대 position과 embedding checkpoint가 실제로 권장하는 길이를 같은 값으로 보면 안 된다.

다국어 data로 fine-tuning했지만 공식 model card는 multilingual use case에 multilingual-e5-large를 권장한다. Mistral-7B-v0.1의 pre-training이 영어 중심이기 때문이다. 7B라는 parameter 수만 보고 mE5-large보다 항상 강할 것이라고 예상할 수 없다.

BGE-M3 Dense와 한 표에 놓으면 차이가 보인다

방식backbone출력입력 길이query 형식
BM25없음sparse term scoreneural 제한 없음raw query
mDPRmBERT, 12 layers768512raw query
mContrievermBERT, 12 layers768512raw query
mE5-largeXLM-R large, 24 layers1,024512query: prefix
E5-Mistral-7BMistral-7B, 32 layers4,096논문 8,192·model card 권장 4,096task instruction
BGE-M3 DenseXLM-R large, 24 layers1,0248,192instruction 불필요

같은 multilingual retrieval 표에 있지만 model size, input length, pooling, query format, training data가 모두 다르다. 이 표는 같은 크기의 architecture를 통제한 비교가 아니다. 각 시기의 공개 multilingual baseline과 M3의 최종 품질을 함께 비교한 benchmark에 가깝다.

MIRACL 결과에서 model 크기와 순위가 일치하지 않았다

BGE-M3 논문이 보고한 MIRACL 개발셋 평균 nDCG@10은 다음과 같다.

방식nDCG@10
BM25, XLM-R tokenizer31.9
mDPR41.8
mContriever43.1
mE5-large66.6
E5-Mistral-7B63.4
M3 Sparse53.9
M3 Dense69.2
M3 Multi-vector70.5
M3 Dense + Sparse70.4
M3 All71.5

M3 Dense는 비교한 Dense baseline 중 가장 높았다. 그러나 mE5-large와 차이는 2.6점이었고, 7B인 E5-Mistral-7B는 0.6B 규모의 mE5-large보다 3.2점 낮았다.

이 결과만으로 M3가 모든 다국어 검색에서 가장 좋다고 말할 수는 없다.

  • M3의 multilingual fine-tuning data에는 MIRACL이 포함됐다.
  • model마다 query prefix와 instruction 조건이 다르다.
  • parameter와 최대 입력 길이가 통제되지 않았다.
  • M3 Multi-vectorM3 All에는 candidate reranking 경로가 포함된다.
  • MIRACL은 사내 문서가 아니라 다국어 Wikipedia passage retrieval이다.

nDCG@10 69.2는 정확도 69.2%라는 뜻도 아니다. query별 상위 10개 ranking quality를 정규화한 뒤 평균한 값이다.

같은 tokenizer를 쓴 이유와 빠진 조건을 나눴다

논문 저자들은 BM25와 M3의 비교 가능성을 높이기 위해 양쪽에 XLM-RoBERTa tokenizer를 사용했다고 설명한다. 같은 vocabulary를 사용하면 retrieval latency도 같은 조건에 가깝게 만들 수 있다고 적었다.

의도는 이해할 수 있다.

같은 text
→ 같은 XLM-R tokenizer
→ 같은 token ID 공간
   ├─ BM25는 tf·df·document length로 weight 계산
   └─ M3 Sparse는 neural encoder가 weight 학습

tokenizer 차이를 줄였기 때문에 term weighting 방식의 영향을 더 직접적으로 볼 수 있다. 그러나 이것이 실제 서비스의 end-to-end latency가 같다는 뜻은 아니다.

BM25
query tokenization + inverted index search

M3 Sparse
query tokenization + neural encoding + sparse index search

같은 vocabulary는 sparse index의 term 공간을 통제한다. M3 query encoder의 forward pass까지 없애 주지는 않는다. 실제 latency를 비교하려면 hardware, query encoding 포함 여부, cache 상태, top-k, p50과 p95를 따로 기록해야 한다.

Lucene analyzer를 사용하자 BM25 결과가 달라졌다

논문의 부록 C.2는 BM25 tokenizer를 바꿔 다시 평가했다.

방식tokenizerMIRACLMKQAMLDR
BM25XLM-R31.939.953.6
BM25Lucene analyzer38.540.964.1
M3 SparseXLM-R53.945.362.2
M3 AllXLM-R71.575.565.0

MIRACL과 MLDR은 nDCG@10, MKQA는 Recall@100이므로 서로 다른 dataset 열을 같은 척도로 합치면 안 된다.

MLDR에서는 Lucene analyzer BM25가 64.1로 M3 Sparse 62.2보다 높았다. main table의 XLM-R BM25만 보면 M3 Sparse가 8.6점 높지만 analyzer를 바꾸면 순서가 뒤집혔다.

따라서 두 BM25 baseline은 답하는 질문이 다르다.

BM25 + XLM-R tokenizer
M3 Sparse와 term 조건을 맞춘 통제 실험

BM25 + 언어별 analyzer
실제 서비스에서 달성 가능한 lexical baseline

새 learned sparse model을 평가할 때는 둘 다 필요하다. 통제용 baseline만 두면 운영 가능한 BM25를 과소평가할 수 있고, 언어별 analyzer만 두면 learned weight의 효과와 tokenizer 효과를 분리하기 어렵다.

실제 선택은 query 유형별로 다시 해야 한다

공개 benchmark를 읽고도 사내 검색에서 무엇을 선택할지는 남는다.

조건먼저 볼 후보이유
품번·에러 코드·고유명사exact field와 BM25표면형 자체가 relevance인 경우가 많다.
한국어 포함 다국어 의미 검색mE5-large와 BGE-M3 Densemultilingual encoder 기반의 강한 출발점이다.
긴 문서에서 exact term도 중요함analyzer BM25와 M3 Sparse긴 문서에서는 lexical signal이 Dense보다 강할 수 있다.
영어 중심이고 큰 GPU budget이 있음E5-Mistral-7Binstruction으로 retrieval task를 지정할 수 있다.
기존 multilingual baseline 재현mDPR와 mContrieverMIRACL과 과거 연구의 비교 기준을 맞출 수 있다.
Dense와 Sparse를 한 model에서 비교BGE-M3같은 backbone에서 세 retrieval function을 관찰할 수 있다.

내가 가져갈 결론은 특정 model 이름이 아니다.

checkpoint 이름, tokenizer, query format, training data, candidate budget을 적지 않은 benchmark 숫자는 운영 결정을 내리기에 부족하다.

다음 실험에서는 같은 query set으로 BM25, mE5-large, BGE-M3 Dense와 Sparse를 먼저 비교하고 각 방식만 찾은 정답을 기록할 생각이다. E5-Mistral-7B는 7B inference 비용이 실제 품질 증가로 이어지는지 별도 budget에서 확인해야 한다.

Reference

대화

댓글

0
댓글을 불러오는 중입니다.