본문 바로가기
법, 용어/용어

Sparse Retrieval(희소 검색)과 Dense Retrieval(밀집 검색)

by 3604 2026. 3. 9.
728x90

검색 시스템이나 RAG(생성형 AI 결합 검색)를 구축할 때 가장 자주 접하게 되는 두 가지 방식, **Sparse Retrieval(희소 검색)**과 **Dense Retrieval(밀집 검색)**의 차이를 핵심 위주로 쉽게 설명해 드릴게요.


1. Sparse Retrieval (희소 검색: 키워드 매칭)

가장 전통적인 방식입니다. 도서관 색인 목록에서 특정 단어를 찾는 것과 비슷합니다.

  • 작동 방식: 문장에 어떤 단어가 포함되어 있는지, 그 단어가 얼마나 중요한지를 계산합니다.
  • 대표 알고리즘: BM25. (단순 빈도수 TF-IDF의 업그레이드 버전)
  • 특징: 문장을 아주 긴 벡터(표)로 표현하지만, 실제 단어가 있는 곳 빼고는 전부 '0'으로 채워지기 때문에 '희소(Sparse)'하다고 부릅니다.

장점: "아이폰 15 프로"처럼 정확한 고유 명사전문 용어를 찾을 때 매우 강력합니다.

단점: "맛있는 사과"를 찾고 싶은데 문장에 "달콤한 부사"라고 적혀 있으면, 단어가 다르기 때문에 검색하지 못합니다. (동의어 파악 불가)


2. Dense Retrieval (밀집 검색: 의미 매칭)

최근 AI 모델(임베딩 모델)을 활용한 방식입니다. 단어 자체보다 **'맥락과 의미'**에 집중합니다.

  • 작동 방식: AI가 문장을 읽고 그 의미를 수백 개의 숫자(벡터)로 압축합니다. 비슷한 의미를 가진 문장들은 숫자 공간상에서 서로 가까운 위치에 놓이게 됩니다.
  • 대표 기술: Embedding (임베딩).
  • 특징: 모든 숫자가 0이 아닌 값들로 꽉 차 있기 때문에 '밀집(Dense)'하다고 부릅니다.

장점: "퇴사하고 싶을 때 듣는 노래"라고 검색해도 "직장인 위로 플레이리스트"를 찾아낼 수 있습니다. 문맥과 의도를 이해하기 때문입니다.

단점: 모델이 학습하지 못한 아주 최신 유행어나 특정 고유 번호(예: "A-1234") 같은 상세 키워드 매칭에는 약할 수 있습니다.


3. 한눈에 비교하기

구분 Sparse (BM25) Dense (Embedding)
핵심 키워드(단어) 일치 여부 의미(맥락) 유사도
비유 사전에서 단어 찾기 대화의 맥락 파악하기
장점 정확한 고유명사 검색에 강함 동의어, 유의어 처리에 강함
단점 의미가 같아도 단어가 다르면 못 찾음 상세 숫자나 정확한 명칭에 취약할 수 있음

결론: 요즘의 대세는 '하이브리드'

실제 현업에서는 어느 하나만 쓰기보다 두 방식을 섞어서(Hybrid Search) 사용하는 경우가 많습니다.

  1. BM25로 정확한 키워드를 잡고,
  2. Dense로 사용자의 숨은 의도를 파악하여,

이 두 결과의 점수를 적절히 합쳐서 사용자에게 가장 정답에 가까운 결과를 보여주는 방식입니다.

 

[참고]  BM25 알고리즘

BM25 알고리즘을 쉽게 설명해줘


BM25(Best Matching 25)는 쉽게 말해 **"이 문서가 내가 검색한 단어와 얼마나 관련이 있는가?"**를 점수로 환산해 주는 알고리즘입니다. 구글이나 엘라스틱서치(Elasticsearch) 같은 검색 엔진에서 아주 오랫동안 '기본기'로 통하는 강력한 수식이죠.

복잡한 수학 기호를 빼고 핵심 원리 3가지만 알면 이해하기 쉽습니다.

1. 단어가 많이 나올수록 점수가 높다 (TF: Term Frequency)
검색어가 문서에 자주 등장하면 당연히 그 문서와 관련이 높다고 판단합니다.

예: '사과'를 검색했는데, A 문서는 '사과'가 1번 나오고 B 문서는 10번 나온다면 B 문서의 점수가 더 높습니다.

2. 하지만, 너무 많이 나온다고 무한정 점수를 주진 않는다 (TF Saturation)
이게 BM25의 가장 큰 특징입니다. 단어가 1번 나올 때보다 10번 나올 때 점수가 확 오르지만, 100번 나온다고 해서 10번 나올 때보다 10배 더 중요하다고 보지는 않습니다.

비유: 배가 고플 때 사과 1개는 감동적이지만, 100개째 먹을 때는 그 감동(점수)이 완만하게 변하는 것과 같습니다. 이를 통해 특정 단어 도배로 검색 순위를 조작하는 것을 방지합니다.

3. 흔한 단어는 가치를 낮게 본다 (IDF: Inverse Document Frequency)
모든 문서에 다 들어있는 흔한 단어(예: '의', '는', '것')는 검색어로서 가치가 낮다고 판단합니다.

예: '아이폰 리뷰'를 검색했을 때, 모든 문서에 있는 '리뷰'라는 단어보다 특정 문서에만 있는 '아이폰'이라는 단어에 더 높은 가중치를 줍니다.

4. 짧은 문서에서 나온 단어가 더 알차다 (Document Length Normalization)
문서의 길이를 고려합니다.

10페이지짜리 논문에서 '사과'가 5번 나오는 것보다, 단 한 줄짜리 메모에서 '사과'가 5번 나오는 것이 '사과'에 대해 이야기할 확률이 훨씬 높다고 보는 것이죠. 짧은 문서에 검색어가 집중되어 있으면 점수를 더 후하게 줍니다.

요약하자면?
BM25는 "너무 흔하지 않은 단어가, 짧은 문서 안에, 적당히 많이 들어있을 때" 가장 높은 점수를 주는 똑똑한 점수 계산기입니다.

( $$Score(D, Q) = \sum_{q \in Q} IDF(q) \cdot \frac{f(q, D) \cdot (k_1 + 1)}{f(q, D) + k_1 \cdot (1 - b + b \cdot \frac{|D|}{avgdl})}$$)



** 수식 설명
"$$Score(D, Q) = \sum_{q \in Q} IDF(q) \cdot \frac{f(q, D) \cdot (k_1 + 1)}{f(q, D) + k_1 \cdot (1 - b + b \cdot \frac{|D|}{avgdl})}$$" 

수학 기호가 복잡해 보이지만, 사실 중학교 때 배우는 비례와 반비례, 그리고 가중치 개념만 알면 아주 간단합니다. 이 공식은 **'검색어와 문서의 찰떡궁합 점수'**를 매기는 계산기라고 생각하면 돼요.



💡 이해를 돕는 비유 (시험지 채점)
선생님이 시험 문제를 채점한다고 생각해보세요.

아무나 다 맞히는 쉬운 문제는 점수가 낮고, **어려운 문제(IDF)**를 맞히면 점수가 높습니다.

정답을 여러 번 강조해서 쓰면 좋지만, 똑같은 말만 100번 쓴다고(f(q,D)) 점수를 계속 올려주지는 않습니다.

답안지 길이는 짧은데(∣D∣) 핵심 단어가 꽉 차 있으면 공부를 아주 잘한 학생으로 보고 점수를 더 잘 줍니다.

이 세 가지를 곱하고 더해서 나온 최종 결과가 바로 BM25 검색 점수입니다.

 

 

728x90