텍스트를 숫자로 바꾸는 원리 — Embedding 이해하기
· 컴퓨터는 글자 자체를 이해하지 못해서, 텍스트를 숫자 배열로 바꿔야 다룰 수 있어요.
· 임베딩(Embedding)은 단어·문장의 의미를 숫자 벡터로 표현하는 기술입니다.
· 의미가 비슷한 문장은 벡터도 가까워져서, 검색·추천·RAG의 바탕이 됩니다.
검색창에 "저렴한 노트북"이라고 쳤는데 "가성비 좋은 랩탑" 상품이 딱 나온 적 있으신가요? 글자는 하나도 안 겹치는데 말이죠. 이게 가능한 이유가 바로 임베딩입니다. 오늘은 텍스트를 숫자로 바꾸는 이 원리를 차근차근 정리해 보겠습니다.
🤖 컴퓨터는 글자를 못 읽는다
사람은 "사과"라는 단어를 보면 빨간 과일을 떠올립니다. 하지만 컴퓨터에게 글자는 그저 기호일 뿐, 의미가 담겨 있지 않아요. 컴퓨터가 잘 다루는 건 오직 숫자입니다. 그래서 텍스트를 다루려면 먼저 숫자로 바꿔야 합니다.
가장 단순한 방법은 단어마다 번호를 붙이는 것이지만(사과=1, 배=2…), 이렇게 하면 단어끼리의 의미 관계가 전혀 담기지 않습니다. 1번과 2번이 가깝다는 게 아무 뜻도 없으니까요.
핵심은 단순히 숫자로 바꾸는 게 아니라, 의미를 담은 숫자로 바꾸는 것입니다.
💡 임베딩의 기본 아이디어
임베딩은 단어나 문장을 여러 개의 숫자로 이루어진 벡터로 바꾸는 기술입니다. 예를 들어 "고양이"라는 단어가 [0.8, -0.2, 0.5, ...] 같은 숫자 배열로 표현되는 식이죠. 이 숫자 하나하나는 사람이 직접 정한 게 아니라, 모델이 방대한 텍스트를 학습하면서 스스로 찾아낸 특징입니다.
중요한 건 결과입니다. 임베딩은 의미가 비슷한 단어끼리 벡터도 비슷해지도록 만들어집니다. 그래서 "고양이"와 "강아지"는 서로 가깝고, "고양이"와 "자동차"는 멀리 떨어지게 됩니다.
📐 벡터가 '가깝다'는 것의 의미
벡터를 공간 위의 점이라고 생각하면 이해가 쉽습니다. 지도 위 두 지점의 거리를 재듯이, 두 벡터가 얼마나 가까운지 계산할 수 있어요. 의미가 비슷하면 가깝고, 다르면 멀어집니다.
바로 이 성질 덕분에 "저렴한 노트북"과 "가성비 좋은 랩탑"이 서로 가까운 벡터가 되어, 단어가 달라도 의미로 연결되는 것입니다.
💻 코드로 감 잡기
라이브러리마다 이름은 달라지지만, 개념 뼈대는 이렇습니다.
# 문장을 벡터로 바꾸기
vec_a = embed("저렴한 노트북 추천")
vec_b = embed("가성비 좋은 랩탑")
vec_c = embed("오늘 저녁 메뉴")
# 두 벡터가 얼마나 비슷한지 계산 (1에 가까울수록 유사)
print(similarity(vec_a, vec_b)) # 높게 나옴 (뜻이 비슷)
print(similarity(vec_a, vec_c)) # 낮게 나옴 (뜻이 다름)
포인트는 텍스트 → embed() → 벡터로 바꾼 뒤, 벡터끼리 유사도를 비교한다는 흐름입니다. 임베딩 모델은 이 변환을 담당하는 도구예요.
🚀 어디에 쓰이나
| 활용 분야 | 임베딩이 하는 일 |
|---|---|
| 의미 검색 | 키워드가 안 맞아도 뜻이 비슷한 문서를 찾아줌 |
| 추천 | 비슷한 상품·글·영상을 벡터 거리로 연결 |
| RAG | 질문과 관련된 문서를 찾아 LLM에 함께 전달 |
| 분류·군집 | 비슷한 문장끼리 자동으로 묶기 |
특히 RAG(외부 문서를 찾아 답하는 방식)의 첫 단계가 바로 임베딩입니다. 문서와 질문을 모두 벡터로 바꿔 놓아야, 관련 있는 부분을 빠르게 골라낼 수 있으니까요.
🔧 실무 팁
- 같은 모델로 통일 — 문서와 질문은 반드시 같은 임베딩 모델로 변환해야 비교가 됩니다.
- 차원은 신경 안 써도 됨 — 벡터 숫자 개수(차원)는 모델이 정합니다. 사용자는 결과만 활용하면 돼요.
- 긴 문서는 잘라서 — 너무 긴 텍스트는 적당한 크기로 나눠(청킹) 임베딩하는 게 검색 품질에 좋습니다.
- 저장은 벡터DB에 — 벡터가 많아지면 전용 저장소(벡터 데이터베이스)로 빠르게 검색합니다.
❓ 자주 묻는 질문 (FAQ)
Q. 임베딩 숫자 하나하나가 무슨 뜻인가요?
A. 사람이 해석하기 어렵습니다. 모델이 학습으로 스스로 만든 특징이라, 개별 숫자보다 벡터 전체의 위치·방향이 의미를 가진다고 보면 됩니다.
Q. 임베딩과 토큰은 같은 건가요?
A. 다릅니다. 토큰은 텍스트를 잘게 나눈 조각이고, 임베딩은 그것을 의미를 담은 벡터로 바꾼 결과예요.
Q. 검색에 임베딩을 꼭 써야 하나요?
A. 정확한 단어를 찾는 키워드 검색이면 없어도 됩니다. 하지만 뜻으로 찾는 검색이 필요하다면 임베딩이 핵심 역할을 합니다.
마무리
정리하면, 임베딩은 텍스트를 단순한 번호가 아니라 의미가 담긴 숫자 벡터로 바꾸는 기술입니다. 덕분에 컴퓨터가 "뜻이 비슷한지"를 거리로 계산할 수 있게 되고, 이것이 의미 검색·추천·RAG의 밑바탕이 됩니다. 다음 편에서는 이렇게 만든 벡터를 실제로 저장하고 빠르게 찾아오는 벡터 데이터베이스 이야기로 이어가 보겠습니다.
댓글
댓글 쓰기