통계 실험실 차트
넘스탯 로고
넘스탯
LEARN · SIMULATE · VERIFY

확률부터 LLM까지, 원리부터 제대로 배우는 자기주도 학습 플랫폼

로그인
학습 메뉴
도움말

벡터 검색(의미 검색)

마일스톤 학습법으로 단계별 완전 정복
LLM
벡터 검색
의미 검색
밀집 검색
코사인 유사도
임베딩
ANN
HNSW
DPR
하이브리드 검색
이 개념 직접 실험하기 — 어휘 검색 vs 의미 검색 실측
이 학습을 통해 달성할 수 있는 목표
기초 이해
  • • 키워드 검색의 두 가지 실패(어휘 불일치로 인한 누락, 우연한 겹침으로 인한 오검) 설명
  • • 질문과 문서를 같은 벡터 공간의 점으로 바꾸어 가까운 점을 고르는 밀집 검색의 절차 이해
  • • 벡터 검색이 만능이 아니며 어휘 검색과 함께 쓰는 하이브리드가 흔하다는 점 인식
심화 학습
  • • 코사인 유사도 $\cos\theta = \dfrac{a \cdot b}{\lVert a \rVert \lVert b \rVert}$ 를 손으로 계산 — $a=(3,4)$, $b=(4,3)$ 이면 $24/25 = 0.96$
  • • 내적 대신 코사인을 쓰는 이유(길이 편향 제거)를 순위가 뒤집히는 예로 설명
  • • 전수 비교가 $O(N)$ 임을 계산량으로 확인하고 ANN 색인이 필요한 규모를 판단
실무 적용
  • • DPR(Karpukhin et al. 2020)이 Lucene-BM25 대비 상위 20개 문단 검색 정확도에서 9~19%p(절대값) 앞섰다는 실측 인용
  • • HNSW의 계층 그래프가 로그 스케일 복잡도를 달성하는 원리(Malkov & Yashunin) 이해
  • • 하이브리드 검색과 교차 인코더 재순위화로 검색-생성 파이프라인의 앞단을 설계
한눈에 보기

벡터 검색(의미 검색)은 질문과 문서를 같은 임베딩 공간의 벡터로 바꾼 뒤, 벡터 사이의 유사도(주로 코사인 유사도)가 큰 문서를 골라 내는 검색 방식으로, 단어가 겹치지 않아도 뜻이 통하면 찾아낸다.

이 내용은 넘스탯의 어휘 검색 vs 의미 검색 실측에서 직접 실험으로 확인할 수 있습니다.

학습 로드맵

각 단계를 클릭하면 해당 학습 내용을 볼 수 있습니다

기초 이해
개념 정의와 기본 원리
15
클릭
심화 학습
공식 유도와 다양한 예시
40
클릭
실무 적용
실제 케이스와 고급 응용
55

학습 진도 (완료한 단계)

0%

기초 이해단어가 겹치지 않아도 뜻이 통하면 찾는다

기초 이해: 단어가 겹치지 않아도 뜻이 통하면 찾는다

난이도 2/5
약 15분

고객센터 검색창에 "환불 얼마나 걸리나요"라고 쳤다고 합시다. 그런데 회사 문서에는 "반품 대금은 영업일 기준 3일 내 입금됩니다"라고 적혀 있습니다. 사람이 보면 바로 같은 이야기인 줄 압니다. 하지만 글자를 맞춰 보는 검색기는 "환불"과 "반품"이 다른 글자이므로 이 문서를 찾지 못합니다. 벡터 검색은 이 문제를 다른 방식으로 풉니다. 질문과 문서를 각각 숫자 벡터(임베딩)로 바꿉니다. 뜻이 비슷한 문장은 이 공간에서 가까운 점이 되도록 미리 학습해 둔 모델을 씁니다. 그러면 검색은 "같은 글자 찾기"가 아니라 "가까운 점 찾기"가 됩니다. 글자가 하나도 겹치지 않아도, 뜻이 통하면 가까이 있으니 찾아냅니다. 이렇게 벡터의 근접성으로 문서를 찾는 방식을 밀집 검색(dense retrieval)이라고 부릅니다. 반대로 단어 일치에 기대는 전통적 방식은 어휘 검색 또는 희소 검색(sparse retrieval)이라고 합니다.

단어 임베딩 — 의미를 벡터로 담는다의미가 비슷한 단어는 가까이, 관계는 벡터 방향으로 — “왕 − 남자 + 여자 ≈ 여왕”같은 방향 = 같은 관계(성별→왕족)남자여왕여자사과바나나※ 코사인 유사도로 의미 근접성 측정(검색·추천) · 트랜스포머는 문맥적 임베딩으로 다의어 구분
핵심 포인트
  • 키워드 검색은 어휘 일치 — "환불"과 "반품"처럼 뜻은 같고 글자가 다르면 놓친다
  • 반대로 "기간"처럼 우연히 겹친 단어 때문에 무관한 문서가 딸려 오기도 한다
  • 벡터 검색은 질문과 문서를 같은 벡터 공간의 점으로 바꾸고, 가까운 점을 고른다
  • 가까움을 재는 자로는 주로 코사인 유사도를 쓴다 — 벡터가 향하는 방향이 얼마나 같은가
  • 벡터 검색이 항상 이기는 것은 아니다 — 실무에서는 어휘 검색과 함께 쓰는 하이브리드가 흔하다
간단한 예시

아주 작은 3차원 의미 공간으로 감을 잡아 봅시다. 축을 (금전·반환, 배송, 기간)이라고 두겠습니다. 질문 q = "환불 얼마나 걸리나요" q = (0.8, 0.0, 0.6) 노름 = sqrt(0.64 + 0.36) = 1 문서 A = "반품 대금은 영업일 3일 내 입금됩니다" A = (0.6, 0.0, 0.8) 노름 = sqrt(0.36 + 0.64) = 1 문서 B = "보증 기간은 구매일로부터 1년입니다" B = (0.0, 0.6, 0.8) 노름 = sqrt(0.36 + 0.64) = 1 코사인 유사도 (노름이 모두 1이므로 내적이 곧 코사인) q · A = 0.8×0.6 + 0.0×0.0 + 0.6×0.8 = 0.48 + 0 + 0.48 = 0.96 q · B = 0.8×0.0 + 0.0×0.6 + 0.6×0.8 = 0 + 0 + 0.48 = 0.48 결과: A(0.96)가 B(0.48)보다 두 배 가깝다. 주목할 점은 단어 겹침이 정반대라는 것입니다. 질문과 A: 겹치는 단어 없음 (환불 vs 반품) 질문과 B: "기간"이 겹침 키워드 검색이라면 B를 위로 올리고 A를 놓쳤을 상황을, 벡터 검색은 뜻으로 뒤집어 놓습니다.

이해도 확인하기

정답: 키워드 검색은 질문의 문자열(또는 토큰)이 문서에 실제로 나타나는지를 봅니다. "환불"과 "반품"은 뜻은 겹쳐도 글자가 다른 별개의 항목이라, 어휘 일치 기준으로는 접점이 0입니다. 벡터 검색은 두 표현을 벡터 공간의 가까운 점으로 만들어 이 간극을 넘습니다.

정답: 질문 벡터와 문서 벡터 사이의 유사도, 대표적으로 코사인 유사도를 기준으로 합니다. 두 벡터가 같은 방향을 향할수록 코사인이 1에 가깝고, 무관할수록 0에 가까워집니다.

정답: 아닙니다. 사람 이름·제품 코드·오류 코드·정확한 숫자처럼 글자 그대로 맞아야 하는 질의는 어휘 일치가 오히려 정확합니다. 그래서 실무에서는 두 방식을 함께 돌리고 결과를 합치는 하이브리드 검색을 많이 씁니다.

LLM 이론 페이지로 돌아가기