MinishLab/model2vec
Fast State-of-the-Art Static Embeddings
Model2Vec – 빠르고 작은 정적 임베딩 모델
무엇인가요 – Model2Vec는 어떤 문장 변환기 (전체 문장에 대해 벡터를 생성하는 신경망 모델)를 정적 임베딩 모델로 변환하는 파이썬 라이브러리입니다. 정적 모델은 각 토큰(워드피스/서브워드)에 대해 고정된 벡터를 저장하므로, 매우 작고(8~30MB), 매우 빠르며(CPU에서 최대 500배 빠름)도 불구하고 표준 벤치마크 세트에서 최첨단 품질을 유지할 수 있습니다.
주요 기능 (README에 설명됨)
| 기능 | 당신에게 의미하는 바 |
|---|---|
| 크기 축소 | 원래 문장 변환기보다 최대 50배 작아집니다 (예: 32M 파라미터 모델이 디스크상 약 30MB로 축소됨). |
| 속도 | 모델이 전체 트랜스포머를 실행하는 대신 토큰 벡터를 검색하기만 하므로 CPU에서 추론이 수백 배 빨라집니다. |
| 제로 데이터 증류 | 학습 코퍼스가 필요 없이 CPU에서 약 30초 내에 기존 문장 변환기에서 Model2Vec 모델을 생성할 수 있습니다. |
| 분류용 미세 조정 | 증류 후, 정적 벡터 위에 가벼운 분류기를 추가로 훈련시켜 맞춤 작업에 사용할 수 있습니다. |
| 경량 종속성 | 핵심 패키지는 numpy만 의존하며, 선택적 확장으로 증류(model2vec[distill]) 및 훈련(model2vec[train])이 가능합니다. |
| 통합 | 인기 있는 생태계인 Sentence-Transformers 및 LangChain과 즉시 사용 가능하며, 모델은 Hugging Face 허브에 호스팅되어 from_pretrained로 쉽게 로드할 수 있습니다. |
| 오픈소스 및 MIT 라이선스 | 상용 프로젝트에 자유롭게 사용, 수정, 내장 가능합니다. |
일반적인 사용 사례
- 검색 / RAG – 유사성 검색 인덱스 구축을 위한 빠른 토큰 수준 임베딩.
- 텍스트 분류 – 정적 벡터 위에 가벼운 분류기 훈련.
- 클러스터링 / 시각화 – 대규모 코퍼스의 임베딩을 저비용으로 계산.
- 저자원 배포 – 메모리/CPU가 제한된 엣지 장치나 서버에 임베딩 가능.
빠른 시작 (README에서)
# 핵심 라이브러리 설치 (numpy만 필요)
pip install model2vec
from model2vec import StaticModel
# Hugging Face에서 사전 증류된 모델 로드
model = StaticModel.from_pretrained("minishlab/potion-base-32M")
# 문장 임베딩 얻기
emb = model.encode(["It's dangerous to go alone!", "It's a secret to everybody."])
# 또는 토큰 수준 임베딩 얻기
token_emb = model.encode_as_sequence(["It's dangerous to go alone!"])
자신만의 모델 증류 (옵션, distill 확장 필요):
pip install model2vec[distill]
from model2vec.distill import distill
m2v = distill(model_name="BAAI/bge-base-en-v1.5") # CPU에서 약 30초
m2v.save_pretrained("my_m2v_model")
분류용 미세 조정 (옵션, train 확장 필요):
pip install model2vec[train]
from model2vec.train import StaticModelForClassification
from datasets import load_dataset
clf = StaticModelForClassification.from_pretrained("minishlab/potion-base-32M")
ds = load_dataset("setfit/subj")
clf.fit(ds["train"]["text"], ds["train"]["label"])
report = clf.evaluate(ds["test"]["text"], ds["test"]["label"])
모델 카탈로그 (요약)
| 모델 | 언어 | 기반 문장 변환기 | 파라미터 수 | 일반적인 작업 |
|---|---|---|---|---|
potion-base-32M |
영어 | bge-base-en-v1.5 |
32M | 일반 목적 |
potion-multilingual-128M |
다국어 | bge-m3 |
128M | 일반 목적 |
potion-retrieval-32M |
영어 | bge-base-en-v1.5 |
32M | 검색 |
potion-base-8M |
영어 | bge-base-en-v1.5 |
7.5M | 일반 목적 (가장 작음) |
potion-code-16M-v2 |
코드 | CodeRankEmbed |
16M | 코드 임베딩 |
모든 모델은 Hugging Face 허브에 호스팅되어 있으며, StaticModel.from_pretrained로 로드 가능합니다. |
문서 및 커뮤니티
- 완전한 문서 – https://minish.ai/packages/model2vec/introduction
- 추론, 증류, 훈련, 통합 – 문서 내 별도 섹션 제공.
- Discord 커뮤니티 – https://discord.gg/4BDPR5nmtK
- 커버리지 – CI 배지로 Codecov를 통한 테스트 커버리지 표시; 다운로드 수는 pepy.tech에서 확인 가능.
라이선스 및 인용
- 라이선스 – MIT (허용성 높음, 상용 친화적).
- 인용 – 학술용으로 제공된 BibTeX 항목.
요약
Model2Vec는 고전적인 정적 임베딩(GloVe 등)의 속도와 크기의 이점을 유지하면서도, 최신 트랜스포머 기반 문장 인코더의 품질을 그대로 유지합니다. 검색 증강 생성, 디바이스 내 NLP, 대규모 인덱싱 시나리오 등에서 빠르고 메모리가 적은 텍스트 표현이 필요한 모든 사람에게 실용적인 도구입니다.
관련
- 프로젝트
- Dispatch
- Dispatch
- Dispatch
- Dispatch