임베딩
vector embedding · vector representation
한 줄로
임베딩은 텍스트·이미지·오디오를 나타내기 위해 모델이 만들어내는 고정 길이 숫자 벡터다. 의미가 비슷한 항목이 그 벡터 공간에서 가까이 놓이며, 이 성질이 의미 기반 검색·군집화·추천을 가능하게 한다.
임베딩 모델은 텍스트를 읽고 벡터를 내놓는다. 보통 수백에서 수천 개의 숫자다. 그 공간에서의 거리가 의미의 유사도를 근사하므로, "구독을 취소하고 싶어요"가 "요금제를 어떻게 끝내나요"와 가까이 놓인다. 겹치는 단어가 거의 없는데도.
이 성질이 의미 기반 검색, 중복 제거, 군집화, 최근접 이웃 분류, 그리고 RAG의 검색 절반을 굴리는 엔진이다.
실무적으로 네 가지.
- 벡터 공간은 모델 전용이다. 다른 모델의 임베딩끼리는 비교할 수 없고, 모델을 바꾸면 전부 다시 만들어야 한다.
- 청크 크기가 품질을 좌우한다. 너무 크면 신호가 희석되고, 너무 작으면 주변 맥락을 잃는다. 글자 수보다 문서 구조로 나누는 편이 대개 낫다.
- 의미 유사도는 관련성이 아니다. 두 대목이 같은 주제여도 질문에 답하는 것은 하나뿐일 수 있다. 질의–대목 쌍을 직접 채점하는 재순위 모델이 이 문제의 상당 부분을 해결한다.
- 정확 일치에는 키워드가 필요하다. 이름·코드·식별자는 벡터 검색이 가장 약하고 키워드 검색이 가장 강한 지점이다.
임베딩 호출은 건당 싸지만 모이면 무시할 수 없다. 청킹을 바꿔 큰 코퍼스를 다시 색인하는 것은 실제 비용 항목이다.
자주 묻는 질문
- 서로 다른 모델의 임베딩을 비교해도 되나?
- 안 된다. 모델마다 자기 벡터 공간을 정의한다. 임베딩 모델을 바꾸면 코퍼스 전체를 다시 임베딩해야 한다.
- 벡터 검색은 왜 청구서 번호 같은 걸 못 찾나?
- 식별자에는 의미가 거의 없어 임베딩이 변별력을 갖지 못한다. 키워드 검색은 즉시 찾는다. 둘을 섞는 하이브리드 검색이 실무 기본값인 이유다.