임베딩과 벡터 검색
텍스트를 벡터로 변환하고 유사도 기반 검색하기
임베딩이란?
텍스트를 숫자로 변환
임베딩(Embedding)은 텍스트를 고차원 벡터로 변환하는 과정입니다. 이 벡터는 텍스트의 의미(semantic meaning)를 수치적으로 표현합니다.
의미적으로 유사한 텍스트 → 벡터 공간에서 가까운 위치
의미적으로 다른 텍스트 → 벡터 공간에서 먼 위치
2D 벡터 공간 시각화 (단순화된 예시)
실제 임베딩은 수백~수천 차원의 벡터입니다
유사도 측정 방법
벡터 간 거리 계산
두 벡터 간의 유사도를 측정하는 여러 방법이 있습니다. RAG에서는 주로 코사인 유사도가 사용됩니다.
임베딩 모델
다양한 모델 비교
다양한 임베딩 모델이 있으며, 용도와 언어에 따라 적절한 모델을 선택해야 합니다.
| 모델 | 차원 | 특징 | 타입 |
|---|---|---|---|
| text-embedding-3-large | 3072 | OpenAI 최신 모델, 최고 성능 | OpenAI |
| text-embedding-3-small | 1536 | 비용 효율적, 대부분 충분한 성능 | OpenAI |
| BGE-large-en | 1024 | 오픈소스 최고 성능급, MTEB 상위 | 오픈소스 |
| E5-large-v2 | 1024 | Microsoft 개발, 다국어 지원 | 오픈소스 |
| Ko-SBERT | 768 | 한국어 특화, KorSTS 학습 | 한국어 |
| KoSimCSE | 768 | 한국어 문장 유사도 특화 | 한국어 |
인덱싱과 검색에 반드시 같은 임베딩 모델을 사용해야 합니다. 서로 다른 모델의 벡터는 호환되지 않습니다.
벡터 검색의 원리
ANN 알고리즘
벡터 검색 과정
수백만 개의 벡터에서 정확한 최근접 이웃을 찾는 것은 매우 느립니다. ANN (Approximate Nearest Neighbor) 알고리즘은 약간의 정확도를 희생하여 수십~수백 배 빠른 검색을 가능하게 합니다.
벡터 데이터베이스
주요 벡터 DB 비교
벡터 검색에 최적화된 데이터베이스입니다. 각각 장단점이 있어 용도에 맞게 선택합니다.
실시간 업데이트
하이브리드 검색 내장
로컬 개발에 최적
분산 아키텍처
필터링 최적화
연구/실험에 최적
하이브리드 검색
Dense + Sparse 결합
의미 기반 검색(Dense)과 키워드 기반 검색(Sparse)을 결합하면 더 정확한 검색 결과를 얻을 수 있습니다.
의미적 유사성
동의어, 패러프레이징 잘 처리
정확한 키워드 매칭
고유명사, 전문용어 잘 처리
- Reciprocal Rank Fusion (RRF) — 순위 기반 결합, 가장 많이 사용
- 가중 평균 — 각 검색 결과 점수에 가중치 부여
- Reranker — 두 검색 결과를 모아서 재정렬
- 제품명, 코드명 등 고유명사가 많은 경우
- 정확한 숫자나 날짜 검색이 필요한 경우
- 짧은 쿼리가 많은 경우 (키워드 검색 보완)
임베딩 베스트 프랙티스
효과적인 임베딩 활용법
핵심 요약
- 임베딩은 텍스트를 의미 담은 벡터로 변환하는 기술
- 코사인 유사도로 벡터 간 각도를 측정하여 유사성 판단
- ANN 검색으로 HNSW 등을 활용한 빠른 근사 검색
- 하이브리드 검색으로 의미 + 키워드 검색 결합
- 도메인과 용도에 맞는 임베딩 모델 선택이 중요