Hugging Face에서 Sentence Transformers 사용하기

Hugging Face에서 Sentence Transformers 사용하기

sentence-transformers는 문장, 문단, 이미지에 대한 임베딩(밀집 벡터 표현)을 쉽게 계산할 수 있는 방법을 제공하는 라이브러리예요. 텍스트가 벡터 공간에 임베딩되어 비슷한 텍스트끼리 가깝게 위치하므로, 의미 검색(semantic search), 클러스터링, 검색(retrieval) 같은 활용이 가능해져요.

출처: 문서

본문

허브에서 sentence-transformers 탐색하기

모델 페이지 왼쪽의 필터를 사용하면 500개 이상의 sentence-transformers 모델을 찾을 수 있어요. 대부분의 모델은 다양한 태스크를 지원하는데, 예를 들어 feature-extraction으로 임베딩을 생성하거나 sentence-similarity를 통해 주어진 문장이 다른 문장과 얼마나 유사한지 알아볼 수 있어요. 공식 사전 학습 모델 개요는 공식 문서에서도 확인할 수 있어요.

허브의 모든 모델에는 다음과 같은 기능이 함께 제공됩니다.

  1. 설명, 예제 코드 스니펫, 아키텍처 개요 등을 담은 자동 생성 모델 카드
  2. 검색 가능성을 돕고 라이선스 같은 정보를 담는 메타데이터 태그
  3. 브라우저에서 바로 모델을 시험해 볼 수 있는 인터랙티브 위젯
  4. 추론 요청을 보낼 수 있는 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 페이지에서 둘러볼 수 있어요.