들어가며
안녕하세요!
생성형 AI 서비스가 우리 생활 곳곳에 스며들면서, GPT 같은 생성형 모델은 이제 꽤 친숙하게 느껴지는데요. 하지만 임베딩 모델은 아직 낯설게 느끼는 분들이 많으실 것 같습니다.
하지만 임베딩 모델은 오래전부터 데이터 분석 업무에 활용되었으며, 생성형 모델과 함께 쓰이면서 생성형 AI 서비스의 부족한 점을 보완하는 등 주/조연을 가리지 않고 다양한 업무에 활용되고 있답니다! 
이번 글에서는 임베딩 모델들을 종류별로 나누어 각각의 특징을 살펴보고, 앞으로 현업에서 딱 맞는 임베딩 모델을 고르는 방법에 대해 알아보도록 하겠습니다. 
임베딩 모델이란?
먼저 간단한 예시로 시작해볼게요!
"나는 앱 프로그래밍을 선호한다."라는 문장과 "저는 애플리케이션 개발을 좋아합니다" 문장이 있습니다.
이 두 문장을 보면 우리는 "아, 비슷한 의미구나!" 하고 바로 알 수 있죠?
하지만 시스템 입장에서는 쉽지 않답니다.
형태소 단위나 글자 단위로 비교해도 유사한 글자가 거의 없기 때문에, 단어의 동일성만을 강조하는 전통적인 키워드 방식의 검색을 수행한다면 좋은 결과를 얻기 힘들어요.
이럴 때, 벡터 임베딩을 활용한 벡터 유사도 검색(Similarity search 또는 Semantic search)이 힘을 발휘합니다! 
기계학습에서 임베딩(Embedding)이란 텍스트, 이미지 등의 데이터를 '벡터 임베딩 (Vector Embedding)'라고 하는 수치화된 배열로 변환한 방법을 의미합니다.
시스템은 이 임베딩을 사용하여 데이터 간의 중요한 패턴이나 관계를 연산할 수 있어요.
임베딩 모델(Embedding Model)은 데이터를 벡터로 변환할 수 있도록 학습된 기계학습 모델을 의미하며, 학습이 잘된 모델일수록 변환된 벡터값들 사이의 관계를 더 잘 표현해줍니다.
예를 들어, 위 문장을 포함한 여러 문자를 임베딩 모델을 통해 벡터 임베딩으로 변환하고 다차원 공간에 배치해 보겠습니다.
편의상 벡터를 점(Point)으로 가정한다면, 관련 있는 벡터일수록 더 모여있게 될 거예요! 
따라서 위 문장들의 벡터들은 의미상으로 가까운 거리에 위치하며, "나는 앱 프로그래밍을 선호한다." 문장 벡터를 기준으로 가까운 벡터를 검색한다면 "저는 애플리케이션 개발을 좋아합니다" 문장 벡터가 검색 결과 중 상위에 존재하게 됩니다.
임베딩 모델은 이런 특성을 바탕으로 검색 용도는 물론이고 클러스터링(Clustering), 개인화 서비스를 위한 추천(Recommendation), 이상치 탐지(Anomaly detection) 등에 폭넓게 활용되고 있습니다. 
임베딩 모델의 분류
구조 기반 분류
임베딩 모델은 기반 구조에 따라 크게 인코더(encoder) 기반과 디코더(decoder) 기반으로 나눌 수 있습니다.
이는 요즘 임베딩 모델들이 대부분 트랜스포머(Transformer) 모델 구조를 바탕으로 만들어졌기 때문입니다.
트랜스포머는 2017년에 구글에서 발표한 언어 모델입니다. 
당시 좋은 성능을 보이던 신경망 모델들을 따라 인코더-디코더 구조를 가지고 있어요.
인코더는 입력 데이터를 받아서 중요한 정보를 압축한 고차원 벡터(Vector)로 변환하고, 디코더는 이를 기반으로 최종 출력을 생성하는 역할을 담당합니다.
그런데 트랜스포머 아키텍처는 꼭 인코더-디코더 구조에만 국한되지 않습니다!
인코더만 사용하거나 디코더만 사용해도 유효한 모델을 만들 수 있거든요.
OpenAI의 디코더 기반 모델인 GPT(Generative Pre-trained Transformer)와 구글의 인코더 기반 모델인 BERT(Bidirectional Encoder Representations for Transformers)가 대표적인 예시입니다.
한동안 GPT 계열과 BERT 계열은 각각의 특성에 맞게 연구되었으며, BERT 계열의 인코더 기반 모델들이 주로 임베딩 용도로 사용되었습니다. 
하지만 최근에는 디코더 기반 모델도 임베딩 생성에 성공적으로 활용되고 있습니다!
Mistral 같은 여러 AI 기업들이 디코더 기반의 LLM(거대언어모델: Large Language Model)을 임베딩 모델로 활용하면서 다양한 벤치마크에서 좋은 성과를 내고 있어요. 
라이선스 기반 분류
라이선스 기반 모델 분류는 임베딩 모델뿐만 아니라 생성형 모델에도 모두 적용할 수 있는데, 여기서는 임베딩 모델에만 집중해볼게요.
독점 모델(Proprietary Model)
OpenAI가 AI 모델 서비스의 새로운 장을 열었어요.
GPT-2까지는 모델과 학습 정보를 공개했지만, GPT-3부터는 대부분의 정보를 비공개하고 기능 중심의 API 서비스를 시작한 거죠.
OpenAI의 임베딩 모델도 세부 정보가 비공개되어 있어서, 공식 문서를 통해서만 그 실체를 일부 짐작해볼 수 있어요.
이런 모델들을 '독점 모델'이라고 하는데, 특정 기업이 개발하고 소유한 AI 모델로서 모델의 용도, 비용, 지식재산권이 강력하게 보호되는 특징이 있어요.
OpenAI, Cohere, Upstage의 임베딩 모델들이 여기에 속한답니다.
개방형 가중치 모델(Open-weights Model)
가중치는 공개되어 있지만, 훈련 코드나 데이터 세트는 비공개인 모델을 의미해요.
여기서 가중치(weight)란 학습 과정에서 최적화되는 수치적 매개변수로 모델의 추론 능력에 영향을 미치는 요소예요.
사전 훈련된 모델을 다운로드해서 사용할 수 있고, 개인 데이터로 미세 조정해서 특정 작업에 맞게 활용할 수 있어요.
하지만 학습 과정을 완전히 재현할 수는 없어서 모델을 특정 용도에 맞게 미세 조정(fine-tuning)하기는 어려워요. 
Microsoft 연구소의 e5-mistral-7b-instruct 모델, Nvidia의 NV-Embed-v2 모델 등이 이에 해당해요.
오픈소스 모델(Open-source Model)
소스 코드와 가중치가 공개적으로 사용할 수 있는 모델이에요.
Hugging Face 같은 플랫폼에서 쉽게 접근할 수 있고, 누구나 사용하고 참여할 수 있는 환경에서 개발되고 있어요.
nomic-ai의 nomic-embed-text-v1.5 모델, Microsoft 연구소의 multilingual-e5-large 모델, 중국 인공지능 아카데미(BAAI)의 bge-m3 모델 등이 대표적이에요.
임베딩 모델의 발전
임베딩 모델은 구조와 라이선스에 따라 구분할 수 있지만, 이런 구분이 모델 간의 우열을 나타내는 건 아닙니다.
오히려 다양한 모델 생태계가 임베딩 모델의 발전을 촉진하고 있고, 이런 상호작용이 모델 혁신을 이끌어내고 있습니다! 
이를 잘 보여주는 예시가 바로 E5 모델입니다.
E5 모델은 발전 과정에서 서로 다른 접근 방식과 다양한 데이터를 통해 성능을 극대화했거든요.
E5 모델은 최초로 인코더 기반 구조로 설계되었습니다.
자체적으로 정제된 데이터를 활용한 약하게 감독된 대조 학습(Weakly-Supervised Contrastive Learning) 방식으로 훈련되었고, 다양한 텍스트 임베딩 작업에서 뛰어난 성능을 보여주었습니다. 
특히 다양한 자연어 처리(NLP) 과제에서 고품질의 텍스트 표현을 제공해서 그 우수성이 입증되었어요.
이때 모델은 주로 인코더-디코더 구조에서 인코더 부분에 집중해서 텍스트를 고차원 벡터로 임베딩하는 데 중점을 두었습니다.
E5 모델의 다음 단계는 디코더 기반의 대형 언어 모델(LLM)을 적용한 E5-Mistral-7B로 발전했습니다.
이 모델은 GPT-3.5 Turbo와 GPT-4 같은 강력한 LLM을 사용해서 생성된 데이터 세트를 학습에 활용했습니다. 
E5-Mistral-7B는 Mistral-7B 같은 LLM을 기반으로 더욱 확장된 성능을 자랑하며, 특히 더 큰 언어 모델의 장점을 활용해서 더욱 정교한 텍스트 임베딩을 생성할 수 있었습니다.
이는 인코더 기반 접근을 넘어서 디코더 기반의 잠재력을 극대화한 결과로, 기존 E5 모델에 비해 다양한 텍스트 표현에서 더욱 높은 성능을 보여주었습니다.
흥미롭게도 E5의 발전은 다시 인코더 기반 모델로 돌아가는 방식으로 이어졌습니다! 
최신 E5-Large-Instruct 모델은 E5-Mistral-7B가 사용한 데이터 세트를 바탕으로 기존의 인코더 기반 E5 모델을 미세 조정해서 구현되었습니다.
이 모델은 E5-Mistral-7B와 비슷한 수준의 성능을 제공하면서도 인코더 구조의 효율성을 유지했습니다.
이를 통해 인코더와 디코더 기반 모델 사이의 상호 보완적 관계를 잘 보여주었죠.
E5 모델의 발전사는 단일 모델 구조에 얽매이지 않고, 다양한 모델 구조와 데이터 세트를 결합해서 더 나은 성능을 달성하는 임베딩 모델의 혁신적인 가능성을 보여줍니다.
이를 통해 인코더와 디코더, LLM과 오픈소스, 다양한 언어 지원을 모두 아우르는 텍스트 임베딩의 미래가 더욱 발전할 수 있음을 시사하고 있습니다! 
임베딩 모델 선정 가이드
텍스트 임베딩 모델을 비교할 때는 보통 MTEB(Massive Text Embedding Benchmark) 리더보드를 참고해요.
MTEB는 분류(Classification), 클러스터링(Clustering), 쌍분류(PairClassification), 재순위(Reranking), 검색(Retrieval), 텍스트 의미적 유사도(STS, Semantic Textual Similarity), 요약(Summarization) 등 다양한 임베딩 작업에서 모델 성능을 평가하는 대규모 벤치마크랍니다.
이 리더보드를 통해 각 모델의 특성과 강점을 파악하고, 성능 순위를 확인할 수 있어요. 
최근 임베딩 모델 순위를 보면, 디코더 기반 모델이 인코더 기반 모델보다 더 높은 순위를 차지하는 경우가 많아요.
이는 디코더 기반 모델이 인코더 기반 모델에 비해 대부분 더 높은 차원의 벡터 임베딩을 지원하기 때문이에요.
하지만 여기서 주의할 점이 있어요! 
고차원 임베딩은 변환/검색 시 더 많은 메모리와 연산량을 요구한답니다.
특히 임베딩 모델을 유사도 검색에 활용한다면, 대부분의 벡터 데이터베이스(Vector Database)가 GPU가 아닌 CPU에 의존하고 있다는 점을 고려해야 해요.
생성된 벡터 임베딩은 정수형이 아닌 부동소수점 연산을 하는데, CPU는 부동소수점 연산이 상대적으로 GPU에 비해 취약하거든요. 
따라서 대량의 데이터를 처리할 때 고차원의 벡터 임베딩을 사용하면 검색 품질(quality)은 좋아질 수 있지만 검색 성능(performance)은 떨어질 수 있어요.
만약 프로젝트의 비용이나 환경, 안정적인 운영을 고려한다면 고품질의 인코더 모델을 선택하는 것도 좋은 전략이 될 수 있답니다! 
또한 임베딩 모델을 선택할 때는 독점 모델과 오픈소스/오픈 가중치 모델도 함께 고려해야 해요.
독점 모델은 일반적으로 더 높은 품질을 제공하지만, API를 통해 외부 서버에서 제공되는 경우가 많아서 데이터를 방화벽 밖으로 전송해야 할 수 있어요. 
이에 따라 보안이 중요한 환경에서는 독점 모델이 적합하지 않을 수 있답니다.
반면 on-premise 환경에서는 오픈소스 모델이나 오픈 가중치 모델을 사용하는 것이 적합해요.
추가적인 성능 개선이 필요하지 않다면 오픈 가중치 모델도 충분히 좋은 선택이 될 수 있지만, 특정 용도로 활용하기 위해 미세조정까지 고려하고 있다면 오픈소스 모델을 선택하는 것이 더 유리하답니다! 
아쉽게도 2024년 하반기 기준으로, MTEB에서는 한국어 성능 평가를 제공하지 않고 있어요. 
다만 이런 리더보드는 비정기적으로 업데이트되기 때문에 최신 모델을 평가하는 데는 한계가 있을 수 있어요.
만약 검증되지 않은 모델을 적용해야 한다면, 공인된 외국어 데이터 세트를 번역하거나 자체적으로 데이터 세트를 정제한 후, 다양한 지표를 사용해서 전문가와 함께 검증하는 과정이 필요하답니다.
에스코어는 삼성그룹사 임직원이 사용하는 그룹웨어의 RAG(검색엔진 증강) 프로젝트를 통해 생성형 AI 활용도를 높이고, 답변의 신뢰성을 강화한 경험을 가지고 있어요. 
또한 에스코어는 아키텍처 설계, 데이터 마이그레이션, 구축 및 기술 지원 등 프로젝트의 전 단계에서 협력할 수 있는 각 분야의 오픈소스 소프트웨어 전문가들을 보유하고 있답니다.
한국어를 고려한 최적의 벡터 임베딩 모델 선정은 물론, 최신 오픈소스 기술 기반으로 생성형 AI 서비스 구축을 고려하고 있다면, 에스코어 전문가와의 협업은 정말 탁월한 선택이 될 거예요! 
마치며
현재 인공지능 분야에서는 생성형 모델이 큰 주목을 받고 있지만, 임베딩 모델 역시 다양한 영역에서 정말 중요한 역할을 하고 있어요.
특히 RAG(Retrieval-Augmented Generation, 검색 증강 생성) 시스템 같은 생성형 AI 기반 서비스에서 임베딩 모델을 활용한 유사도 검색은 핵심적인 부분을 차지하고 있답니다. 
생성형 AI 기반 서비스를 개발하는 경우, 프로젝트의 특성과 요구 사항에 적합한 임베딩 모델을 선정하고 효과적으로 활용하는 것이 중요해요.
이를 통해 시스템의 답변 정확도와 신뢰성을 크게 향상시킬 수 있거든요! 
결론적으로, 생성형 AI 기술의 발전과 함께 임베딩 모델의 중요성도 절대 간과해서는 안 된답니다.
두 기술의 균형 있는 발전과 통합적 활용이 앞으로 AI 서비스의 질적 향상을 이끌어낼 거예요. 
또한 개발자와 연구자들은 생성형 모델뿐만 아니라 임베딩 모델에도 지속적인 관심을 가지고, 이를 효과적으로 조합해서 더욱 강력하고 신뢰할 수 있는 AI 시스템을 구축해 나가야 할 것 같아요! 
참고 자료
Elastic. What is vector search? Elastic, n.d. Web. 4 Oct. 2024. https://www.elastic.co/kr/what-is/vector-search.
"What is embeddings in machine learning?" Amazon Web Services, n.d. Web. 4 Oct. 2024. https://aws.amazon.com/ko/what-is/embeddings-in-machine-learning/.
Mikolov, Tomas, Kai Chen, Greg Corrado, and Jeff Dean. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
Vaswani, Ashish, et al. "Attention is all you need." In Advances in Neural Information Processing Systems (NeurIPS), vol. 30, 2017.
"ChatGPT Whitepaper." Samsung SDS. Accessed 4 Oct. 2024. https://www.samsungsds.com/kr/insights/chatgpt_whitepaper1.html.
"Open Source vs. Open Weights vs. Restricted Weights." Prompt Engineering. Accessed 4 Oct. 2024. https://promptengineering.org/llm-open-source-vs-open-weights-vs-restricted-weights/.
"Nomic Embed Text V1." Nomic. Accessed 8 Oct. 2024. https://www.nomic.ai/blog/posts/nomic-embed-text-v1.
OpenAI. "Embeddings Guide." OpenAI Documentation. Available at: https://platform.openai.com/docs/guides/embeddings
Wang, Shuang, et al. "Text embeddings by weakly-supervised contrastive pre-training (E5)." arXiv preprint arXiv:2212.03533 (2022).
Wang, Shuang, et al. "Improving text embeddings with large language models (E5-Mistral-7B)." arXiv preprint arXiv:2401.00368 (2024).
Wang, Shuang, et al. "Multilingual E5 text embeddings: A technical report." arXiv preprint arXiv:2402.05672 (2024).
"MTEB Leaderboard." Hugging Face. Accessed 4 Oct. 2024. https://huggingface.co/spaces/mteb/leaderboard.
"Kor-IR." GitHub. Accessed 4 Oct. 2024. https://github.com/Atipico1/Kor-