P6-3.3 보충학습: 가까운 표현과 먼 표현을 배우는 임베딩 학습¶
Section ID:
P6-3.3Version:v2026.07.23
P6-3.1에서는 임베딩(embedding)이 토큰과 문장을 벡터(vector)로 바꾸는 표현 방식이라는 점을 잡았고, P6-3.2에서는 그 벡터를 거리(distance)와 유사도(similarity)로 읽는 기준을 붙잡았습니다. 여기서는 한 걸음 더 나아가, 그 벡터 공간이 애초에 어떻게 만들어지는지를 큰 그림에서 정리합니다.
여기서 자주 섞이는 것은 가까운 후보를 찾는 문제와 애초에 무엇을 가깝게 배치하도록 배웠는가입니다. 먼저 닫아야 할 질문은 뒤쪽, 즉 표현 공간이 어떤 배치 기준을 배웠는가입니다.
표현 공간을 배우는 기준¶
- 임베딩 학습은 무엇을 더 가깝게, 무엇을 더 멀게 두려는가?
- word2vec, GloVe, sentence embedding은 무엇을 대표 벡터로 삼는가?
- contrastive learning은 어떤 학습 감각을 주는가?
- 표현 품질 문제를 탐색 속도 문제와 왜 먼저 분리해야 하는가?
여기서는 좋은 표현 공간을 만드는 문제까지를 먼저 잡습니다. 가까운 후보를 실무 속도로 빨리 좁히는 문제, 검색 시스템 안에서 표현 공간이 저장소와 인덱스로 붙는 문제는 이후 절에서 다시 넓어집니다.
| 지금 초점 | 이어질 질문 | 다시 넓게 읽는 위치 |
|---|---|---|
| 표현 학습 | 무엇을 가깝게 배치하도록 배웠는가 | P6-3.3, P6-6.1, P6-7.1 |
| 빠른 후보 탐색 | 그 표현 공간에서 어떻게 더 빨리 좁힐 것인가 | P6-3.4, P6-12.1, P6-12.2 |
따라서 중심 질문은 임베딩은 어떻게 배워서 비슷한 것을 가깝게 두는가입니다.
표현 공간 학습과 빠른 후보 탐색의 구분¶
- 임베딩 학습을
표현 공간을 만드는 문제로 설명할 수 있습니다. - 대표 임베딩 계열을 목적 중심으로 구분할 수 있습니다.
- contrastive learning을
가까워져야 할 것과 멀어져야 할 것을 함께 배우는 흐름으로 설명할 수 있습니다. - 표현 품질 문제와 탐색 속도 문제를 다른 층위로 가를 수 있습니다.
왜 학습 이야기를 따로 보나¶
P6-3.2에서 가까운 후보를 읽을 수 있게 되면, 그러면 그냥 가까운 것부터 고르면 되는 것 아닌가라는 오해가 생기기 쉽습니다. 하지만 그 전에 먼저 따져야 할 질문이 있습니다.
그 벡터 공간은 애초에 무엇을 가까이 두도록 배웠는가?
같은 뜻 문의가 자꾸 서로 멀리 흩어진다면, 이것은 검색 속도 이전에 표현 공간의 문제일 수 있습니다. 반대로 같은 문제 장면을 가리키는 문장들이 잘 모이는데도 응답이 느리다면, 그때는 탐색 속도 문제가 더 앞섭니다.
대표 임베딩 계열은 무엇을 다르게 보나¶
대표 계열은 다음처럼 읽습니다.
| 계열 | 입문용 직관 | 무엇을 대표 벡터로 삼는가 |
|---|---|---|
| word2vec | 주변 문맥으로 단어 표현을 배운다 | 단어 |
| GloVe | 동시출현 통계를 더 직접 반영한다 | 단어 |
| sentence embedding | 문장 전체를 비교 가능한 벡터로 만든다 | 문장, 문단 |
이 구분의 핵심은 이름을 외우는 데 있지 않습니다. 먼저 필요한 것은 무엇을 하나의 비교 단위로 만들고 싶은가를 보는 일입니다.
예를 들어 FAQ 검색에서는 보통 단어 하나보다 문장이나 문단 전체를 비교 단위로 두는 편이 더 자연스럽습니다. 반대로 초기 임베딩 직관을 설명할 때는 단어 주변 문맥으로 시작하는 편이 더 이해하기 쉽습니다.
contrastive learning은 어떤 감각인가¶
contrastive learning은 가장 짧게 줄이면 다음 두 질문을 함께 던집니다.
- 서로 가까워져야 할 쌍은 무엇인가?
- 서로 멀어져야 할 쌍은 무엇인가?
예를 들어:
환불이 가능한가요?와결제 취소는 어떻게 하나요?는 가깝게환불이 가능한가요?와배송 주소를 바꾸고 싶어요는 멀게
배우도록 둘 수 있습니다.
즉, contrastive learning은 정답 문장 하나를 외우게 하는 것보다 같은 문제 장면은 가까이, 다른 문제 장면은 멀리라는 배치를 익히게 하는 감각에 가깝습니다.
표현 품질 문제는 어떻게 드러나나¶
표현 품질 문제는 보통 아래 장면에서 먼저 보입니다.
| 먼저 보이는 현상 | 실제로 먼저 의심할 것 |
|---|---|
| 같은 의도 문의가 서로 다른 후보군으로 흩어진다 | 비슷한 문장이 실제로 가깝게 배치돼 있는가 |
| 다른 문제 문장이 한 후보군에 자주 섞인다 | 멀어져야 할 문장이 충분히 분리돼 있는가 |
| 특정 도메인 용어만 들어가면 엉뚱한 후보가 늘어난다 | 그 도메인 표현을 학습 공간이 제대로 구분하는가 |
이때 중요한 것은 검색이 이상하다고 뭉뚱그리지 않는 일입니다. 먼저 공간이 잘못 배치됐는가를 봐야 다음 조치가 달라집니다.
사례 및 예시¶
사례 1. 같은 의도 문의가 서로 흩어질 때¶
고객센터에 환불이 가능한가요?, 결제 취소는 어떻게 하나요?, 돈을 다시 받고 싶어요 같은 문장이 들어온다고 해 보겠습니다. 같은 단어가 없으면 서로 다른 문의처럼 보이기 쉽습니다. 하지만 실제 처리 흐름에서는 이 셋이 같은 후보군에 먼저 모이는 편이 더 자연스럽습니다.
이 사례가 이 절을 지지하는 이유는 임베딩 학습의 핵심이 같은 단어를 찾는 일이 아니라 같은 해결 흐름을 가리키는 표현을 더 가깝게 배치하는 일임을 보여 주기 때문입니다. contrastive learning 관점으로 보면 앞의 환불 문의들은 positive pair에 가깝고, 배송 주소를 바꾸고 싶어요 같은 문장은 negative pair에 가깝습니다.
여기서 확인해야 할 결과는 표면 단어보다 같은 해결 흐름이 더 가까운 위치로 배치되는가입니다.
이 사례에서 닫을 판단은 같은 단어가 아니라 같은 해결 흐름입니다. 환불 문의끼리는 가까워져야 하고, 주소 변경 문의는 멀어져야 하므로 검색 속도보다 먼저 표현 배치 품질을 봐야 합니다.
사례 2. 도메인 용어가 바뀌면 후보가 갑자기 흔들릴 때¶
일반 문의에서는 잘 맞던 검색이 정산 마감일, 정책 예외, 승인 라우팅 같은 사내 용어가 들어오면 갑자기 흔들릴 수 있습니다. 이 장면에서 먼저 넘겨야 할 오해는 검색이 느리거나 인덱스가 약해서 그렇다는 생각입니다.
실제로는 그 표현들이 같은 도메인 안에서 어떻게 가까워져야 하는지 학습 공간이 충분히 잡지 못했을 수 있습니다. 예를 들어 승인 라우팅과 결재선 지정이 같은 업무 흐름에 가까운 표현인데도 멀리 놓이면, 검색을 아무리 빠르게 해도 같은 의미 후보가 안정적으로 올라오지 않습니다.
이 사례가 이 절을 지지하는 이유는 임베딩 품질이 일반 언어 감각만으로 끝나지 않고, 어떤 도메인 표현을 서로 가깝게 배치하도록 배웠는지에 달려 있음을 보여 주기 때문입니다.
이 사례에서 닫을 판단은 도메인 표현을 일반 검색 실패로 뭉개지 않는 일입니다. 같은 업무 흐름 표현이 실제로 가까운지 먼저 확인하고, 속도 개선이나 ANN 조정은 그다음 문제로 넘깁니다.
사례 3. 후보는 엉뚱한데 속도만 빨라질 때¶
ANN을 더 공격적으로 걸어 속도는 좋아졌는데, 정작 상위 후보가 계속 엉뚱하다면 문제는 속도보다 표현 품질일 수 있습니다. 더 빨리 틀린 후보를 보여 주는 시스템은 사용자가 곧바로 실패를 체감하게 만듭니다.
그래서 이 사례에서 먼저 닫아야 할 문장은 이것입니다.
표현 공간이 흔들리면 탐색을 빨리 해도 근본 문제는 남는다.
이 사례가 이 절을 지지하는 이유는 표현 공간을 어떻게 배웠는가와 그 공간에서 얼마나 빨리 찾는가가 다른 층위임을 보여 주기 때문입니다. 비슷한 문장이 애초에 멀리 놓여 있으면 ANN은 그 잘못된 배치를 더 빠르게 탐색할 뿐입니다.
이 사례에서 닫을 판단은 표현 품질과 탐색 속도를 분리하는 일입니다. 후보가 엉뚱하면 속도보다 배치 품질을 먼저 점검하고, ANN 개선은 표현 공간이 충분히 안정된 뒤에 의미가 커집니다.
세 사례를 다시 묶으면 다음과 같습니다.
| 상황 | 먼저 좋아져야 하는 것 | 같이 보면 안 되는 오해 |
|---|---|---|
| 같은 의도 문의가 흩어진다 | 표현 공간의 배치 | 단어가 다르니 다른 문제라고 여김 |
| 도메인 용어에서 흔들린다 | 도메인 표현 구분 | 인덱스 문제라고 먼저 단정함 |
| 속도는 빨라졌는데 후보가 엉뚱하다 | 표현 품질 | 속도 개선이 곧 품질 개선이라고 여김 |
표현 공간 배치 문제 가르기¶
표현 학습 관점으로 실무 현상을 다시 보면, 아직 학습 코드를 직접 짜지 못하더라도 아래처럼 지금 먼저 흔들리는 것이 배치 문제인가를 먼저 가를 수 있습니다.
| 지금 보이는 현상 | 먼저 떠올리기 쉬운 오해 | 먼저 바꿔 물을 질문 |
|---|---|---|
| 비슷한 문의가 다른 후보군으로 흩어진다 | 검색이 느리거나 인덱스가 약해서 그렇다고 느끼기 쉽다 | 같은 의도 문장이 실제로 서로 가까운 공간에 놓이는가 |
| 전혀 다른 문의가 같은 후보군에 같이 뜬다 | 상위 후보가 여러 개면 그냥 그럴 수 있다고 넘기기 쉽다 | 멀어져야 할 문장이 충분히 분리돼 있는가 |
| 특정 도메인 표현에서만 품질이 급격히 떨어진다 | 예외적인 입력이라 어쩔 수 없다고 느끼기 쉽다 | 그 도메인 표현을 학습 공간이 따로 구분하고 있는가 |
이 표의 목적은 알고리즘 이름을 더 많이 외우게 하는 데 있지 않습니다. 검색이 이상하다는 한 문장으로 뭉개지 않고, 먼저 표현 공간이 잘못 배치됐는가를 짧게 묻게 만드는 데 있습니다.
연습 및 예제¶
이 연습의 목표는 가까워져야 할 쌍과 멀어져야 할 쌍을 함께 두고, 왜 이것이 표현 학습의 핵심 감각인지 눈으로 확인하는 것입니다. 실제 학습 코드를 짜기 전에, 문의 문장 쌍을 보고 positive pair와 negative pair를 판정하는 것만으로도 표현 공간의 배치 기준을 붙잡을 수 있습니다.
먼저 다음 문장들을 봅니다.
| 문장 ID | 문장 |
|---|---|
refund_a | 환불이 가능한가요? |
refund_b | 결제 취소는 어떻게 하나요? |
address | 배송 주소를 바꾸고 싶어요 |
이 문장들을 표현 학습 관점으로 묶으면 다음처럼 읽을 수 있습니다.
| 쌍 | 라벨 | 왜 이렇게 보는가 |
|---|---|---|
refund_a <-> refund_b | positive pair | 표면 단어는 다르지만 같은 환불 해결 흐름을 가리킵니다. |
refund_a <-> address | negative pair | 하나는 환불 문제이고 다른 하나는 배송 주소 변경 문제입니다. |
이 예시에서 읽어야 할 핵심은 숫자 계산이 아닙니다.
- positive pair는 더 가까워져야 합니다.
- negative pair는 더 멀어져야 합니다.
- 이 배치가 흔들리면 검색 속도를 아무리 줄여도 같은 의도 문장이 한 후보군에 잘 모이지 않습니다.
예시를 읽은 뒤에는 아래 질문에 먼저 답해 봅니다. 질문마다 먼저 스스로 답한 뒤, 바로 오른쪽 해설과 비교합니다.
| 질문 | 해설 |
|---|---|
refund_a와 refund_b는 왜 positive pair인가 | 두 문장은 표면 단어가 다르지만 같은 환불 해결 흐름을 가리킵니다. 표현 학습 관점에서는 같은 의도 문장을 가까운 공간에 놓아야 하므로 positive pair로 둡니다. |
refund_a와 address는 왜 negative pair인가 | 하나는 환불 문제이고 다른 하나는 배송 주소 변경 문제입니다. 같은 후보군에 섞이면 검색 품질이 흔들리므로 멀어져야 할 쌍으로 둡니다. |
| 이 예시에서 아직 확인하지 않는 것은 무엇인가 | 실제 ANN 속도나 인덱스 구조는 확인하지 않습니다. 중심은 빠르게 찾는 법이 아니라 무엇을 가깝게 배치하도록 배웠는가입니다. |
연습 1. positive와 negative 쌍 판정하기¶
관찰값:
| 문장 ID | 문장 |
|---|---|
billing_a | 이번 달 결제 내역을 확인하고 싶어요 |
billing_b | 청구 금액이 어디서 나온 건지 알려 주세요 |
login_a | 비밀번호를 잊어버렸어요 |
refund_a | 환불이 가능한가요? |
먼저 스스로 답해 봅니다.
billing_a와 가장 가까워져야 할 positive pair 후보는 무엇인가?billing_a와 멀어져야 할 negative pair 후보는 무엇인가?- 이 판단은 검색 속도 문제인가, 표현 공간 배치 문제인가?
해설: billing_a와 가장 가까워져야 할 후보는 billing_b입니다. 둘은 결제 내역과 청구 금액이라는 같은 비용 확인 흐름을 가리킵니다. login_a와 refund_a는 각각 로그인 문제와 환불 문제이므로 billing_a와 멀어져야 할 negative pair 후보입니다. 이 판단은 검색 속도 문제가 아니라, 어떤 문장을 같은 공간에 가깝게 배치하도록 배울 것인가의 문제입니다.
연습 2. 학습 신호를 잘못 잡은 경우 찾기¶
관찰값:
| 학습 쌍 | 현재 라벨 |
|---|---|
환불이 가능한가요? <-> 결제 취소는 어떻게 하나요? | negative |
비밀번호를 잊어버렸어요 <-> 로그인이 안 됩니다 | positive |
환불이 가능한가요? <-> 배송 주소를 바꾸고 싶어요 | positive |
먼저 스스로 답해 봅니다.
- 라벨이 잘못 붙은 쌍은 무엇인가?
- 잘못된 라벨이 표현 공간에 어떤 문제를 만들 수 있는가?
- 이 문제는 왜 검색 속도 튜닝으로 해결되지 않는가?
해설: 첫 번째 쌍은 같은 환불 해결 흐름이므로 negative가 아니라 positive에 가깝습니다. 세 번째 쌍은 환불과 배송 주소 변경이므로 positive가 아니라 negative에 가깝습니다. 이런 라벨이 잘못 들어가면 가까워져야 할 문장은 멀어지고, 멀어져야 할 문장은 같은 후보군에 섞입니다. 이 문제는 표현 공간의 배치 신호가 잘못된 것이므로, 검색 속도를 높여도 잘못 배치된 후보를 더 빨리 찾게 될 뿐입니다.
연습 3. 표현 품질과 탐색 속도 구분하기¶
관찰값:
| 현상 | 먼저 의심할 층위 |
|---|---|
| 같은 의도 문의가 서로 다른 후보군으로 흩어진다 | ? |
| 후보 품질은 좋은데 응답 시간이 너무 길다 | ? |
| 도메인 용어가 들어간 문의에서만 엉뚱한 후보가 많아진다 | ? |
먼저 스스로 답해 봅니다.
- 각 현상은 표현 품질 문제인가, 탐색 속도 문제인가?
- 왜 두 층위를 섞으면 조치가 어긋나는가?
해설: 같은 의도 문의가 흩어지는 현상은 표현 품질 문제입니다. 후보 품질은 좋지만 응답 시간이 긴 현상은 탐색 속도 문제에 가깝습니다. 도메인 용어에서만 엉뚱한 후보가 많아지는 현상은 도메인 표현 배치가 부족한 표현 품질 문제입니다. 두 층위를 섞으면 표현 공간이 흔들리는데 인덱스만 튜닝하거나, 반대로 후보 품질은 좋은데 학습 문제로 오해하는 식으로 조치가 어긋납니다.
따라서 이 절의 마지막 판단은 단순합니다. 후보가 엉뚱하면 먼저 표현 공간이 비슷한 문장을 실제로 가깝게 두는지 확인하고, 후보 품질은 좋은데 늦을 때만 탐색 속도 문제로 넘깁니다.
체크리스트¶
- 임베딩 학습을
좋은 표현 공간을 만드는 문제로 설명할 수 있는가? - word2vec, GloVe, sentence embedding을
무엇을 대표 벡터로 삼는가기준으로 구분할 수 있는가? - contrastive learning을
가까워져야 할 것과 멀어져야 할 것을 함께 배우는 흐름으로 설명할 수 있는가? - 표현 품질 문제와 탐색 속도 문제를 먼저 분리해 읽을 수 있는가?
출처와 참고 자료¶
- Tomas Mikolov et al., Efficient Estimation of Word Representations in Vector Space, arXiv, 2013, 확인 날짜: 2026-07-19. word2vec 계열의 단어 표현 학습 배경 근거로 사용했다.
- Jeffrey Pennington, Richard Socher, Christopher D. Manning, GloVe: Global Vectors for Word Representation, EMNLP 2014, 확인 날짜: 2026-07-19. 전역 단어-단어 동시출현 통계를 반영한 단어 벡터 학습 설명의 근거로 사용했다.
- Ting Chen et al., A Simple Framework for Contrastive Learning of Visual Representations, ICML 2020, 확인 날짜: 2026-07-19. contrastive learning을 positive/negative 쌍의 표현 배치 감각으로 설명하는 배경 근거로 사용했다.
- Nils Reimers, Iryna Gurevych, Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks, arXiv, 2019, 확인 날짜: 2026-07-19. 문장 임베딩을 siamese/triplet 구조와 유사도 비교에 맞춰 학습하는 배경 근거로 사용했다.