임베딩
비정형 데이터를 연속적인 벡터 공간에 매핑하는 표현 학습 기법.
— 딥러닝과 자연어 처리 분야의 핵심 기초 개념
문장을 숫자 배열로 바꿨을 뿐인데 갑자기 검색 품질이 좋아지는 마법처럼 보인다. 물론 왜 이 문서가 상위에 떴는지는 아무도 자신 있게 설명하지 못한다. 0.91이면 비슷한 거겠지 하고 배포했다가 고객 문의가 터진다
1. 개요
임베딩(Embedding)은 단어, 문장, 문서, 이미지, 사용자 행동 같은 데이터를 숫자 벡터로 바꾸는 표현 방식이다. 컴퓨터는 “의미가 비슷하다”는 말을 직접 이해하지 못하므로, 데이터를 수백~수천 차원의 좌표로 바꿔 거리나 각도를 계산하게 만든다. 예를 들어 “자동차”와 “차량”은 비슷한 위치에 놓이고, “자동차”와 “바나나”는 멀리 떨어지도록 학습시키는 식이다. 이 개념은 LLM, 추천 시스템, RAG, 벡터 데이터베이스, 이미지 검색 등 현대 AI 시스템 곳곳에 깔려 있다.
2. 의미를 숫자로 바꾸는 방법
임베딩 모델은 대량의 데이터에서 패턴을 학습해 입력을 고정 길이 벡터로 변환한다. 예전에는 단어 단위 임베딩이 중심이었지만, 트랜스포머 이후에는 문장과 문서 전체의 맥락을 반영하는 임베딩이 보편화됐다. 중요한 점은 벡터의 각 숫자 하나하나가 사람이 읽을 수 있는 명확한 의미를 갖는 것은 아니라는 점이다. “첫 번째 차원은 감정, 두 번째 차원은 개발자 분노”처럼 깔끔하게 해석되지 않는다. 대신 전체 벡터의 상대적 위치가 의미를 담는다. 그래서 임베딩은 설명 가능한 사전이라기보다, 기계가 쓰는 압축된 의미 좌표에 가깝다.
3. RAG에서 임베딩이 하는 일
RAG에서는 문서 조각과 사용자 질문을 같은 임베딩 모델로 벡터화한다. 이후 질문 벡터와 가까운 문서 벡터를 벡터 데이터베이스에서 찾아 LLM에 참고 자료로 넣는다. 이때 임베딩 품질이 낮거나 도메인 용어를 제대로 반영하지 못하면 검색 결과가 엉뚱해진다. 특히 회사 내부 약어, 제품명, 코드명처럼 일반 인터넷 말뭉치에는 잘 나오지 않는 표현은 임베딩 모델이 문맥을 잘못 잡기 쉽다. 결국 좋은 RAG는 좋은 임베딩 모델, 적절한 청킹, 메타데이터 필터링, 리랭킹이 함께 맞아야 나온다.
4. 관련 밈 및 드립
4.1. 코사인 유사도 0.99의 배신
숫자로는 거의 같은 의미처럼 보이는데 사람이 읽으면 전혀 다른 문서가 검색되는 상황. 임베딩 검색을 처음 붙인 개발자가 가장 먼저 겪는 신고식이다. 모델은 수학적으로 가까운 이웃을 찾았을 뿐이고, 인간은 “이게 왜?”라는 표정으로 로그를 본다.
4.2. 차원의 저주 관광 코스
벡터 차원이 높아질수록 뭔가 더 똑똑해질 것 같지만, 저장 비용과 검색 비용도 같이 올라간다. 결국 개발자는 정확도와 비용 사이에서 슬라이더를 잡고 “이 정도면 그럴듯하다”는 감으로 타협한다.
5. 여담
- Word2Vec의 유명한 예시: “king - man + woman = queen” 같은 벡터 연산 예시는 임베딩의 상징처럼 널리 퍼졌다. 실제 서비스 품질을 이 예시 하나로 판단하면 큰일 난다.
- 모델을 섞으면 안 된다: 서로 다른 임베딩 모델로 만든 벡터는 같은 좌표계에 있지 않다. 기존 문서를 새 모델로 다시 임베딩하지 않고 질문만 새 모델로 바꾸면 검색 품질이 조용히 망가진다.
- 텍스트만의 기술이 아니다: 이미지를 벡터화하면 유사 이미지 검색이 되고, 사용자 행동을 벡터화하면 추천 시스템이 된다. 임베딩은 AI 서비스의 공통 언어에 가깝다.