결론부터 말하면, 반대 의미의 단어일지라도 비슷한 공간에 위치한다.

“의미적으로 반대인데, 벡터 공간에서는 이웃이다”


들어가며

LLM 임베딩을 분석하다 보면 자주 마주치는 장면이 있다.

  • 남자 ↔ 여자
  • 기혼 ↔ 미혼
  • 구매 ↔ 미구매
  • 찬성 ↔ 반대

의미적으로는 정반대인데, 코사인 유사도는 surprisingly 높다.

“이거 임베딩이 잘못된 거 아닌가요?”

아니다. 오히려 LLM 임베딩의 ‘특성’에 가깝다.


핵심 요약 (한 줄)

LLM 임베딩은 ‘의미의 방향’보다 ‘맥락의 공유’를 더 강하게 반영한다.


1.LLM은 ‘차이’보다 ‘공통 맥락’을 먼저 배운다

LLM은 다음과 같은 데이터로 학습된다.

  • 문서
  • 대화
  • 질문–답변
  • 비교 문장

이때 반대 개념은 항상 같은 문맥에서 함께 등장한다.

예시:

  • “남성과 여성의 소비 패턴 차이”
  • “기혼자와 미혼자의 라이프스타일 비교”
  • “찬성과 반대 의견이 대립했다”

모델 입장에서는

남자, 여자, 기혼, 미혼, 찬성, 반대

이 단어들은

‘같은 토픽, 같은 문장 구조, 같은 질문’에 묶인 단어들이다.


2.임베딩 공간은 ‘축(axis)’이 아니라 ‘영역(region)’이다

우리는 종종 이렇게 기대한다.

←──────── 반대 ────────→

하지만 실제 LLM 임베딩 공간은 이렇다.

  • 개념은 선(line) 이 아니라 덩어리(region) 로 존재
  • 반대 개념은 같은 영역의 서로 다른 방향 성분

즉,

  • 기혼과 미혼은→ “결혼 상태”라는 같은 의미 영역에 속함
  • 방향은 다르지만, 원점에서의 각도는 작을 수 있다

이것이 코사인 유사도가 높아지는 이유


3.LLM 임베딩은 ‘분류용’이 아니라 ‘이해용’이다

LLM 임베딩의 목적은 이것이다.

“이 입력은 어떤 주제/맥락에 속하는가?

(X) “이 둘을 명확히 구분해라”

(O) “이 둘이 무엇에 관한 이야기인가?”

그래서 모델은 이렇게 판단한다.

  • 남자 vs 여자 → 성별 이야기
  • 찬성 vs 반대 → 의견 대립
  • 구매 vs 미구매 → 구매 의사

상위 의미(latent topic)가 동일하면 가깝다


4. 행동·고객 임베딩에서 특히 더 가까워진다

행동 시퀀스를 생각해보자.

A: 냉장고 검색 → 가격 비교 → 구매
B: 냉장고 검색 → 가격 비교 → 미구매

차이는 마지막 한 행동뿐이다.

임베딩 관점에서는:

  • 전체 시퀀스의 80~90%는 동일
  • 따라서 벡터도 매우 유사

→ 구매 고객과 비구매 고객 임베딩이 가깝게 나오는 것은 자연스러운 결과


5.“그럼 반대 개념은 어떻게 구분하나?”

중요한 실무 질문이다.

방법 1. 방향 벡터 사용 (Difference Vector)

v(결혼) = v(기혼) - v(미혼)
v(구매의사) = v(구매) - v(미구매)

의미 축(axis)을 먼저 추출

  • 각 임베딩을 이 축에 projection

→ 상대적 위치로 해석


방법 2. 분류 헤드 추가 (Downstream Task)

  • 임베딩은 그대로 두고
  • 얕은 분류 모델로 분리

임베딩 자체를 바꾸려 하지 않는 게 중요


6.흔한 오해 정리

(X) “반대 개념이 가까우면 임베딩이 잘못됐다”

(X) “코사인 유사도가 높으면 같은 의미다”

(O) “가깝다 = 같은 맥락안에 있다”

(O) “구분은 속성축을 생성한 후 프로젝션해보거나, downstream task를 통해 구별 한다”


실무 체크포인트

  • 반대 개념이 가까운가? → 정상
  • 완전히 무관한 개념도 가까운가? → 이러면 문제
  • downstream task에서 분리가 되는가? → 가장 중요

마치며

LLM 임베딩은 논리의 벡터가 아니라 이해의 지형도다.

반대 의미가 가깝다는 것은

모델이 “헷갈렸다”는 뜻이 아니라,

“이 둘은 같은 질문에 대한 다른 답이다”

라고 이해했다는 신호다.

[Embedding] 3. 반대 의미의 단어는 LLM 임베딩에서 어떻게 표현될까?