데이터에 적합한 임베딩 모델 선택하기
임베딩 모델이란 무엇인가요?
임베딩 모델은 비정형 데이터(텍스트, 이미지, 오디오 등)를 벡터 임베딩(스파스, 고밀도, 이진 임베딩 등)이라고도 하는 고정 크기의 벡터로 변환하는 머신 러닝 모델입니다. 이러한 벡터는 비정형 데이터의 시맨틱 의미를 포착하여 유사도 검색, 자연어 처리(NLP), 컴퓨터 비전, 클러스터링, 분류 등과 같은 다양한 작업을 더 쉽게 수행할 수 있게 해줍니다.
임베딩 모델에는 단어 임베딩, 문장 임베딩, 이미지 임베딩, 멀티모달 임베딩 등 다양한 유형이 있습니다.
- 단어 임베딩: 단어를 [고밀도 벡터]로 표현합니다(https://zilliz.com/learn/sparse-and-dense-embeddings). 예시로는 Word2Vec, GloVe, FastText 등이 있습니다.
문장 임베딩: 전체 문장 또는 단락을 표현합니다. 유니버설 문장 인코더(USE) 및 Sentence-BERT 등이 그 예입니다.
이미지 임베딩: 이미지를 벡터로 표현합니다. ResNet과 CLIP 같은 모델이 그 예입니다.
- 멀티모달 임베딩: 다양한 데이터 유형(예: 텍스트와 이미지)을 하나의 임베딩 공간에 결합합니다. OpenAI의 CLIP이 대표적인 예입니다.
임베딩 모델 및 검색 증강 생성(RAG)
검색 증강 생성(RAG은 데이터를 사용하여 LLM 생성기 모델(예: ChatGPT)의 지식을 보강할 수 있는 생성 AI의 한 패턴입니다.) 이 접근 방식은 LLM의 성가신 환각 문제를 해결하기 위한 완벽한 솔루션입니다. 또한 도메인별 또는 개인 데이터를 활용하여 데이터 보안 문제에 대한 걱정 없이 GenAI 애플리케이션을 구축하는 데 도움이 될 수 있습니다.
RAG는 추론 모드에서 사용되는 임베딩 모델과 대규모 언어 모델(LLM)의 두 가지 모델로 구성됩니다. 이 블로그에서는 데이터 유형과 언어 또는 법률과 같은 전문 도메인에 따라 최적의 임베딩 모델을 선택하는 방법과 이를 찾을 수 있는 위치를 소개합니다.
데이터에 가장 적합한 임베딩 모델을 선택하는 방법
데이터에 적합한 임베딩 모델을 선택하려면 특정 사용 사례, 보유한 데이터의 유형, 애플리케이션의 성능 요구 사항을 이해해야 합니다.
텍스트 데이터: MTEB 리더보드
허깅페이스 MTEB 리더보드는 텍스트 임베딩 모델을 찾기 위한 원스톱 상점입니다! 각 임베딩 모델에 대한 전체 작업 평균 성능을 확인할 수 있습니다.
벡터 검색과 가장 관련성이 높은 작업인 '검색 평균' 열을 기준으로 내림차순 정렬하는 것이 좋습니다. 그런 다음 최고 등급의 가장 작은(GB 메모리) 모델을 찾습니다.
- 여기서 포함 차원은 벡터의 길이, 즉 f(x)=y에서 y 부분을 의미하며, 모델이 출력할 것입니다.
최대 토큰은 모델에 입력할 수 있는 입력 텍스트 청크의 길이, 즉 f(x)=y의 x 부분입니다.
검색 작업 외에도 다음을 기준으로 필터링할 수도 있습니다:
**언어: 프랑스어, 영어, 중국어 또는 폴란드어. 예를 들어, task=retrieval 및 Language=chinese.
법률. 법률 텍스트에 맞게 조정된 모델의 경우, 예: task=검색 및 언어=법률.
안타깝게도 훈련 데이터가 최근에야 공개되었기 때문에 일부 MTEB 항목은 과적합 모델로, 데이터에서 실제 성능보다 현저히 높은 순위를 차지하고 있습니다. 이 허깅페이스의 블로그에는 모델 순위를 신뢰할 수 있는지 판단하는 팁이 나와 있습니다. 모델 링크('모델 카드'라고 함)를 클릭합니다.
모델이 어떻게 학습되고 평가되었는지 설명하는 블로그와 논문**을 찾아보세요. 모델이 학습된 언어, 데이터 및 작업을 주의 깊게 살펴보세요. 또한 평판이 좋은 회사에서 만든 모델을 찾아보세요. 예를 들어, voyage-lite-02-instruct 모델 카드에는 이 모델이 아닌 다른 프로덕션 VoyageAI 모델이 나열되어 있는 것을 볼 수 있습니다. 이것이 힌트입니다! 해당 모델은 배니티 오버핏 모델입니다. **사용하지 마세요!
아래 스크린샷에서는 스노우플레이크의 새 항목인 "snowflake-arctic-embed-1"이 순위가 높고 노트북에서 실행할 수 있을 정도로 작으며 모델 카드에 블로그와 논문 링크가 있기 때문에 사용해 보겠습니다.
MTEB 리더보드의 스노우플레이크 스크린샷](https://assets.zilliz.com/Untitled_a6d5fa5d3e.png)
임베딩 모델을 선택하고 나면 코드에서 **모델_이름**을 변경하여 모델을 변경할 수 있다는 점이 허깅페이스 모델 사용의 좋은 점입니다!
import torch
에서 문장 트랜스포머를 가져옵니다.
# 토치 설정 초기화
torch.backends.cudnn.deterministic = True
DEVICE = torch.device('cuda:3' if torch.cuda.is_available() else 'cpu')
# 허깅페이스에서 모델을 로드합니다.
model_name = "WhereIsAI/UAE-Large-V1" # 다른 모델을 사용하려면 model_name만 변경하세요!
encoder = SentenceTransformer(model_name, device=DEVICE)
# 모델 파라미터를 가져와 나중에 사용할 수 있도록 저장합니다.
EMBEDDING_DIM = encoder.get_sentence_embedding_dimension()
MAX_SEQ_LENGTH_IN_TOKENS = encoder.get_max_seq_length()
# 모델 매개변수를 인쇄합니다.
print(f"model_name: {model_name}")
print(f"EMBEDDING_DIM: {EMBEDDING_DIM}")
print(f"MAX_SEQ_LENGTH: {MAX_SEQ_LENGTH_IN_TOKENS}")
이미지 데이터: ResNet50
입력 이미지와 비슷한 이미지를 검색하고 싶을 때가 있습니다. 스코티시 폴드 고양이 이미지를 더 많이 찾고 싶으신가요? 이 경우 좋아하는 스코티시 폴드 고양이 이미지를 업로드하고 검색 엔진에 비슷한 이미지를 찾아달라고 요청하면 됩니다!
ResNet50은 Microsoft가 2015년에 ImageNet 데이터로 학습시킨 인기 있는 컨볼루션 신경망(CNN) 모델입니다.
마찬가지로 역방향 동영상 검색의 경우에도 ResNet50은 동영상을 삽입할 수 있습니다. 그런 다음 동영상 스틸 데이터베이스에서 역 이미지 유사도 검색이 수행됩니다. 입력된 영상을 제외한 가장 가까운 영상이 가장 유사한 영상으로 사용자에게 반환됩니다.
사운드 데이터: PANN
입력 이미지를 사용하여 이미지 검색을 역방향으로 수행할 수 있는 것과 마찬가지로, 입력 사운드 바이트를 기반으로 오디오 클립 검색을 역방향으로 수행할 수도 있습니다.
대규모 오디오 데이터 세트에 대해 사전 학습되고 오디오 분류 및 태깅과 같은 작업에 능숙하기 때문에 이 작업에 널리 사용되는 임베딩 모델은 PANN(사전 학습된 오디오 신경망)입니다.
멀티모달 이미지 및 텍스트 데이터: SigLIP 또는 Unum
지난 몇 년 동안, 비정형 데이터를 혼합하여 학습된 임베딩 모델이 등장했습니다: 텍스트, 이미지, 오디오 또는 비디오. 이러한 임베딩 모델은 동일한 벡터 공간에서 여러 유형의 비정형 데이터의 시맨틱을 한 번에 캡처합니다.
멀티모달 임베딩 모델을 사용하면 텍스트를 사용하여 이미지를 검색하거나, 이미지의 텍스트 설명을 생성하거나, 입력 이미지에서 역으로 이미지를 검색할 수 있습니다.
2021년 OpenAI의 CLIP(대비 언어-이미지 사전 학습)이 표준 임베딩 모델이었죠. 하지만 미세 조정이 필요해 실무자들이 사용하기 어려웠습니다. 2024년에는 제로 샷 프롬프트를 사용하여 좋은 결과를 얻었다는 보고와 함께 개선된 CLIP으로 SigLIP 또는 Google의 시그모이드-CLIP이 등장할 것으로 보입니다.
소형 모델 변형 LLM이 인기를 얻고 있습니다. 대형 클라우드 컴퓨팅 클러스터가 필요 없는 대신 노트북(예: 16GB RAM만 장착된 M2 Apple)에서 실행할 수 있습니다. 소형 모델은 메모리를 덜 사용하므로 지연 시간이 짧고 대형 모델보다 더 빠르게 실행될 수 있습니다. Unum은 멀티모달 소형 임베딩 모델을 제공합니다.
멀티모달 텍스트 및/또는 사운드 및/또는 비디오 데이터
대부분의 멀티모달 텍스트-사운드 RAG 시스템은 멀티모달 생성 LLM을 사용하여 먼저 사운드를 텍스트로 변환합니다. 사운드-텍스트 쌍이 생성되면 텍스트가 벡터에 임베드되고 RAG를 사용하여 일반적인 방법으로 텍스트를 검색할 수 있습니다. 마지막 단계에서는 텍스트를 다시 사운드에 매핑하여 텍스트-사운드 루프를 완료하거나 그 반대의 경우도 마찬가지입니다.
OpenAI의 Whisper는 음성을 텍스트로 변환할 수 있습니다.
OpenAI의 텍스트 음성 변환(TTS)도 텍스트를 음성 오디오로 변환할 수 있습니다.
멀티모달 텍스트-비디오 RAG 시스템은 유사한 접근 방식을 사용하여 먼저 비디오를 텍스트에 매핑하고, 텍스트를 삽입하고, 텍스트를 검색하고, 검색 결과로 비디오를 반환합니다.
OpenAI의 Sora는 텍스트를 비디오로 변환할 수 있습니다. Dall-e와 마찬가지로 사용자가 텍스트 프롬프트를 제공하면 LLM이 동영상을 생성합니다. Sora는 스틸 이미지나 다른 동영상으로부터도 동영상을 생성할 수 있습니다.
요약
이 블로그에서는 RAG 애플리케이션에 사용되는 몇 가지 인기 있는 임베딩 모델에 대해 다뤘습니다.
추가 리소스
임베딩 모델 평가하기](https://zilliz.com/learn/evaluating-your-embedding-model)
나만의 텍스트 임베딩 모델 훈련하기](https://zilliz.com/learn/training-your-own-text-embedding-model)
RAG란 무엇인가요?(https://zilliz.com/learn/Retrieval-Augmented-Generation)
참고 자료
MTEB 리더보드, 논문, Github: https://huggingface.co/spaces/mteb/leaderboard
오버핏 모델 선택을 피하기 위한 MTEB 모범 사례: https://huggingface.co/blog/lyon-nlp-group/mteb-leaderboard-best-practices
유사 이미지 검색: https://milvus.io/docs/image_similarity_search.md
이미지 대 비디오 검색: https://milvus.io/docs/video_similarity_search.md
비슷한 소리 검색: https://milvus.io/docs/audio_similarity_search.md
텍스트-이미지 검색: https://milvus.io/docs/text_image_search.md
2024 SigLIP(시그모이드 손실 CLIP) 논문: https://arxiv.org/pdf/2401.06167v1
Unum의 포켓 사이즈 멀티모달 임베딩 모델: https://github.com/unum-cloud/uform
계속 읽기

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

How to Build an Enterprise-Ready RAG Pipeline on AWS with Bedrock, Zilliz Cloud, and LangChain
Build production-ready enterprise RAG with AWS Bedrock, Nova models, Zilliz Cloud, and LangChain. Complete tutorial with deployable code.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.
