개인형 LLM에서 엠베딩이란?

in #kr4 days ago

안녕하세요. 가야태자 @talkit 입니다.

개념적으로 조금씩 설명을 해보려고 합니다.

이미 저는 엠베딩을 해서 벡터 디비에서 제 개인 블로그 자료들을 저장해 놓은 상태 입니다.

https://www.syncly.kr/blog/what-is-embedding-and-how-to-use

위 자료를 좀 읽어보시면 뭔가 좀 어렵기는 해도 조금 이해가 됩니다.

그리고 제미나이에게 물어 봤습니다.


LLM(거대 언어 모델)에서 임베딩(Embedding)이란 비정형 데이터인 단어나 문장을 컴퓨터가 이해하고 계산할 수 있도록 숫자 형태의 벡터(Vector)로 변환하는 기술을 의미합니다.

쉽게 비유하자면, 단어의 의미를 '좌표 평면 위의 점'으로 찍어주는 과정이라고 볼 수 있습니다.


1. 임베딩의 핵심 원리: 밀집 벡터(Dense Vector)

과거에는 단어를 숫자로 바꿀 때 단순히 인덱스를 부여하거나 원-핫 인코딩(One-hot encoding)을 사용했습니다. 하지만 이 방식은 단어 사이의 관계를 전혀 설명하지 못합니다. (예: '왕'과 '왕비'가 가깝다는 사실을 알 수 없음)

임베딩은 단어를 수십~수천 개의 차원을 가진 실수(Float) 배열로 표현합니다. 이를 통해 다음과 같은 특징을 갖게 됩니다.

  • 의미적 유사도: 의미가 비슷한 단어들은 벡터 공간에서 서로 가까운 위치에 배치됩니다.
  • 다차원적 관계: 단순한 1차원 값이 아니라, 성별, 품사, 뉘앙스 등 다양한 속성을 여러 차원에 나누어 담습니다.

2. 왜 임베딩이 중요한가요?

LLM이 사람처럼 문맥을 파악하고 답변할 수 있는 이유는 바로 이 임베딩 덕분입니다.

  • 컴퓨터의 이해 도구: 컴퓨터는 텍스트를 직접 처리할 수 없지만, 벡터 간의 거리를 계산(코사인 유사도 등)하여 문장의 의미가 비슷한지 판단할 수 있습니다.
  • 문맥 파악: '사과'라는 단어가 '먹는 과일'인지 '용서를 구하는 행위'인지 주변 단어와의 임베딩 관계를 통해 파악합니다.
  • 연산 가능: 유명한 예시로 $Vector(\text{King}) - Vector(\text{Man}) + Vector(\text{Woman}) \approx Vector(\text{Queen})$과 같은 의미론적 연산이 가능해집니다.

3. 임베딩의 활용 사례

  • RAG (검색 증강 생성): 사용자의 질문을 임베딩하여 수만 개의 문서 중 가장 관련 있는 문서를 찾아낼 때 사용합니다.
  • 추천 시스템: 내가 본 영화와 임베딩 벡터가 유사한 다른 영화를 추천합니다.
  • 텍스트 분류 및 감성 분석: 문장의 임베딩 값을 분석해 해당 글이 긍정적인지 부정적인지 분류합니다.

요약

임베딩은 "언어의 추상적인 의미를 숫자로 이루어진 공간에 배치하는 지도 제작 과정"입니다. LLM은 이 지도를 보고 단어 사이의 길을 찾아 정확한 답변을 내놓게 됩니다.

현재 개발 중이신 개인용 RAG 에이전트멀티 소스 검색 엔진 프로젝트에서도, Steemit 등의 데이터를 이 임베딩 과정을 거쳐 벡터 DB(Qdrant 등)에 저장하는 것이 핵심 로직이 될 것입니다.


일단 위 까지가 제미나이가 설명해준겁니다.

저는 해봐서 이해가 갑니다.

그런데, 엠베딩을 하려면 여기서도 모델이 하나 필요 합니다.

저는 처음에 제미나이가 알려준 nomic-embed-text을 엠베딩 모델로 사용했었습니다.

얘는 일단 저에게는 불합격입니다. ^^

그래서 새로 추천 받은 아이가 bge-m3 모델 입니다.


BGE-M3는 중국의 AI 연구 기관인 BAAI(Beijing Academy of Artificial Intelligence, 북경지능원)에서 개발한 임베딩 모델입니다. BAAI는 오픈소스 모델인 'FlagEmbedding' 시리즈를 통해 임베딩 기술을 선도하고 있는 곳이기도 합니다.

BGE-M3의 이름에서 M3는 이 모델이 추구하는 세 가지 핵심 목적을 의미합니다.


BGE-M3의 3가지 핵심 목적 (Multi-functionality)

1. Multi-Linguality (다국어 지원)

기존 모델들이 특정 언어(주로 영어)에 특화되었다면, BGE-M3는 한국어를 포함한 100개 이상의 언어를 동시에 지원하도록 설계되었습니다. 이를 통해 서로 다른 언어 간의 의미 검색(Cross-lingual retrieval)이 가능합니다.

2. Multi-Granularity (다양한 입력 길이)

보통의 임베딩 모델은 문장 길이가 길어지면 성능이 급격히 떨어지거나 입력을 자르게 됩니다. BGE-M3는 짧은 문장부터 최대 8,192 토큰에 이르는 긴 문서까지 효과적으로 처리할 수 있도록 만들어졌습니다.

3. Multi-Recall (다양한 검색 방식의 통합)

BGE-M3의 가장 큰 특징으로, 세 가지 검색 방식을 하나의 모델에서 모두 수행할 수 있도록 설계되었습니다.

  • Dense Retrieval: 일반적인 벡터 유사도 검색 (의미적 유사성 파악)
  • Sparse Retrieval: 키워드 중심의 검색 (BM25와 유사한 방식)
  • Multi-Vector Retrieval: 문장을 여러 벡터로 표현하여 더욱 정밀하게 매칭 (ColBERT 방식)

왜 이 모델이 인기가 많은가요?

사용자가 구축 중인 RAG(검색 증강 생성) 시스템 관점에서 BGE-M3는 매우 강력한 도구입니다.

  • 한국어 성능: 한국어 벤치마크에서도 최상위권의 성능을 보여줍니다.
  • 하이브리드 검색: 키워드 매칭(Sparse)과 의미 매칭(Dense)을 동시에 수행하므로, 전문 용어나 고유 명사가 많은 문서(예: 개발 문서나 특정 커뮤니티 데이터)를 검색할 때 훨씬 정확합니다.
  • 효율성: 여러 모델을 따로 돌릴 필요 없이 BGE-M3 하나로 하이브리드 검색 환경을 구축할 수 있어 리소스 관리에도 유리합니다.

--

이 다음에 아셔야 하는 것이 엠베딩 모델을 선정하고 벡터화를 진행 했으면, 추후 검색 할 때도 같은 엠베딩 모델을 사용해야 합니다.

이게 가장 중요 합니다.

📊 BGE-M3 vs Nomic Embed 모델 비교

구분BGE-M3 (BAAI)Nomic Embed (Nomic AI)
개발사중국 BAAI (북경지능원)미국 Nomic AI
모델 이름bge-m3nomic-embed-text
최대 토큰8,192 토큰 (Long Context)8,192 토큰 (Long Context)
벡터 차원1,024차원 (고정)768차원 (조절 가능)
주요 특징하이브리드 검색 (Dense, Sparse, Multi-vector)Matryoshka 임베딩 (차원 축소 최적화)
언어 지원다국어 특화 (한국어 성능 최상위권)영어 중심 (다국어 지원하나 한국어는 보통)
학업/라이선스비상업/연구용 중심 (모델별 확인 필요)Apache 2.0 (완전 오픈소스 및 데이터 공개)

🔍 모델별 상세 강점

1. BGE-M3 (Versatile & Multi-lingual)

  • 하이브리드 리콜: 문맥을 읽는 '의미 검색'과 키워드를 찾는 '어휘 검색(BM25)'을 하나의 모델로 수행 가능합니다.
  • 한국어 최적화: Steemit이나 국내 웹 데이터를 처리할 때 문장 사이의 미묘한 뉘앙스를 Nomic보다 더 잘 파악합니다.
  • 프로젝트 적합도: 현재 개발 중인 멀티 소스 검색 엔진에서 한국어 컨텐츠의 정밀한 검색이 필요할 때 가장 추천되는 모델입니다.

2. Nomic Embed (Efficient & Flexible)

  • 차원 가변성(Matryoshka): 벡터 저장 공간을 줄이기 위해 차원을 256이나 128로 낮춰도 검색 성능이 크게 떨어지지 않습니다.
  • 리소스 효율: 모델이 가벼워 MacBook Pro M4 Pro 환경의 Ollama에서 매우 빠른 속도로 임베딩을 생성합니다.
  • 투명성: 학습 데이터셋과 과정이 모두 공개되어 있어, 데이터 처리 파이프라인을 깊게 이해하고 최적화하기 좋습니다.

💡 선택 가이드

  • 정밀도 우선(특히 한국어): BGE-M3를 사용하세요.
  • 속도 및 저장공간 효율 우선: Nomic Embed를 사용하세요.

일단 오늘은 엠베딩 모델에 대해서 말씀 드렸습니다.

도움이 되셨기를

감사합니다.

Posted using SteemX

Sort:  

🎉 Congratulations!

Your post has been upvoted by the SteemX Team! 🚀

SteemX is a modern, user-friendly and powerful platform built for the Steem community.

🔗 Visit us: www.steemx.org

✅ Support our work — Vote for our witness: bountyking5

banner.jpg

Coin Marketplace

STEEM 0.05
TRX 0.29
JST 0.043
BTC 67939.12
ETH 1974.20
USDT 1.00
SBD 0.38