쉽게 말하면, 임베딩은 글, 이미지, 사용자 같은 대상을 숫자 목록(벡터)으로 바꾼 것이다. 이 벡터들이 공간에서 놓이는 위치 관계를 뒤따르는 모델이나 비교 규칙이 활용하므로, 벡터끼리 거리를 재어 관련 있는 항목을 찾는 식으로 쓰인다. 다만 두 벡터가 가깝다는 것이 무엇을 뜻하는지는 학습 목표와 데이터, 비교 방식에 따라 달라진다. 그래서 임베딩이 언제나 의미를 담거나, 해석할 수 있거나, 입력보다 차원이 낮거나, 모든 과제에 맞는 것은 아니다.
| 분류 | 머신러닝의 표현 학습 기법 |
|---|---|
| 입력 | 토큰, 문장, 문서, 이미지, 음성 구간, 그래프 노드, 사용자, 항목 등 |
| 출력 | 벡터. 단일 벡터 방식은 보통 R^d의 원소를 돌려줌 |
| 핵심 원리 | 벡터 공간에서의 거리와 방향이 관계를 나타내며, 그 의미는 학습 목표에 따라 달라짐 |
| 주요 비교 방식 | 내적, 코사인 유사도, 유클리드 거리 |
| 관련 기법 | word2vec, GloVe, fastText, ELMo, BERT, Sentence-BERT, SimCSE, CLIP2,3,4,5,6,7,8,9 |
머신러닝에서 임베딩은 입력을 학습된 벡터로 대응시키는 표현이다. 보통 벡터의 기하 구조에 담긴 관계를 뒤따르는 모델이나 비교 규칙이 쓸 수 있도록 만든다. 입력 공간을 X라고 하면 인코더는 다음과 같은 사상으로 쓸 수 있다.
fθ: X arrow Rd.
f_θ(x)가 내놓는 값이 임베딩 벡터이고, 가능한 출력들의 집합을 임베딩 공간이라고 부른다. 대상은 토큰, 문장, 문서, 이미지, 음성 구간, 그래프 노드, 사용자, 항목 등 무엇이든 될 수 있다. 가깝다는 것의 의미는 학습 목표, 데이터, 인코더, 풀링 방식, 정규화, 비교 함수에 따라 달라진다. 따라서 임베딩이 언제나 의미를 담거나, 해석 가능하거나, 입력보다 차원이 낮거나, 모든 과제에 맞는 것은 아니다.
이 글은 임베딩을 표현 학습의 일반적 기법으로 다룬다. 단어 임베딩, 문장과 문서 인코더, 문맥적 토큰 상태, 다중 모달 표현, 호스팅 임베딩 API를 서로 바꿔 쓸 수 있는 것으로 보지 않는다. 이들은 무엇을 부호화하는지, 벡터를 몇 개 돌려주는지, 어떤 유사도 규칙을 기대하는지, 벡터 공간끼리 호환되는지가 서로 다르다.
1. 정의와 범위
임베딩이라는 용어는 정밀도 수준에 따라 여러 방식으로 쓰인다. 엄밀한 수학적 의미에서 임베딩은 단사이면서 구조를 보존하는 사상이다. 머신러닝에서는 느슨하게 쓰여서, 서로 다른 입력이 같은 벡터로 대응될 수 있거나 정보를 일부러 버리는 경우, 출력 차원이 입력 특징 수보다 큰 경우에도 학습된 벡터 표현을 임베딩이라고 부른다. 여기서 중요한 구조는 모델과 목표가 만든 구조이고, 입력의 모든 성질이 보존된다는 보장은 아니다.
고정된 인코더와 설정에서 단일 벡터 임베딩 시스템은 보통 R^d의 원소를 돌려준다. 좌표는 부동소수점이나 양자화된 표현으로 저장될 수 있으며, 개별 좌표는 대체로 안정적인 사람 해석 가능 의미를 갖지 않는다. 모든 벡터에 같은 직교 행렬 Q를 곱하면 다음이 성립하고, 유클리드 거리도 그대로 유지된다.
(Qx)^\mathsf{T}(Qy)=x^\mathsf{T}Q^\mathsf{T}Qy=x^\mathsf{T}y,따라서 기하학적으로 동등한 좌표계가 많고, 같은 비교를 지원할 수 있다. 축 하나를 개념으로 이름 붙이려면 그 해석을 해당 모델과 분석에서 먼저 확정해야 한다.
임베딩 층은 벡터를 얻는 한 방법일 뿐 범주 전체가 아니다. 룩업 층은 이산 식별자 하나마다 학습된 벡터를 연결한다. 인코더 네트워크는 입력으로부터 표현을 계산하므로, 같은 토큰이라도 문맥에 따라 다른 벡터를 낼 수 있다. 어떤 시스템은 입력마다 벡터 하나를, 어떤 것은 토큰이나 패치마다 하나를, 어떤 것은 지연 상호작용을 위해 여러 벡터를 유지한다. 이 출력들을 모두 '임베딩'이라고 부른다고 해서 모양과 쓰임이 같아지지는 않는다.
1.1. 표현 방식의 종류
| 표현 방식 | 전형적 인코딩 대상 | 벡터를 얻는 방법 | 주의할 점 |
|---|---|---|---|
| 룩업 임베딩 | 토큰, 범주, 사용자 ID, 항목 ID | 학습된 행렬에서 행 하나를 고른다 | 보지 못한 식별자는 대체 방법이나 다른 구성이 필요하다 |
| 정적 단어 임베딩 | 단어 유형 또는 부분 단어로 만든 단어 | 말뭉치 수준의 분포 목표로 학습한다 | 같은 단어 유형은 보통 모든 문맥에서 같은 벡터를 받는다 |
| 문맥적 토큰 표현 | 토큰의 출현 | 주변 시퀀스로부터 계산한다 | 문장은 자동으로 문장 벡터 하나가 되지 않고 벡터 열을 낸다 |
| 문장·문서 임베딩 | 텍스트 구간 | 풀링과 구간 비교를 위해 학습되거나 조정된 인코더 | 청킹, 지시문, 풀링에 따라 결과가 달라질 수 있다 |
| 이미지·음성 임베딩 | 미디어 항목이나 구간 | 모달리티별 인코더 | 유사도는 학습에 쓰인 목표와 공간에서만 의미가 있다 |
| 결합 다중 모달 임베딩 | 둘 이상 모달리티의 입력 | 인코더들을 공유 공간에 맞춘다 | 교차 모달 비교 가능성은 차원이 같다고 생기지 않고 학습으로 얻는다 |
| 그래프·개체 임베딩 | 노드, 간선, 개체, 관계 | 그래프 목표가 선택된 이웃이나 관계 패턴을 보존한다 | 그래프 목표마다 보존하는 구조의 개념이 다르다 |
| 다중 벡터 표현 | 한 항목의 토큰 또는 패치 집합 | 인코더가 지역 벡터를 여러 개 유지한다 | 점수 계산에 일반적인 벡터 거리가 아니라 모델의 상호작용 규칙이 필요하다 |
벡터 값을 넓은 자료형으로 보는 내용은 따로 다룬다. 이 글은 학습된 임베딩이 어떻게 만들어지고, 비교되고, 평가되고, 배포되는지에 초점을 맞춘다.
2. 학습 방식
임베딩 목표는 어떤 구분을 보존할지 정한다. 가까운 벡터가 일상 언어의 '비슷하다'는 뜻이어야 한다고 요구하는, 과제와 무관한 규칙은 없다.
2.1. 학습 목표와 기하 구조
예측 목표는 어떤 대상을 예측하는 데 표현이 쓸모 있도록 만든다. 예를 들어 skip-gram 공식화에서는 중심 단어로 그 주변 문맥에 나타나는 단어를 예측한다. 언어 모델은 시퀀스 목표 아래에서 표현으로 토큰을 예측한다. 추천 시스템은 관측된 사용자와 항목의 상호작용을 최적화할 수 있다. 결과 벡터는 그 학습 신호에 쓸모 있는 정보만 보존하면 된다.2,6,10,11
대조 목표는 지정된 양성 쌍과 음성 쌍에서 출발한다. 흔한 예제별 형태는 다음과 같다.
\mathcal{L}_i
=
-\log
\frac{\exp(s(z_i,z_i^+)/\tau)}
{\sum_{j}\exp(s(z_i,z_j)/\tau)},여기서 z_i^+는 앵커 z_i의 양성 짝이고, s는 선택한 점수 함수, τ는 온도 매개변수다. 분모에 들어가는 것은 방법마다 다르다. 같은 배치의 다른 원소, 샘플링한 음성, 기억 구조를 쓸 수 있다. SimCLR은 이 계열의 목표를 이미지의 증강 뷰에 적용했고, SimCSE는 드롭아웃으로 만든 뷰나 라벨이 붙은 자연어 추론 예제로 문장 쌍을 만들었다.8,12
양성과 음성을 만드는 방식도 모델 명세의 일부다. 이미지 크롭은 학습 설정이 같은 대상의 또 다른 뷰로 다룰 때만 그 크롭에 대한 불변성을 가르친다. 관련 문단과 짝지은 질의는 검색 관계를 가르친다. 무작위로 뽑은 '음성'이 실제로는 관련이 있을 수 있는데, 그러면 거짓 음성 학습 신호가 생긴다. 어려운 음성을 찾아 넣으면 학습이 더 잘 구분하도록 만들 수 있지만, 샘플링 출처와 관련성 가정을 함께 보고해야 한다.
지도 학습 목표도 명시적인 대조 손실 없이 임베딩을 만들 수 있다. 분류기의 은닉층, 행렬 분해 모델의 잠재 요인, 더 큰 네트워크 안에서 학습되는 토큰 룩업 표가 모두 임베딩이라고 불릴 수 있다. 이들의 기하 구조는 전체 목표와 규제의 결과이며, 따로 보장된 의미 지도가 아니다.
2.2. 함께 학습되는 룩업 표
이산 입력에 대해 모델은 행렬 E ∈ R^(V×d)를 학습할 수 있다. 여기서 행 E_i는 식별자 i를 나타낸다. 임베딩은 그것을 쓰는 과제에서 기울기를 받는다. 예를 들어 언어 모델에서 단어 표현은 고정된 입력 특징으로 주어지지 않고 확률 모델과 함께 학습될 수 있다. 요슈아 벤지오(Yoshua Bengio) 등의 2003년 신경 확률 언어 모델은 단어마다 분산 표현을 단어 열의 확률 모델과 함께 학습했고, 이로써 관련 있는 표현끼리 통계적 강점을 나눠 쓸 수 있었다.10
같은 메커니즘은 추천 시스템과 범주형 ID를 쓰는 다른 시스템에도 나타난다. 행렬 분해 추천기는 사용자와 항목을 잠재 요인 벡터로 나타낸 뒤, 그 요인으로 상호작용을 예측한다. 요인이 유용한 이유는 지정된 예측 문제를 최적화하기 때문이지, 각 좌표에 보편적인 의미가 있기 때문이 아니다.11
2.3. 단어 분포 목표
word2vec은 국소 문맥에서 단어 벡터를 학습하는 효율적인 연속 백오브워즈와 skip-gram 구조를 도입했다. 후속 논문은 서브샘플링과 음성 샘플링을 설명했고, 구 표현의 구성성을 검토했다. 이 모델들은 벡터의 규칙성을 널리 알리는 데 도움을 줬지만, 정적 단어 유형 벡터는 임베딩 연구의 한 갈래일 뿐이다.2,13
GloVe는 전역 단어-단어 동시 출현 횟수에 가중 최소제곱 모델을 학습시켜, 말뭉치 수준 통계와 벡터 공간 구조를 연결한다. fastText는 단어를 문자 n-gram 벡터의 합으로 나타내므로, 학습 어휘에 없는 일부 단어의 벡터도 만들고 부분 단어의 형태 정보도 활용할 수 있다. 이 목표들은 서로 다른 근거를 보존하므로, 차원이 같다고 해서 벡터를 서로 바꿔 쓸 수는 없다.3,4
2.4. 문맥 표현
ELMo는 깊은 양방향 언어 모델로 각 토큰 표현을 문장 전체의 함수로 만들었다. BERT는 마스크 언어 모델 방식의 사전 학습으로 깊은 양방향 문맥 표현을 학습했다. 두 경우 모두 토큰의 출력은 문맥에 따라 달라진다. 토큰 상태의 원시 열이 자동으로 문장 전체를 잘 나타내는 단일 벡터가 되지는 않는다.5,6
Sentence-BERT는 BERT를 샴 구조와 트리플릿 구조, 명시적 풀링으로 적응시켜, 유사도 비교와 검색에 쓸 고정 크기 문장 벡터를 만들었다. SimCSE는 문장 임베딩에 대조 목표를 썼다. 비지도 변형에서는 드롭아웃 기반 양성 쌍을, 지도 변형에서는 자연어 추론 쌍을 썼다. BERT 문장 벡터를 적응시키지 않은 상태로 살핀 연구는, 시험한 풀링 설정에서 이방성 기하 구조와 낮은 직접 의미 유사도 성능을 확인했다. 그래서 풀링과 목표 선택을 '임베딩'이라는 말 뒤에 숨기지 말고 보고해야 한다.7,8,14
2.5. 대조·다중 모달·그래프 목표
대조 학습은 지정된 양성 쌍의 일치도를 음성 쌍에 비해 높이는 방식으로 표현을 학습한다. 뷰와 증강을 어떻게 고르느냐에 따라 표현이 불변으로 다룰 대상이 정해진다. SimCLR은 시각 자기지도 학습 설정에서, 증강의 조합과 학습되는 투영 헤드가 학습된 표현에 실질적인 영향을 준다는 것을 보였다.12
CLIP은 이미지와 텍스트 쌍으로 이미지 인코더와 텍스트 인코더를 따로 학습시켜, 대응하는 이미지와 설명을 공동 공간에서 비교할 수 있게 했다. ImageBind는 이미지를 연결 기준 모달리티로 써서 여섯 가지 모달리티를 정렬했고, 실험에서 모든 모달리티 쌍이 직접 짝지어진 학습 데이터를 필요로 하지는 않는다는 것을 보였다. 이 결과들은 학습으로 얻은 교차 모달 정렬을 보여 준다. 하지만 임의의 이미지, 텍스트, 음성 모델의 벡터가 같은 공간을 공유한다는 뜻은 아니다.9,15
그래프 임베딩은 선택된 구조적 관계를 부호화한다. TransE는 다중 관계 데이터에서 관계를 개체 벡터 사이의 평행 이동으로 모델링했다. node2vec은 편향된 무작위 걷기 위에서 이웃 보존 목표를 최적화해 노드 표현을 학습했다. 두 목표는 같지 않다. 하나는 라벨이 붙은 관계 삼중항을 겨냥하고, 다른 하나는 네트워크의 이웃을 샘플링한다. 따라서 응용에서는 '그래프 임베딩'이라고만 부르지 말고, 관계 모델과 음성 샘플링 절차를 밝혀야 한다.16,17
3. 기하 구조와 비교
임베딩 모델은 학습에 쓰인 비교 함수나 모델 문서가 명시한 비교 함수와 짝지어야 한다. 흔한 선택지는 내적, 코사인 유사도, 유클리드 거리다.
0이 아닌 벡터 x, y에 대해 코사인 유사도는 다음과 같다.
\operatorname{cos}(x,y)
=
\frac{x^\mathsf{T}y}{\lVert x\rVert_2\lVert y\rVert_2}.유클리드 거리는 다음과 같다.
d_2(x,y)=\lVert x-y\rVert_2.두 벡터의 길이가 모두 1이면 다음이 성립한다.
\lVert x-y\rVert_2^2
=
\lVert x\rVert_2^2+\lVert y\rVert_2^2-2x^\mathsf{T}y
=
2-2x^\mathsf{T}y.따라서 단위 길이로 정규화한 벡터에서는 내적을 최대화하는 것, 코사인 유사도를 최대화하는 것, 유클리드 거리를 최소화하는 것이 같은 순위를 낸다.
OpenAI의 임베딩 FAQ는 API 임베딩의 벡터 길이를 기본적으로 1로 맞추며(L2 normalization), 차원을 줄인 뒤에도 그렇다고 밝혔다. 그래서 이 API 임베딩은 위의 순위 동등성을 갖는다.18
이 결과를 모든 모델에 일반화해서는 안 된다. 일부 모델은 벡터 크기를 쓰고, 자른 뒤 정규화를 요구하며, 다른 점수를 지정하기도 한다.
유사도 점수는 모델, 버전, 과제, 말뭉치마다 보편적인 의미가 없다. 한 분포에서 중복 탐지에 맞는 기준값이 다른 분포의 분류나 검색에서는 실패할 수 있다. 기준값은 의도한 운영 조건을 반영한 보류 데이터에서 골라야 하며, 보고에는 점수 규칙과 정규화 여부를 함께 적어야 한다.
벡터의 차원 수도 이식 가능한 식별자가 아니다. 두 인코더가 모두 768개 숫자를 돌려주더라도 서로 무관한 기하를 부여할 수 있다. 같은 공급자의 버전끼리도 호환되지 않을 수 있다. Google의 현재 문서는 gemini-embedding-001과 gemini-embedding-2가 호환되지 않는 공간에 있어, 이전할 때 기존 데이터를 다시 임베딩해야 한다고 명시한다. 호환성은 모델 공급자가 문서로 밝히거나 정렬 절차가 검증된 경우에만 가정해야 한다.19
4. 풀링, 문맥, 지시문
가변 길이 입력을 벡터 하나로 바꾸려면 설계 선택이 필요하다. 텍스트 인코더는 지정된 토큰을 쓰거나, 토큰 상태에 대한 평균 풀링, 가중 풀링, 학습된 집계 헤드를 쓸 수 있다. 서로 다른 층이 서로 다른 표현을 만들기도 한다. Sentence-BERT는 비교에서 흔한 BERT 풀링을 그대로 쓰면 문장 임베딩이 약하다고 보고했고, 이후 효율적인 문장 수준 비교를 위해 샴 구조를 학습시켰다. 더 일반적인 교훈은 어떤 풀링 규칙이 항상 이긴다는 것이 아니라, 토큰 인코더와 문장 인코더가 서로 다른 문제를 푼다는 것이다.7
토큰화와 문맥 길이 한계는 무엇이 표현되는지에 영향을 준다. 입력이 모델의 한계를 넘으면 인터페이스는 입력을 거부하거나, 잘라 내거나, 청킹을 요구할 수 있다. 청크 경계는 진술과 그 단서, 정의와 용어, 표의 행과 머리글을 갈라놓을 수 있다. 따라서 검색에 쓸 청킹은 영역이 바뀌어도 그대로 옮겨 가는 고정 글자 수가 아니라, 경험적으로 정하는 문서 처리 결정이다.
일부 검색 인코더는 비대칭이다. Dense Passage Retrieval은 질문 인코더와 지문 인코더를 따로 두고 질문-지문 쌍으로 학습해, 최대 내적 검색을 지원했다. 호스팅 서비스는 이 구분을 질의와 문서 입력 유형으로 드러내거나 텍스트 지시문으로 드러낼 수 있다. 예를 들어 Voyage의 현재 인터페이스는 input_type이 query 또는 document일 때 서로 다른 프롬프트를 앞에 붙일 수 있다. 이런 지시문을 생략하거나 바꾸면, 기본 텍스트가 같아도 벡터가 달라질 수 있다.20,21
다중 벡터 시스템은 다른 경우다. ColBERT는 질의와 문서의 토큰을 따로 부호화하고, 비교 전에 문서를 벡터 하나로 줄이지 않고 지연 상호작용 규칙을 쓴다. 항목당 벡터 하나를 위해 만든 저장 또는 검색 구성 요소는, 필요한 지역 표현을 보관하지 않으면 그 점수 규칙을 재현할 수 없다.22
4.1. 부호화 단위 고르기
부호화 단위는 색인이 무엇을 검색할 수 있는지를 정한다. 문서 수준 벡터는 경제적이지만 여러 무관한 주제를 흐릴 수 있다. 문장 수준 벡터는 더 구체적이지만 주변의 정의, 단서, 참조를 잃을 수 있다. 토큰 수준이나 다중 벡터 시스템은 더 세밀한 상호작용을 보존하지만, 저장과 점수 계산 비용이 크다. 일반적으로 옳은 청크 크기는 없다.22
구조화된 자료에서는 가능하면 경계를 자료의 구조에 맞춘다. 제목, 문단, 머리글과 함께 있는 표의 행, 설명과 가까운 코드 블록, 화자의 발화 단위는 고정 길이 분할이 끊어 버리는 관계를 담고 있을 수 있다. 겹침은 경계의 문맥을 일부 보존하지만, 거의 중복된 후보를 만들고 검색 지표를 바꾼다. 선택한 단위는 실제 질의와 관련성 판정으로 평가해야 한다.
긴 입력을 지원한다고 이 결정이 사라지지는 않는다. 문서 전체를 받아들이는 모델은 그 문서에 벡터를 하나 만들 수 있지만, 그 벡터가 작은 사실을 최근접 이웃 검색에 충분히 드러내지 못할 수 있다. 반대로 모든 문장을 나누면 생성기나 리랭커가 필요한 문맥을 잃을 수 있다. 시스템은 흔히 작은 단위를 검색한 뒤 상위 절로 확장하거나 두 번째 단계 리랭커를 쓴다. 그러나 이것은 임베딩 자체의 속성이 아니라 응용의 설계다.
5. 검색과 색인
밀집 임베딩은 정보 검색에서 널리 쓰인다. 이중 인코더는 문서 벡터를 미리 계산해 두고, 질의를 임베딩한 뒤 유사도가 높은 항목을 찾을 수 있다. 이 구조는 질의 시점의 비교를, 모든 질의-문서 쌍에 교차 인코더를 적용하는 것보다 싸게 만든다. 다만 교차 인코더는 더 작은 후보 집합에 대해 여전히 리랭킹을 할 수 있다.
N개의 저장된 벡터가 차원 d를 가질 때, 정확한 선형 탐색은 N번의 유사도를 계산하며 작업량은 Nd에 비례한다. 근사 최근접 이웃 색인은 정확성, 메모리, 구축 시간, 갱신 비용을 맞바꾸어 질의 지연을 낮춘다. HNSW는 층을 이룬 근접 그래프를 만들어 근사 그래프 탐색을 수행한다. 곱 양자화는 벡터를 부분 공간으로 나누고 짧은 코드로 표현해, 저장량을 줄이면서 거리를 근사한다. 두 방법 모두 데이터셋과 매개변수 선택에 따라 고정된 속도 향상이나 정확도 손실을 보장하지 않는다.23,24
벡터 데이터베이스는 벡터와 관련 레코드를 저장하고, 하나 이상의 색인 방법을 제공할 수 있다. 그 자체로 의미 있는 임베딩 공간을 만들지는 않는다. 인코더, 전처리, 거리 규칙, 색인 설정, 필터 동작, 평가 말뭉치가 모두 시스템 품질에 기여한다.
밀집 검색이 어휘 검색보다 어디서나 우월한 것도 아니다. BEIR는 다양한 검색 과제에 걸친 공개 데이터셋 18개를 평가했고, 어휘, 희소, 밀집, 지연 상호작용, 리랭킹 시스템 사이에 상당한 차이가 있음을 확인했다. 토큰 일치와 학습된 유사도는 서로 다른 방식으로 실패하므로 하이브리드 검색이 유용할 수 있다. 검색은 k에서의 재현율, k에서의 정밀도, 평균 역순위, 정규화 할인 누적 이득처럼 과제에 맞는 지표로 평가하고, 이어서 소비 응용 전체에서 끝까지 평가해야 한다.25
밀집 인코더와 어휘 시스템은 서로 다른 실패 양상을 보인다. 밀집 인코더는 단어를 거의 공유하지 않는 바꿔 쓰기를 연결할 수 있지만, Dense Passage Retrieval 설정에서 보였듯이 정확한 식별자, 희귀한 이름, 숫자, 분포 밖 용어를 놓칠 수 있다. 어휘 시스템은 정확한 토큰 근거를 보존하지만 바꿔 쓰기를 놓칠 수 있다. 필터는 벡터 탐색 전이나 도중에 후보 집합을 바꿀 수 있으므로, 필터링 후 재현율은 필터 없는 테스트에서 추정하지 말고 직접 측정해야 한다.20,25
근사 탐색은 재현율의 두 번째 의미를 추가한다. 같은 벡터 점수에서 정확한 탐색이 돌려줬을 이웃을 색인이 돌려줬는지가 그것이다. 이 ANN 재현율은 결과가 사람이나 과제별 판정을 만족하는지를 묻는 관련성 재현율과 다르다. ANN 재현율이 높아도 약한 인코더를 고치지 못하며, 강한 인코더도 지나치게 공격적인 색인 설정 때문에 손상될 수 있다.
검색 증강 생성에서 임베딩은 생성 모델에 비매개변수 문맥을 고르는 데 쓰일 수 있다. 원래 RAG 연구는 시퀀스 대 시퀀스 모델과 위키백과의 밀집 벡터 색인을 결합했다. 검색 결과가 출처가 옳다거나, 생성기가 그것을 충실하게 쓴다거나, 답이 그것에 함의된다는 것을 보장하지는 않는다. 근거성과 인용 품질은 별도로 확인해야 한다.26
6. 차원, 저장, 압축
임베딩 차원 d는 용량과 시스템 매개변수이지 보편적인 품질 척도가 아니다. 차원이 높은 벡터는 저장과 비교 작업을 더 쓰지만, 특정 과제를 개선할 수도 있고 그렇지 않을 수도 있다. 384에서 768차원 같은 범위가 모든 응용에 최적이라는 보편적 주장을 뒷받침하는 근거는 없다.
N개의 압축되지 않은 float32 벡터에 대한 원시 벡터 저장량은 다음과 같다.
bytes=N × d × 4.
따라서 768차원 float32 벡터 100만 개는 색인 구조, 식별자, 메타데이터, 복제본, 할당기 오버헤드 이전에 3,072,000,000바이트, 약 2.861GiB가 필요하다. 이 계산은 용량 추정이며, 특정 데이터베이스나 호스팅 서비스의 견적이 아니다.
주성분 분석을 포함한 차원 축소는 기존 벡터를 압축할 수 있지만, 변환된 표현은 대상 과제에서 따로 평가해야 한다. 반면 Matryoshka Representation Learning은 거친 것에서 세밀한 것으로 가는 접두 표현을 학습해, 선택한 앞쪽 차원을 여러 길이에서 쓸 수 있게 한다. 원 논문은 자체 실험 설정에서 큰 저장 및 검색 이득을 보고했지만, 그 수치가 임의의 모델이나 데이터에 대한 보장은 아니다. 접두 용도로 학습되지 않은 일반 임베딩을 자르면 효과가 다를 수 있다.27
양자화는 각 성분을 저장할 때 쓰는 정밀도를 줄인다. int8 값은 성분당 1바이트가 필요하고, 비트로 묶은 이진 표현은 성분당 1비트가 필요하다(보조 데이터 제외). 이 폭은 float32 대비 원시 값 크기를 각각 4분의 1, 32분의 1로 줄인다. 양자화 후 검색 품질은 모델, 말뭉치, 점수, 색인에 따라 달라진다. 보편적인 품질 저하 비율로 나타내지 말고 끝까지 측정해야 한다.
7. 응용
- 검색과 탐색: 질의를 문서, 구절, 이미지, 그 밖의 색인 대상과 비교한다.
- 추천: 사용자, 항목, 상호작용을 잠재 공간에서 나타낸다. 행렬 분해 시스템은 초기의, 지금도 영향력 있는 예다.
- 분류: 고정되거나 조정된 표현 위에서 분류기를 학습한다.
- 군집화: 벡터를 묶되, 군집이 거리 지표, 스케일링, 알고리즘에 따라 달라진다는 점을 기억한다.
- 중복 및 이상 탐지: 보정된 규칙을 써서 벡터를 예시나 기준 분포와 비교한다.
- 교차 모달 매칭: 인코더가 공동 공간으로 학습된 경우 텍스트로 이미지를 찾거나 다른 모달리티를 비교한다.
- 그래프 예측: 노드, 개체, 관계 벡터를 링크 예측이나 노드 수준 과제에 쓴다.9,11,15,16,17
임베딩은 중간 표현이지 완전한 응용이 아니다. 검색 시스템에는 말뭉치, 관련성 정의, 색인, 필터, 평가도 필요하다. 추천기는 상호작용 목표와 신규 사용자 및 항목에 대한 정책이 필요하다. 분류기에는 라벨과 결정 규칙이 필요하다. 임베딩 모델의 이름이나 차원만으로 성능을 추정할 수는 없다.
8. 평가와 모델 선택
모델 선택은 의도한 과제와 배치 제약을 따라야 한다. 원래 MTEB 벤치마크 논문은 텍스트 임베딩 과제 8개, 데이터셋 58개, 언어 112개를 다뤘고, 평가한 어떤 방법도 모든 과제를 압도하지 않았다고 보고했다. BEIR는 이질적인 데이터셋 18개에 걸친 제로샷 정보 검색에 초점을 맞췄다. 두 결과 모두 하나의 총합 리더보드 점수만으로 모델을 고르는 것에 반대한다.25,28
유용한 평가 차원은 다음과 같다.
| 사용 목적 | 주요 측정 | 추가 점검 |
|---|---|---|
| 검색 | k에서의 재현율, MRR, nDCG, k에서의 정밀도 | 지연 시간, 색인 메모리, 필터, 도메인과 언어 구간 |
| 유사도 | 판정된 유사도와의 순위 또는 선형 상관 | 보정, 바꿔 쓰기와 어려운 음성 구간 |
| 분류 | 정확도, F1, 적절한 곡선 아래 면적 또는 정밀도-재현율 | 클래스 불균형, 보정, 분포 이동 |
| 군집화 | 과제별 외부 지표 또는 안정성 분석 | 정규화, 거리, 군집 수에 대한 민감도 |
| 추천 | 시간순 보류 데이터에서의 순위 또는 효용 지표 | 콜드 스타트 동작, 노출, 피드백 루프 |
| 교차 모달 검색 | 각 검색 방향의 재현율 | 모달리티 균형과 실패 구간 |
끝까지 비교할 때는 측정하려는 변경이 아니라면 전처리, 청킹, 과제 지시문, 출력 차원, 정규화, 거리, 양자화, 색인 매개변수, 리랭커 정책을 고정해야 한다. 또한 모델 추론 시간과 색인 탐색 시간을 구분하고, 모델이 바뀔 때 말뭉치를 다시 임베딩하는 비용을 포함해야 한다.
8.1. 재현성 기록
재현 가능한 임베딩 실험은 다음을 밝혀야 한다.
- 정확한 모델 식별자, 개정판, 가중치, 토크나이저, 추론 라이브러리
- 부호화 단위와 파싱, 정제, 잘라내기, 청킹, 겹침 처리
- 과제 지시문, 입력 유형, 풀링 규칙, 선택한 층, 출력 차원
- 벡터를 정규화했는지, 잘랐는지, 변환했는지, 양자화했는지
- 유사도 규칙과 점수 기준값
- 색인 알고리즘, 구축 매개변수, 질의 매개변수, 필터, 리랭커
- 평가 데이터, 관련성 판정, 지표, 난수 시드, 하드웨어
- 실패, 빈 입력, 중복, 지원되지 않는 언어나 모달리티의 처리
API를 쓸 때는 요청 매개변수와 평가 날짜가 중요하다. 고정되지 않은 식별자는 동작을 바꿀 수 있기 때문이다. 로컬 모델의 경우 커밋이나 변하지 않는 개정판 없이 저장소 이름만 적으면 부족할 수 있다. 벡터 모음마다 설정을 기록해 두면 실수로 섞이는 것을 막을 수 있고, 나중의 재임베딩을 감사할 수 있다.
8.2. 호스팅 인터페이스 스냅샷
다음은 2026년 7월 28일 공식 문서를 확인한 작은 스냅샷이다. 전체 목록이 아니며, 모델 식별자, 한도, 기본값은 바뀔 수 있는 제품 정보다.18,19,21,29,30
| 제공자 인터페이스 | 문서화된 모델 또는 계열 | 입력 범위 | 문서화된 출력 설정 |
|---|---|---|---|
| OpenAI 임베딩 API | text-embedding-3-small, text-embedding-3-large | 텍스트 | 큰 모델은 최대 3,072차원이며, v3 모델은 dimensions 축소 매개변수를 지원한다18,29 |
| Google Gemini API | gemini-embedding-2 | 텍스트, 이미지, 영상, 음성, PDF(모달리티별로 문서화된 한도 내) | 128에서 3,072차원까지 조정 가능. 현재 문서는 768, 1,536, 3,072차원을 권장하며, 전체 입력 한도는 8,192토큰이다19 |
| Cohere Embed API | embed-v4.0 | 텍스트, 이미지, 텍스트-이미지 혼합 입력(PDF 등) | 256, 512, 1,024, 1,536차원. 기본값은 1,536으로 문서화되어 있고, 현재 모델 표에서 컨텍스트는 128k다30 |
| Voyage 텍스트 임베딩 API | voyage-4-large, voyage-4, voyage-4-lite | 텍스트 | 기본 컨텍스트 32,000토큰, 기본 1,024차원. 256, 512, 2,048차원도 문서화되어 있다. 제공자는 Voyage 4 계열 임베딩이 서로 호환된다고 밝혔다21 |
이 표는 통제된 품질 비교가 아니라 인터페이스 정보다. 표의 항목은 OpenAI, Google, Cohere와 Voyage의 인터페이스이며, 제공자의 벤치마크 주장은 서로 다른 모델, 데이터셋, 조건을 쓴다. 가격은 기반 표현과 별도로 바뀌므로 의도적으로 뺐다.
9. 한계와 위험
높은 유사도는 모델이 벡터들을 학습 목표 아래 가까이 놓았다는 뜻일 뿐이다. 사실의 진실성, 논리적 함의, 인과, 동일성을 확인해 주지는 않는다. 모델은 흔한 오개념 두 개를 가까이 놓거나, 드문 바꿔 쓰기를 떨어뜨리거나, 주제는 맞지만 답하지 않는 구절을 검색할 수 있다. 하위 시스템은 실제로 필요한 속성을 따로 확인해야 한다.
9.1. 편향과 고르지 않은 성능
임베딩은 학습 데이터의 연관을 반영할 수 있으며, 이것이 편향으로 나타날 수 있다. Bolukbasi 등은 Google News로 학습한 단어 임베딩에서 성별 고정관념을 보였고, 측정된 편향을 줄이는 후처리 방법을 제안했다. 이후 Gonen과 Goldberg는 두 가지 편향 제거 방법에서, 목표 지표를 줄인 뒤에도 이웃 구조에 성별 정보가 복원 가능하게 남을 수 있음을 보였다. 이 연구들은 모든 임베딩이 같은 편향을 가진다는 뜻은 아니지만, 단일 내재 점수가 공정성의 증거가 아님을 보여 준다.31,32
평가에는 관련 집단, 언어, 도메인, 실패 비용을 포함해야 한다. 완화 주장은 측정한 속성, 위협 모델, 데이터, 하위 효과를 밝혀야 한다.
9.2. 프라이버시와 역변환
벡터는 사람이 읽을 수 없다고 해서 개인정보 측면에서 자동으로 익명화되는 것이 아니다. Morris 등은 역변환 모델을 학습시켰고, 실험 설정에서 두 텍스트 임베딩 모델에 대해 시험한 32토큰 입력의 92퍼센트를 정확히 복원했다. 임베딩된 임상 노트에서는 전체 이름을 복구했다. 이 수치는 그들의 모델, 데이터, 접근 가정, 공격에 한정된다. 더 넓은 결론은 임베딩이 민감 정보를 보존할 수 있으니, 원천 데이터의 민감도에 따라 보호해야 한다는 것이다.33
접근 제어, 보존 규칙, 암호화, 로깅, 삭제 절차는 원천 레코드와 파생 벡터를 모두 포함해야 한다. 벡터를 공개하면, 정확한 입력 복원이 성공하지 않더라도 소속 여부, 속성, 관계가 드러날 수 있다.
9.3. 비호환과 압축 오류
벡터는 모델, 개정판, 토크나이저, 풀링, 과제 지시문, 차원, 정규화, 전처리가 바뀌면 달라질 수 있다. 데이터베이스가 좌표계가 맞는지 모르고 길이가 같은 배열을 받아들이면, 비호환 벡터가 섞여 검색 품질이 조용히 떨어질 수 있다. 운영 색인은 전체 임베딩 설정을 기록하고, 벡터를 다시 만들거나 의도적으로 정렬하는 이전 계획을 두어야 한다.
축소, 양자화, 근사 색인은 표현이나 탐색 절차를 바꾼다. 그 오류는 서로 상호작용할 수 있다. 모델이 한 가지 변경 뒤에는 정확하더라도 여러 변경이 겹치면 정확하지 않을 수 있다. 보고된 품질은 압축 전 인코더만이 아니라, 리랭커를 포함한 실제 배포 파이프라인 전체를 설명해야 한다.
10. 실무 점검표
임베딩 파이프라인을 배포하기 전에 확인할 항목은 다음과 같다.
- 1. 부호화 단위와 목표 판단을 정한다. 항목이 토큰, 구간, 문서, 미디어 구간, 개체, 사용자, 상품 중 무엇인지 밝힌다.
- 2. 인코더, 개정판, 토크나이저, 풀링 규칙, 과제 지시문, 출력 차원, 출력 형식, 정규화, 거리 함수를 고정한다.
- 3. 의도한 도메인, 언어 구성, 시간 범위, 어려운 음성을 반영해 평가 데이터를 만든다.
- 4. 해당하는 경우 어휘, 밀집, 하이브리드, 리랭크 검색을 비교하고, 어느 한 구조가 이길 것이라고 가정하지 않는다.
- 5. 계획한 색인 규모에서 끝까지의 품질과 시스템 동작을 측정한다.
- 6. 자르기, 양자화, ANN 설정을 최종 점수 규칙과 함께 테스트한다.
- 7. 민감 데이터 노출, 접근 제어, 삭제, 알려진 공격 가정을 평가한다.
- 8. 관련 구간 전반에서 성능과 해로운 연관을 감사한다.
- 9. 저장 벡터에 버전을 매기고, 배열 길이에만 의존하지 않고 비호환 쓰기를 거부한다.
- 10. 모델이나 설정을 바꾸기 전에 말뭉치 재임베딩과 롤백을 계획한다.
출처 33개
- AI Wiki: Embeddings (2026-07-29 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-10-13
- Efficient Estimation of Word Representations in Vector Space arxiv.org · 확인 2026-10-13
- GloVe: Global Vectors for Word Representation aclanthology.org · 확인 2026-10-13
- Enriching Word Vectors with Subword Information aclanthology.org · 확인 2026-10-13
- Deep Contextualized Word Representations aclanthology.org · 확인 2026-10-13
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding aclanthology.org · 확인 2026-10-13
- Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks aclanthology.org · 확인 2026-10-13
- SimCSE: Simple Contrastive Learning of Sentence Embeddings aclanthology.org · 확인 2026-10-13
- Learning Transferable Visual Models From Natural Language Supervision proceedings.mlr.press · 확인 2026-10-13
- A Neural Probabilistic Language Model jmlr.org · 확인 2026-10-13
- Matrix Factorization Techniques for Recommender Systems doi.org · 확인 2026-10-13
- A Simple Framework for Contrastive Learning of Visual Representations proceedings.mlr.press · 확인 2026-10-13
- Distributed Representations of Words and Phrases and their Compositionality proceedings.neurips.cc · 확인 2026-10-13
- On the Sentence Embeddings from Pre-trained Language Models aclanthology.org · 확인 2026-10-13
- ImageBind: One Embedding Space To Bind Them All openaccess.thecvf.com · 확인 2026-10-13
- Translating Embeddings for Modeling Multi-relational Data proceedings.neurips.cc · 확인 2026-10-13
- node2vec: Scalable Feature Learning for Networks doi.org · 확인 2026-10-13
- Embeddings FAQ help.openai.com · 확인 2026-10-13
- Embeddings: Gemini API ai.google.dev · 확인 2026-10-13
- Dense Passage Retrieval for Open-Domain Question Answering aclanthology.org · 확인 2026-10-13
- Text Embeddings docs.voyageai.com · 확인 2026-10-13
- ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT doi.org · 확인 2026-10-13
- Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs arxiv.org · 확인 2026-10-13
- Product Quantization for Nearest Neighbor Search doi.org · 확인 2026-10-13
- BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models openreview.net · 확인 2026-10-13
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks proceedings.neurips.cc · 확인 2026-10-13
- Matryoshka Representation Learning proceedings.neurips.cc · 확인 2026-10-13
- MTEB: Massive Text Embedding Benchmark aclanthology.org · 확인 2026-10-13
- New embedding models and API updates openai.com · 확인 2026-10-13
- Cohere's Embed Models docs.cohere.com · 확인 2026-10-13
- Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings proceedings.neurips.cc · 확인 2026-10-13
- Lipstick on a Pig: Debiasing Methods Cover up Systematic Gender Biases in Word Embeddings But do not Remove Them aclanthology.org · 확인 2026-10-13
- Text Embeddings Reveal (Almost) As Much As Text aclanthology.org · 확인 2026-10-13