BGE M3-Embedding이란

BGE M3-Embedding이란

설명
검색 엔진의 혁명 - BGE M3-Embedding으로 검색 정확도 높이기
Last Updated
Last updated December 10, 2024
태그
LLM
embedding

BGE M3-Embedding이란?

M3-Embedding은 텍스트 임베딩 모델로, 다국어를 지원하며 다양한 검색 기능과 입력 길이에 걸쳐 뛰어난 성능을 보입니다. 100개 이상의 언어를 다루며, Dense RetrievalSparse RetrievalMulti-Vector Retrieval 같은 복합적인 검색 기능을 동시에 수행할 수 있습니다. 또한 짧은 문장부터 최대 8,192 토큰에 달하는 긴 문서까지 처리할 수 있는 Multi-Granularity 특성을 가지고 있습니다.
 

M3-Embedding의 주요 특징

  1. 다국어 지원 (Multi-Lingual):
      • 100개 이상의 언어에 대한 검색을 지원
      • 다국어와 교차 언어 검색을 모두 수행가능
  1. 다중 기능성 (Multi-Functionality):
      • Dense, Sparse, Multi-Vector Retrieval을 한 모델 내에서 모두 수행할 수 있어 다양한 정보 검색(IR - Information Retrieval) 작업에 적합
      • 원래 다 각각 학습되고, 추후에 같이 hybrid 방식으로 사용했던 검색 방식을 다 사용할 수 있음.
      • 각각 검색방식은 background에서 자세히 설명
      • Self-knowledge distillation 방식으로 각 3가지 함수에서 나온 score를 통합해서 활용함
  1. 다중 입력 길이 (Multi-Granularity):
      • 최대 8192 토큰까지 늘림, 이를 위해 batching strategy를 최적화 함
      • 또한 문장, 문단 단위에서 모두 성능이 좋음
notion image
 

3.1 Data Curation - 학습에 사용한 데이터

  1. unlabeled corpora에서 추출한 unsupervised data
      • 시맨틱 구조에 기반하여 추출되었는데, title-body, title-abstract, intruction-output처럼 그 구조를 뜻에 맞게 정의하였다.
      • 데이터는 wikipedia나, news 데이터 등을 활용하였으며, 교차 언어 검색을 위해 번역 데이터셋도 활용하였다.
  1. labeled corpora에서 수집한 supervised용 fine-tuning 데이터
      • 적지만 다양하고 높은 품질의 데이터를 모았다. 영어 기준으로 HotpotQA ~ SimCSE 등이 있다.(데이터 테이블 참조)
  1. 합성/증강을 통한 증강 데이터.
      • 길이가 긴 문서 데이터가 되게 하기 위해 wiki나 MC4 같은 곳에서 긴 기사들을 샘플링 하였다.
      • 이때 질문은 GPT 3.5를 활용하여 생성 (Appendix에 Prompt가 수록됨)
notion image

기술적 혁신

M3-Embedding은 다음과 같은 기술을 통해 이와 같은 높은 수준의 유연성을 구현했습니다.
  • Self-Knowledge Distillation: 여러 검색 기능의 관련성을 통합하여 모델 훈련을 최적화하는 독특한 방식입니다.
  • Efficient Batching Strategy: 다양한 길이의 시퀀스를 처리할 수 있도록 배칭 전략을 최적화하여 대규모 배치 크기를 관리하고 훈련 효율성을 높였습니다.
  • 종합적인 데이터 큐레이션: 다국어 말뭉치에서 다양한 데이터를 수집하여 모델이 다국어 및 다기능성을 제대로 학습할 수 있도록 했습니다.
 

성능

M3-Embedding은 다국어(MIRACL) 및 교차 언어(MKQA) 검색 벤치마크에서 state-of-the-art 성능을 달성했습니다. Dense와 Sparse Retrieval 방식을 결합하여 긴 문서 검색에서도 기존 모델을 능가하는 성과를 보였습니다.
 

결론

M3-Embedding은 다국어, 다기능성, 다양한 길이의 입력을 지원하는 통합 임베딩 모델로, 연구자 및 실무자에게 유용한 고품질의 임베딩 솔루션을 제공합니다. 더 자세한 구현 정보와 코드는 GitHub의 FlagOpen/FlagEmbedding에서 확인할 수 있습니다.

 
 

참고자료