huny.log

기술 포스트 · AI·LLM

임베딩이란 뭔가 — 단어가 숫자가 되는 자리, 마케터를 위한 직관

"임베딩"이라는 단어가 자주 나오는데 정확히 뭔지 한 번도 안 들여다보면 RAG·추천·검색이 늘 신비로 남습니다. 단어·문장·이미지가 어떻게 숫자 벡터가 되고 그 벡터로 무엇을 할 수 있는지 — 마케터가 LLM·추천·검색을 이해하는 두 번째 기초 체력.

“임베딩으로 검색하면 더 똑똑해져요”의 자리는 RAG·추천·이미지 검색·세그멘테이션에 늘 등장합니다. 그런데 “임베딩이 정확히 뭐냐”의 답이 한 번도 정리 안 되면 그 도구들이 신비로 남습니다. 답이 좋을 땐 운이 좋고, 나쁠 땐 왜 그런지 모릅니다. 이 글은 단어·문장·이미지가 어떻게 숫자 벡터가 되고, 그 벡터로 무엇을 할 수 있는지를 마케터 시각으로 풀어냅니다.

1. 임베딩의 한 줄 직관

임베딩의 한 줄 정의:

텍스트(또는 이미지·유저·상품)를 의미를 담은 숫자 벡터로 바꾼다.

“광고 카피”라는 단어를 임베딩하면 1024개 정도의 숫자 — 예: [0.12, -0.34, 0.78, …]. 이 숫자 벡터에 두 가지 성질이 들어 있습니다.

  • 의미 비슷한 단어는 비슷한 벡터 — “광고 카피”와 “광고 문구”는 가까운 벡터
  • 의미 다른 단어는 먼 벡터 — “광고 카피”와 “재무제표”는 먼 벡터

이 성질이 왜 중요한지는 단순합니다. 컴퓨터는 텍스트의 의미를 직접 비교 못 합니다. 하지만 벡터의 거리는 비교할 수 있습니다. 텍스트를 벡터로 바꾸면 컴퓨터가 의미를 거리로 다룰 수 있게 됩니다.

단어가 다차원 벡터로 매핑되어 의미가 가까운 단어가 가까운 위치에 놓이는 임베딩 공간 다이어그램
비슷한 의미의 단어는 비슷한 벡터. 다른 의미는 먼 벡터. 이 한 가지 성질이 검색·추천·RAG의 토대다.

2. 어떻게 의미가 벡터에 담기나

임베딩 모델이 학습하는 한 줄 원칙:

같은 문맥에 자주 나오는 단어들은 같은 의미를 가진다 (distributional hypothesis).

“왕”과 “여왕”이 비슷한 문맥(궁궐·왕좌·통치)에서 자주 나오면 비슷한 의미. 임베딩 모델은 수억 개의 텍스트를 보고 각 단어의 문맥 패턴을 학습. 결과적으로 비슷한 문맥 패턴의 단어는 가까운 벡터.

유명한 예시: word2vec(Mikolov et al. 2013)에서

벡터 연산이 의미 관계를 그대로 따라간다. 학습된 벡터 공간에서 “왕에서 남자성을 빼고 여자성을 더하면 여왕”이 수학적으로 성립.

마케팅 자리에서 비슷한 패턴:

벡터의 산술이 의미의 산술을 따라가는 자리. 운영자가 직접 쓰는 일은 적지만 임베딩 공간이 의미를 어떻게 다루는지의 직관이 됨.

3. 임베딩의 차원 — 왜 1024개인가

“단어 하나가 1024개 숫자”는 처음 보면 과해 보입니다. 왜 그렇게 많은 차원이 필요한가.

직관적 답: 의미는 한 축이 아니라 여러 축에 동시에 있습니다.

“광고 카피”라는 단어의 의미 축들:

  • 비즈니스 도메인 (광고·마케팅)
  • 텍스트 형식 (짧음, 직접적)
  • 작성 주체 (마케터·카피라이터)
  • 목적 (전환·인지)
  • 톤 (친근·신뢰)
  • … (수백 개의 미세한 의미 축)

이 모든 축을 동시에 표현하려면 다차원이 필요. 1024차원이면 1024개의 의미 축. 차원이 작으면 표현력이 떨어지고, 너무 크면 학습·저장·검색 비용 폭증.

운영 표준은 다음 정도:

모델차원특징
BGE-small384가벼움, 일반 검색
OpenAI text-3-small1536 (축소 가능)일반 운영 표준
OpenAI text-3-large3072정확도 높음
Voyage 38192최고 정확도

임베딩 운영 글에서 차원 선택의 trade-off를 더 자세히.

4. 거리와 유사도 — cosine similarity가 가장 흔한 이유

벡터 두 개의 “비슷함”은 거리로 측정합니다. 가장 흔한 도구는 cosine similarity:

두 벡터의 각도. 1에 가까우면 같은 방향(매우 유사), 0이면 직각(무관), -1이면 반대 방향(반대 의미).

운영 자리의 직관:

  • cos > 0.9 — 매우 유사 (거의 같은 의미·중복)
  • cos 0.7~0.9 — 유사 (관련 주제·동일 카테고리)
  • cos 0.5~0.7 — 약간 유사 (느슨한 관련)
  • cos < 0.5 — 무관 또는 반대

마케팅 자리에 적용:

  • 광고 카피 중복 검출 — cos > 0.92면 중복
  • FAQ 매칭 — cos > 0.7이면 매칭
  • 추천 시스템 — top-k 가장 cos 큰 상품들

다른 거리 metric(dot product·Euclidean)도 있지만 운영 표준은 cosine. 임베딩 운영 글에서 metric 선택을 더.

5. 임베딩이 마케팅에 들어오는 4가지 자리

키워드 매칭 대신 의미 매칭. “광고비 환불”로 검색하면 “환불 정책”·“비용 환급” 같은 동의어 문서까지 찾음. 키워드 검색의 한계를 풀어냄.

5-2. 추천 (Recommendation)

상품·콘텐츠 임베딩 + 유저 임베딩. 두 벡터의 cos similarity 큰 자리가 추천 후보. 유저가 본 상품의 임베딩 평균이 유저의 관심 임베딩.

5-3. 클러스터링·세그멘테이션

비슷한 임베딩끼리 묶어 자동 세그먼트. 광고 카피 100개를 임베딩 유사도로 묶으면 5~10개 클러스터 — 같은 메시지의 변형끼리 자동 그룹.

5-4. RAG (Retrieval-Augmented Generation)

질문을 임베딩하고, 비슷한 문서를 임베딩 검색으로 찾고, LLM에 그 문서를 컨텍스트로 줘서 답 생성. 회사 내부 위키·FAQ 챗봇의 표준 아키텍처.

from openai import OpenAI
client = OpenAI()
def embed(texts):
r = client.embeddings.create(model='text-embedding-3-small', input=texts)
return [d.embedding for d in r.data]
vecs = embed(['광고 카피', '광고 문구', '재무제표'])
# vecs[0]·vecs[1]은 유사, vecs[0]·vecs[2]는 다름

이게 본문에 박는 유일한 코드입니다. OpenAI 임베딩 한 줄로 텍스트 → 벡터.

6. 임베딩이 못 하는 것

임베딩이 마법은 아닙니다. 못 하는 자리도 명확합니다.

6-1. 추론

“광고 카피 5개를 만들어줘” 같은 생성·추론은 임베딩이 못 함. 임베딩은 정적 벡터. 답을 만들려면 LLM이 필요.

6-2. 미세한 사실 차이

“매출 100원”과 “매출 100만원”은 거의 같은 임베딩일 수 있음. 임베딩은 의미·맥락에 강하고 정확한 숫자에 약함.

6-3. 도메인 특화 새 단어

학습 시점에 없던 신조어·신규 카테고리는 임베딩 정확도가 떨어짐. drift 문제 — 임베딩 운영 글 참조.

7. 마케팅 실무 적용

7-1. 광고 카피 중복 제거

LLM이 100개 카피 생성 → 임베딩 → cos > 0.92 묶어 30개로. 다양성 보장하면서 중복 제거.

7-2. FAQ 매칭

고객 문의를 임베딩 → FAQ DB의 가장 cos 높은 자리. 0.7 이상 자동 응답, 0.5~0.7 사람 보조.

7-3. 신규 가입자 cold start

가입 시 받은 관심사 텍스트 임베딩 + 상품 설명 임베딩. cos similarity 높은 상품 추천. 행동 이력 없이도 첫 추천 가능.

8. 임베딩에 익숙해지면 보이는 것

임베딩이 익숙해지면 다음 글들이 다르게 읽힙니다.

이 글들의 도구들이 모두 “텍스트를 의미를 담은 숫자로 바꿀 수 있다”는 한 가지 성질 위에서 작동합니다.

9. 마치며 — 임베딩은 의미의 좌표

마케팅 자리에 LLM이 들어오는 속도가 빨라졌습니다. 임베딩은 그 LLM 도구들이 의미를 다루는 가장 기본 토대입니다. 임베딩의 직관이 잡혀 있으면 검색·추천·RAG·세그멘테이션이 어떻게 작동하는지 자연스럽게 보입니다.

텍스트 → 벡터, 벡터의 거리 = 의미의 거리. 이 한 줄.

다음 글에서는 같은 자리의 또 다른 기초 — 트랜스포머 직관을 다룹니다. attention이 무엇이고 왜 LLM의 핵심 메커니즘이 되었는지.

참고

AI·LLM 카테고리의 다른 글

전체 보기 →