임베딩 생성
이 섹션에서는 텍스트 임베딩을 생성하는 데 사용할 수 있는 가장 편리한 옵션 중 하나인 SentenceTransformers 프레임워크를 기반으로 하는 옵션에 대해 알아볼 것입니다.
이 프레임워크에서 사용할 수 있는 모델은 컴퓨터에 설치할 수 있고, GPU 없이도 상당히 잘 작동하며, 무료로 사용할 수 있으므로 임베딩 사용을 탐색하고 익숙해지는 동안 SentenceTransformers로 작업하는 것이 좋습니다.
센텐스 트랜스포머 설치
SentenceTransformers 프레임워크는 Python 패키지로 설치됩니다. Python 가상 환경이 활성화되어 있는지 확인한 다음 터미널에서 다음 명령을 실행하여 이 프레임워크를 설치합니다:
pip install sentence-transformers항상 그렇듯이 프로젝트에 새 종속 요소를 추가할 때마다 요구 사항 파일을 업데이트하는 것이 좋습니다:
pip freeze > requirements.txt모델 선택
다음 작업은 임베딩 생성에 사용할 머신러닝 모델을 결정하는 것입니다. 문서에 사전 학습된 모델 목록이 있습니다. SentenceTransformers는 매우 인기 있는 프레임워크이기 때문에 프레임워크와 직접 관련이 없는 연구자들이 만든 호환 모델도 있습니다. 사용할 수 있는 전체 모델 목록을 보려면 HuggingFace에서 SentenceTransformers 태그를 확인하면 됩니다.
이 튜토리얼의 목적상 어떤 모델이든 충분하므로 모델 선택에 대해 지나치게 고민할 필요가 없습니다. SentenceTransformers 문서에는 사전 학습된 모델과 관련하여 다음과 같은 참고 사항이 포함되어 있습니다:
"사용 가능한 모든 학습 데이터(10억 개 이상의 학습 쌍)로 학습된 모든* 모델이며 범용 모델로 설계되었습니다. 모든-mpnet-base-v2 모델은 최고의 품질을 제공하며, 모든-MiniLM-L6-v2는 5배 더 빠르면서도 여전히 좋은 품질을 제공합니다."
이는 all-MiniLM-L6-v2 모델이 속도와 품질 사이에서 좋은 타협점을 제공하는 좋은 선택이라고 생각되므로 이 모델을 사용하도록 하겠습니다. 표에서 이 모델을 찾아 "정보" 아이콘을 클릭하면 해당 모델에 대한 몇 가지 정보를 확인할 수 있습니다.

선택한 모델에 대해 알아두면 좋은 흥미로운 세부 사항은 생성된 임베딩의 길이, 즉 결과 벡터의 숫자 또는 치수가 얼마나 되는지입니다. 이는 필요한 저장 용량에 직접적인 영향을 미치기 때문에 중요합니다. all-MiniLM-L6-v2 의 경우 생성된 벡터의 치수는 384개입니다.
모델 로드
다음 Python 코드는 모델이 로드되는 방법을 보여줍니다. Python 셸에서 시도해 볼 수 있습니다.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')이 작업을 처음 수행하면 가상 환경에 모델이 다운로드되어 설치되므로 통화가 다시 연결되는 데 시간이 걸릴 수 있습니다. 모델이 설치되면 인스턴스화하는 데 오래 걸리지 않습니다.
임베딩 생성
모델이 인스턴스화되었으므로 이제 임베딩을 생성할 준비가 되었습니다. 이렇게 하려면 model.encode() 메서드에 소스 텍스트를 전달합니다:
embedding = model.encode('The quick brown fox jumps over the lazy dog')그 결과 임베딩을 구성하는 모든 숫자가 포함된 배열이 생성됩니다. 기억하시겠지만, 선택한 모델에서 생성된 임베딩의 치수는 384개이므로 embedding 배열의 길이가 됩니다.