Hugging Face에서 Sentence Transformers 사용하기
Hugging Face에서 Sentence Transformers 사용하기
sentence-transformers는 문장, 문단, 이미지에 대한 임베딩(밀집 벡터 표현)을 쉽게 계산할 수 있는 방법을 제공하는 라이브러리예요. 텍스트가 벡터 공간에 임베딩되어 비슷한 텍스트끼리 가깝게 위치하므로, 의미 검색(semantic search), 클러스터링, 검색(retrieval) 같은 활용이 가능해져요.
출처: 문서
본문
허브에서 sentence-transformers 탐색하기
모델 페이지 왼쪽의 필터를 사용하면 500개 이상의 sentence-transformers 모델을 찾을 수 있어요. 대부분의 모델은 다양한 태스크를 지원하는데, 예를 들어 feature-extraction으로 임베딩을 생성하거나 sentence-similarity를 통해 주어진 문장이 다른 문장과 얼마나 유사한지 알아볼 수 있어요. 공식 사전 학습 모델 개요는 공식 문서에서도 확인할 수 있어요.
허브의 모든 모델에는 다음과 같은 기능이 함께 제공됩니다.
- 설명, 예제 코드 스니펫, 아키텍처 개요 등을 담은 자동 생성 모델 카드
- 검색 가능성을 돕고 라이선스 같은 정보를 담는 메타데이터 태그
- 브라우저에서 바로 모델을 시험해 볼 수 있는 인터랙티브 위젯
- 추론 요청을 보낼 수 있는 Inference Providers 위젯
기존 모델 사용하기
허브의 사전 학습 모델은 한 줄의 코드로 로드할 수 있어요.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('model_name')
다음은 문장을 인코딩한 뒤 거리(distance)를 계산해 의미 검색을 수행하는 예제예요.
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('multi-qa-MiniLM-L6-cos-v1')
query_embedding = model.encode('How big is London')
passage_embedding = model.encode(['London has 9,787,426 inhabitants at the 2011 census',
'London is known for its financial district'])
print("Similarity:", util.dot_score(query_embedding, passage_embedding))
특정 모델을 어떻게 로드하는지 보고 싶다면 Use in sentence-transformers를 클릭하면 로드할 수 있는 동작하는 스니펫을 얻을 수 있어요!
모델 공유하기
학습된 모델의 save_to_hub 메서드를 사용하면 자신의 Sentence Transformers 모델을 공유할 수 있어요.
from sentence_transformers import SentenceTransformer
# Load or train a model
model.save_to_hub("my_new_model")
이 명령은 자동 생성된 모델 카드, 추론 위젯, 예제 코드 스니펫 등을 갖춘 저장소를 만들어 줘요. 여기에 예시가 있어요.
추가 자료
더 알아보기 (Learn more)
- sbert.net 공식 문서에서 임베딩과 학습에 대한 심화 내용을 배울 수 있어요.
- 허브에서 다른 라이브러리 모델도
models페이지에서 둘러볼 수 있어요.