LLM2Vec이란 무엇인가
LLM2Vec은 GPT와 같은 ‘디코더-전용(decoder-only)’ 대규모 언어 모델(LLM)을 BERT처럼 텍스트의 의미를 벡터로 잘 추출하는 강력한 ‘텍스트 인코더(text encoder)‘로 변환하는 간단하고 효과적인 비지도 학습 방법론입니다. 이 논문의 핵심 주장은, 생성형 모델로 알려진 LLM들이 사실은 약간의 조정을 거치면 텍스트 임베딩(embedding) 분야에서도 최고의 성능을 낼 수 있는 잠재력을 가지고 있다는 것입니다.
A.1.1) 왜 이런 연구가 필요한가? (문제 배경)
- 디코더-전용 LLM의 한계: GPT, LLaMA, Mistral 같은 모델들은 다음 단어를 예측하는 방식으로 학습됩니다. 이를 위해 ‘인과적 어텐션(causal attention)’ 메커니즘을 사용하는데, 이는 각 토큰이 자신보다 앞에 있는 토큰들만 참고할 수 있음을 의미합니다. 이 구조는 글을 생성하는 데는 유리하지만, 문장 전체의 종합적인 의미를 하나의 벡터로 압축해야 하는 텍스트 임베딩 작업에는 부적합합니다.
- 인코더 모델의 장단점: 반면, BERT와 같은 ‘인코더(encoder)’ 모델은 문장 전체(앞뒤 문맥 모두)를 한 번에 보기 때문에 텍스트 임베딩에 강점을 보입니다. 하지만 모델과 데이터 크기를 키워도 성능 향상이 정체되는 경향(scaling law 부재)이 있어, 최근 LLM의 발전 속도를 따라가지 못하고 있습니다.
LLM2Vec은 이 두 가지 모델의 장점을 결합하고자 합니다. 즉, LLM의 강력한 확장성과 표현력을 텍스트 임베딩에 활용하는 방법을 제시한 것입니다.
A.1.2) LLM2Vec의 3단계 핵심 방법론
LLM2Vec은 세 가지 간단한 단계로 구성됩니다.

A.2) 1단계: 양방향 어텐션 활성화 (Enabling Bidirectional Attention)
첫 단계는 디코더-전용 모델의 가장 큰 제약인 ‘인과적 어텐션’을 해제하는 것입니다. 모델의 어텐션 마스크를 수정하여 모든 토큰이 문장 내 다른 모든 토큰(미래의 토큰 포함)을 참조할 수 있도록 변경합니다. 이렇게 하면 구조적으로는 BERT와 같은 양방향 모델이 됩니다.
하지만 이 단계만으로는 부족합니다. 모델이 양방향 문맥을 보도록 학습된 적이 없기 때문에, 단순히 마스크만 바꾸면 대부분의 모델에서 오히려 성능이 크게 저하됩니다.
A.3) 2단계: 마스크된 다음 토큰 예측 (Masked Next Token Prediction, MNTP)
이 단계가 LLM2Vec의 핵심적인 적응 훈련입니다. 모델이 양방향 어텐션을 효과적으로 사용하도록 학습시키는 과정입니다.
- 작동 방식: BERT의 ‘마스크된 언어 모델링(MLM)‘과 GPT의 ‘다음 토큰 예측’을 결합한 형태입니다. 문장에서 일부 토큰을 무작위로
[MASK]처리한 뒤, 모델이 양쪽 문맥을 모두 활용하여 가려진 토큰을 예측하도록 훈련합니다. - 독특한 손실 계산: 중요한 점은, 마스크된 토큰(
i위치)을 예측할 때, 해당 위치의 정보가 아닌 바로 이전 토큰(i-1위치)의 표현을 기반으로 손실(loss)을 계산한다는 것입니다. 이는 모델이 원래 학습했던 ‘다음 토큰 예측’ 방식과 최대한 유사하게 만들어 훈련 안정성을 높입니다.
이 단계만으로도 모델은 단어 수준의 의미를 풍부하게 파악하는 강력한 인코더로 변신합니다.
A.4) 3단계: 비지도 대조 학습 (Unsupervised Contrastive Learning)
MNTP가 단어 수준의 표현력을 높였다면, 이 단계는 문장 전체의 의미를 잘 담는 시퀀스(문장) 수준의 임베딩을 학습하기 위해 적용됩니다. 이를 위해 SimCSE(Simple Contrastive Learning of Sentence Embeddings)라는 기법을 사용합니다.
- 작동 방식: 동일한 문장을 모델에 두 번 입력하되, 매번 다른 드롭아웃(dropout) 마스크를 적용해 미세하게 다른 두 개의 임베딩을 만듭니다.
- 학습 목표: 모델은 이 두 임베딩(긍정 쌍, positive pair) 사이의 유사도는 최대화하고, 배치 내의 다른 문장들의 임베딩(부정 쌍, negative pair)과의 유사도는 최소화하도록 학습됩니다.
B) 주요 실험 결과 및 발견
- 비지도 학습 성능: LLM2Vec을 LLaMA, Mistral 등 여러 LLM에 적용한 결과, MTEB(Massive Text Embedding Benchmark)에서 기존의 비지도 임베딩 모델들을 큰 차이로 능가하며 새로운 최고 성능(SOTA, State-of-the-art)을 달성했습니다. 특히 Mistral-7B 모델과 결합했을 때 가장 좋은 성능을 보였습니다.
- 지도 학습 성능: 공개된 데이터셋으로 지도 학습을 추가했을 때도, LLM2Vec은 MTEB 리더보드에서 최고 순위를 기록하며 그 효과를 입증했습니다. (논문 Table 2, 9 참조)
- ‘Echo Embeddings’ 대비 효율성: 동 시기에 제안된 ‘Echo Embeddings’는 입력을 두 번 반복하여 양방향 문맥을 보는 방식입니다. LLM2Vec은 이와 달리 입력 길이를 늘리지 않아 추론 시 계산 효율성이 더 높다는 장점이 있습니다.
- Mistral-7B 모델의 흥미로운 특징: 분석 결과, 다른 모델들과 달리 Mistral-7B는 2단계인 MNTP 훈련 없이, 1단계(양방향 어텐션 활성화)만 적용해도 성능이 크게 떨어지지 않고 오히려 향상되는 모습을 보였습니다. 논문은 이것이 Mistral-7B가 사전 학습될 때 사용한 특정 아키텍처(Sliding Window Attention 등)나 학습 방식 때문일 수 있다고 추측합니다.
네, 아주 좋은 질문입니다. 2단계와 3단계는 LLM2Vec의 핵심적인 부분이라 구체적으로 이해하는 것이 중요합니다. 제가 그림을 그리듯 단계별로 상세히 설명해 드리겠습니다.
C) QnA
C.1) 2단계: 마스크된 다음 토큰 예측 (MNTP)은 구체적으로 어떻게 작동하는가?
이 단계의 목표는 ‘뒤를 돌아보도록’만 훈련된 모델에게 ‘양옆을 모두 둘러보도록’ 가르치는 것입니다.
가령 다음과 같은 문장이 있다고 가정해봅시다.
“고양이가
[MASK]위에 앉았다.” (원래 단어: “매트”)
여기서 [MASK]는 4번째 토큰입니다. 따라서 i=4입니다.
1. 정보의 흐름 (양방향 어텐션)
- 1단계에서 양방향 어텐션을 켰기 때문에, 이제 모델은
[MASK]토큰의 의미를 파악하기 위해 문장 전체, 즉 “고양이”, “가”, “위에”, “앉았다”라는 모든 단어를 참고할 수 있습니다. - 모델은 이 모든 정보를 종합하여 문장 내 각 토큰의 ‘숨겨진 표현(hidden representation)’ 벡터를 계산합니다. 이것이 기존 GPT와의 결정적인 차이입니다. GPT라면 “고양이”, “가”만 보고 다음 단어를 예측해야 합니다.
2. 손실 계산의 핵심 (i-1 트릭)
여기가 질문의 핵심입니다. 모델은 “매트”라는 정답을 맞춰야 합니다.
- BERT의 방식 (우리가 생각하는 일반적인 방식): BERT였다면,
[MASK]토큰의 최종 표현 벡터(4번째 토큰의 벡터)를 가져와서 “이 자리에 ‘매트’가 와야 해”라고 학습시켰을 겁니다. - LLM2Vec의 방식 (독창적인 부분): LLM2Vec은
[MASK]토큰의 벡터를 사용하지 않습니다. 대신, 바로 앞 토큰인 “가”의 최종 표현 벡터(3번째 토큰, 즉i-1위치의 벡터)를 가져옵니다. - 그리고 이 3번째 토큰(“가”)의 벡터를 가지고 “네 다음 토큰은 ‘매트’여야 해”라고 예측하도록 학습시킵니다.
3. 왜 이런 방식을 사용할까?
“이 모델은 원래 ‘현재 토큰’의 정보를 바탕으로 ‘다음 토큰’을 예측하는 방식으로 평생을 살아왔습니다. 갑자기 [MASK]라는 비어있는 자리의 정보를 주면서 ‘이 자리를 채워봐’라고 하면 혼란스러워할 수 있습니다.
그래서 LLM2Vec는 모델에게 이렇게 말하는 것과 같습니다.
“얘야, 너의 오랜 훈련 방식은 존중해줄게. 여전히 바로 앞 토큰의 정보로 다음 토큰을 맞추는 문제를 풀 거야. 하지만! 이제 내가 너에게 양옆을 볼 수 있는 새로운 능력을 줬으니, 앞 토큰(“가”)의 의미를 파악할 때 뒤에 있는 ‘위에’, ‘앉았다’라는 힌트까지 적극적으로 활용해서 더 똑똑하게 맞춰보렴.”
결론적으로, MNTP는 모델의 기존 학습 방식(다음 토큰 예측)을 유지하면서도 양방향 문맥 정보를 자연스럽게 통합하도록 유도하는 매우 영리한 절충안입니다.
C.2) 3단계: 비지도 대조 학습 (SimCSE)은 구체적으로 어떻게 작동하는가?
이 단계의 목표는 ‘문장 전체의 의미’를 하나의 벡터로 잘 요약하는 능력을 기르는 것입니다. 즉, 비슷한 의미의 문장들은 벡터 공간에서 가깝게, 다른 의미의 문장들은 멀게 배치하도록 학습합니다.
“비지도”이므로 정답 라벨(예: “이 두 문장은 유사함”)이 없습니다. 그래서 ‘스스로 정답을 만들어내는’ 방식을 사용합니다.
1. 긍정 쌍 (Positive Pair) 만들기: “같은 문장은 당연히 같은 의미다”
- 하나의 문장을 가져옵니다. 예: “오늘 날씨가 정말 좋다.”
- 이 문장을 모델에 두 번 통과시킵니다.
- 핵심 트릭 (Dropout): 모델 내부에는 ‘드롭아웃’이라는 기능이 있어서, 훈련할 때마다 신경망의 일부 연결을 무작위로 끊습니다. 이는 모델이 과적합되는 것을 막아줍니다.
- 첫 번째 통과: 드롭아웃이 무작위 패턴 A로 적용되어 ‘임베딩 A’ 가 생성됩니다.
- 두 번째 통과: 똑같은 문장이지만, 이번에는 드롭아웃이 다른 무작위 패턴 B로 적용되어 ‘임베딩 B’ 가 생성됩니다.
임베딩 A와임베딩 B는 똑같은 문장에서 나왔으므로 의미가 같아야 합니다. 이 둘의 쌍(임베딩 A, 임베딩 B)가 바로 **긍정 쌍(positive pair)**입니다. 모델은 이 둘을 서로 가깝게 만들도록(유사도를 높이도록) 학습합니다.
2. 부정 쌍 (Negative Pair) 만들기: “다른 문장은 다른 의미다”
- 훈련은 보통 ‘배치(batch)’ 단위로 이루어집니다. 즉, 한 번에 여러 문장을 처리합니다.
- 우리 배치에 “오늘 날씨가 정말 좋다” 외에 다른 문장들이 있다고 가정해봅시다.
- “내일 회의가 있다.” → 임베딩 C
- “이 식당은 음식이 맛있다.” → 임베딩 D
- 이제
임베딩 A를 기준으로 보면,임베딩 C와임베딩 D는 완전히 다른 의미의 문장에서 나왔습니다. 따라서(임베딩 A, 임베딩 C)와(임베딩 A, 임베딩 D)는 **부정 쌍(negative pair)**이 됩니다. - 모델은 이 부정 쌍들을 서로 멀리 밀어내도록(유사도를 낮추도록) 학습합니다.
C.3) 필요한 데이터셋의 양은 어느정도인가?
네, 아주 중요한 포인트입니다. 논문에서 가장 강조하는 부분 중 하나가 바로 ‘효율성’입니다. LLM2Vec은 방대한 양의 특수 데이터셋이 아니라, 놀라울 정도로 적고 구하기 쉬운 데이터로 빠르고 효율적인 학습이 가능하다고 말합니다.
결론부터 말씀드리면, 데이터의 ‘양’보다는 ‘학습 단계(step)의 수’가 더 중요하며, 이마저도 매우 적은 횟수로 충분하다고 논문은 보여줍니다.
학습 단계를 비지도와 지도로 나누어 구체적으로 설명해 드리겠습니다.
C.3.1) 비지도 학습 (Unsupervised: MNTP & SimCSE)
비지도 학습의 목표는 모델이 양방향 문맥을 이해하고(MNTP), 문장 전체의 의미를 잘 요약하도록(SimCSE) 만드는 것입니다.
- 사용한 데이터:
- MNTP: Wikitext-103 데이터셋을 사용했습니다. 이는 영문 위키피디아의 일부를 정리해 놓은 공개 데이터셋입니다.
- SimCSE: 영문 위키피디아 문장 100만 개를 사용했습니다. 이 역시 널리 사용되는 공개 데이터입니다.
- 학습 규모 및 시간 (70억~80억 파라미터 모델 기준):
- MNTP: 배치 사이즈 32로 단 1,000 스텝만 훈련했습니다. A100 GPU 1대로 약 100분이 소요되었습니다.
- SimCSE: 배치 사이즈 128로 단 1,000 스텝만 훈련했습니다. A100 GPU 1대로 약 3시간이 소요되었습니다.
- 핵심: 이는 LLM을 처음부터 학습시키는 사전학습(Pre-training)이 수천억 개의 단어와 수개월의 시간을 필요로 하는 것에 비하면 극도로 짧고 효율적인 과정입니다. 이미 방대한 지식을 가진 LLM에게 새로운 ‘스킬’을 가르치는 데는 많은 데이터가 필요 없다는 것을 의미합니다.
C.3.2) 지도 학습 (Supervised Learning)
지도 학습은 특정 목적(예: 검색 성능 극대화)을 위해 정답이 있는 데이터로 모델을 추가 튜닝하는 과정입니다.
- 사용한 데이터:
- 다른 연구(E5, Springer et al.)에서 공개한 데이터셋을 사용했으며, 약 150만 개의 샘플로 구성되어 있습니다.
- 학습 규모:
- 배치 사이즈 512로 단 1,000 스텝만 훈련했습니다.
- 핵심: 여기서도 중요한 것은 1.5M라는 샘플의 절대적인 크기보다, 1,000번의 업데이트만으로도 충분히 최고 성능에 도달했다는 점입니다. 논문의 Figure 6을 보면, LLM2Vec을 미리 적용한 모델은 지도 학습 초반(예: 100~200 스텝)부터 매우 빠르게 성능이 향상되는 것을 볼 수 있습니다. 이를 ‘샘플 효율성(sample-efficiency)‘이 높다고 표현합니다.
C.3.3) 최종 요약: 왜 이렇게 적은 데이터로 효율적인 학습이 가능한가?
LLM2Vec의 효율성은 다음 네 가지 이유로 요약할 수 있습니다.
- 적은 훈련 단계(Few Steps): 단 1,000번의 가중치 업데이트만으로도 모델을 효과적으로 변환할 수 있습니다.
- 접근성 높은 데이터(Accessible Data): 위키피디아와 같은 거대하고 구조화되지 않은 텍스트만으로도 충분히 학습이 가능하며, 비싼 레이블링 데이터가 필요 없습니다.
- 파라미터 효율적 튜닝(Parameter-Efficient Tuning): 논문에서는 LoRA 기법을 사용합니다. 이는 모델의 수십억 개 파라미터 대부분을 그대로 두고, 아주 작은 일부만 학습시키는 기술입니다. 덕분에 적은 GPU 메모리와 시간으로 튜닝이 가능합니다. (“We merge the MNTP LoRA weights into the base model and initialize new LoRA parameters before starting the SimCSE training, which ensures that the models retains the knowledge learned in the previous step.”)
- 새로운 지식 학습이 아님: LLM2Vec은 모델에게 새로운 지식(예: ‘셰익스피어는 작가다’)을 가르치는 것이 아닙니다. 이미 모델이 알고 있는 지식을 새로운 방식(양방향 문맥)으로 표현하고 요약하는 방법을 가르치는 것이기 때문에 적은 훈련으로도 충분합니다.
결론적으로 LLM2Vec은 “많은 데이터와 컴퓨팅 자원을 쏟아부어야만 좋은 모델을 만들 수 있다”는 통념을 깨고, **“최소한의 자원으로 기존 LLM의 숨겨진 잠재력을 효율적으로 끌어낼 수 있다”**는 것을 보여준 중요한 연구입니다.