Investment-Assistant

Sentence Transformers 활용하기 [14]

HeyTeddy 2024. 12. 13. 05:59
반응형

Sentence Transformers란?

Sentence Transformers(SBert)는 문장과 문서를 임베딩 벡터로 변환할 수 있는 라이브러리입니다. 이 라이브러리를 통해 문장 간의 의미적 유사성을 효과적으로 계산할 수 있습니다. SBert는 다양한 NLP 태스크에서 활용 가능하며, 사용자는 https://sbert.net/에서 자세한 정보를 확인할 수 있습니다.

주요 기능 및 활용

Sentence Transformers를 사용하면 다음과 같은 작업이 가능합니다:

  1. 문서 및 문장 임베딩 벡터로 변환
    텍스트 데이터를 고차원의 벡터 표현으로 변환해 의미적 비교 및 검색에 활용할 수 있습니다.
  2. 유사도 계산
    변환된 벡터를 활용해 문장 간 의미적 유사도를 측정할 수 있습니다.
  3. 온프레미스 환경에서 구현 가능
    클라우드 연결 없이 로컬 환경에서도 쉽게 사용할 수 있습니다.

SBert 실습 예제

# https://sbert.net/
from sentence_transformers import SentenceTransformer

# 1. Load a pretrained Sentence Transformer model
model = SentenceTransformer("all-MiniLM-L6-v2")

# The sentences to encode
sentences = [
    "The weather is lovely today.",
    "It's so sunny outside!",
    "He drove to the stadium.",
]

# 2. Calculate embeddings by calling model.encode()
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384], 문장 3개, 각각 문장이 숫자가 384개 있는 벡터로 변환

# 3. Calculate the embedding similarities
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6660, 0.1046],
#         [0.6660, 1.0000, 0.1411],
#         [0.1046, 0.1411, 1.0000]])
# 0번째 인덱스 값과 1번째 인덱스 값의 유사도는 0.666이라는 뜻
# "The weather is lovely today.", "It's so sunny outside!"의 유사도는 0.6660이라는 뜻

결론

Sentence Transformers(SBert)는 NLP 작업에서 효율적으로 문장을 임베딩하고 유사도를 계산하는 데 적합한 도구입니다. 특히, 온프레미스 환경에서 RAG 아키텍처를 구축하거나 텍스트 기반 애플리케이션을 개발하는 데 유용합니다.

반응형