이 섹션에서는 텍스트 임베딩을 생성하는 데 사용할 수 있는 가장 편리한 옵션 중 하나인 SentenceTransformers 프레임워크를 기반으로 하는 옵션에 대해 알아볼 것입니다.

이 프레임워크에서 사용할 수 있는 모델은 컴퓨터에 설치할 수 있고, GPU 없이도 상당히 잘 작동하며, 무료로 사용할 수 있으므로 임베딩 사용을 탐색하고 익숙해지는 동안 SentenceTransformers로 작업하는 것이 좋습니다.

센텐스 트랜스포머 설치

SentenceTransformers 프레임워크는 Python 패키지로 설치됩니다. Python 가상 환경이 활성화되어 있는지 확인한 다음 터미널에서 다음 명령을 실행하여 이 프레임워크를 설치합니다:

항상 그렇듯이 프로젝트에 새 종속 요소를 추가할 때마다 요구 사항 파일을 업데이트하는 것이 좋습니다:

모델 선택

다음 작업은 임베딩 생성에 사용할 머신러닝 모델을 결정하는 것입니다. 문서에 사전 학습된 모델 목록이 있습니다. SentenceTransformers는 매우 인기 있는 프레임워크이기 때문에 프레임워크와 직접 관련이 없는 연구자들이 만든 호환 모델도 있습니다. 사용할 수 있는 전체 모델 목록을 보려면 HuggingFace에서 SentenceTransformers 태그를 확인하면 됩니다.

이 튜토리얼의 목적상 어떤 모델이든 충분하므로 모델 선택에 대해 지나치게 고민할 필요가 없습니다. SentenceTransformers 문서에는 사전 학습된 모델과 관련하여 다음과 같은 참고 사항이 포함되어 있습니다:

"사용 가능한 모든 학습 데이터(10억 개 이상의 학습 쌍)로 학습된 모든* 모델이며 범용 모델로 설계되었습니다. 모든-mpnet-base-v2 모델은 최고의 품질을 제공하며, 모든-MiniLM-L6-v2는 5배 더 빠르면서도 여전히 좋은 품질을 제공합니다."

이는 all-MiniLM-L6-v2 모델이 속도와 품질 사이에서 좋은 타협점을 제공하는 좋은 선택이라고 생각되므로 이 모델을 사용하도록 하겠습니다. 표에서 이 모델을 찾아 "정보" 아이콘을 클릭하면 해당 모델에 대한 몇 가지 정보를 확인할 수 있습니다.

선택한 모델에 대해 알아두면 좋은 흥미로운 세부 사항은 생성된 임베딩의 길이, 즉 결과 벡터의 숫자 또는 치수가 얼마나 되는지입니다. 이는 필요한 저장 용량에 직접적인 영향을 미치기 때문에 중요합니다. all-MiniLM-L6-v2 의 경우 생성된 벡터의 치수는 384개입니다.

모델 로드

다음 Python 코드는 모델이 로드되는 방법을 보여줍니다. Python 셸에서 시도해 볼 수 있습니다.

이 작업을 처음 수행하면 가상 환경에 모델이 다운로드되어 설치되므로 통화가 다시 연결되는 데 시간이 걸릴 수 있습니다. 모델이 설치되면 인스턴스화하는 데 오래 걸리지 않습니다.

임베딩 생성

모델이 인스턴스화되었으므로 이제 임베딩을 생성할 준비가 되었습니다. 이렇게 하려면 model.encode() 메서드에 소스 텍스트를 전달합니다:

그 결과 임베딩을 구성하는 모든 숫자가 포함된 배열이 생성됩니다. 기억하시겠지만, 선택한 모델에서 생성된 임베딩의 치수는 384개이므로 embedding 배열의 길이가 됩니다.

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요