| 구분 | 희소 벡터 (Sparse) | 밀집 벡터 (Dense) |
|---|---|---|
| 구성 | 대부분 0 (예: [0, 1, 0, 0, 0, …]) | 대부분 실수 (예: [0.1, -0.5, 0.8, …]) |
| 차원 수 | 매우 높음 (수만~수백만) | 낮음 (수백~수천) |
| 주요 강점 | 키워드 매칭, 정확한 일치 | 의미적 유사성, 문맥 파악 |
| 저장 방식 | 0이 아닌 값의 위치와 값만 저장 | 모든 값을 순서대로 저장 |
| 사용 예시 | 전통적 검색 엔진, 스팸 필터 | 챗봇, 추천 시스템, 시맨틱 검색 |
sparse vector
벡터의 구성 요소 중 대부분이 0이고, 의미 있는 값은 아주 일부만 존재하는 형태
-
특징: 차원(Dimension)이 매우 높음
- ex) 1만 개의 단어가 포함된 사전에서 특정 문장에 포함된 단어만 1로 표시하면, 나머지는 모두 0
-
장점:
- 특정 단어의 존재 여부를 정확히 알 수 있음
- 따라서 키워드 매칭(Keyword Search) 에 강력하다
- 결과가 왜 나왔는지 설명하기 쉽다 (해석 가능성)
- 특정 단어의 존재 여부를 정확히 알 수 있음
-
단점:
- 단어의 의미나 맥락을 이해하지 못한다
- ex) ‘자동차’와 ‘차량’을 완전히 다른 데이터로 인식함
-
대표 사례: 원-핫 인코딩(One-Hot Encoding), TF-IDF, BM25 알고리즘
dense vector
벡터의 모든 차원이 **0이 아닌 실수(Real Number)**로 가득 차 있는 형태
- 고차원의 공간에서 밀집하게 분포되어 있다.
고차원의 공간에서 모든 원소가 실수값인 벡터
-
특징: 상대적으로 차원이 낮다 (보통 100~1,000차원 내외)
- 각 숫자는 고정된 의미가 아니라 학습을 통해 얻어진 **추상적인 특징(Feature)**을 나타낸다.
-
장점:
- 데이터의 특징을 잘 나타낸다
- 단어의 의미적 유사성(Semantic Similarity) 을 파악할 수 있음
- ‘자동차’와 ‘차량’이 비슷한 공간에 위치하도록 학습된다
- 따라서 검색 품질이 높음
- 희소 벡터에 비해 메모리 공산을 더 효율적으로 사용한다.
- 벡터 간의 유사도 계산 등, 다양한 연산에 사용될 수 있다
-
단점:
- 각 차원의 숫자가 무엇을 의미하는지 사람이 직관적으로 이해하기 어렵다.
- 계산 비용이 발생한다.
-
대표 사례: Word2Vec, BERT, GPT와 같은 딥러닝 기반 임베딩 모델