콘텐츠로 이동

하이브리드 검색 & 임베딩 전략 (Hybrid Search & Embedding)

RAG 의 검색 품질을 높이는 핵심은 벡터(의미) 검색만이 아니라, 키워드(어휘) 검색과 함께 병합(hybrid) 하는 것과, 좋은 임베딩을 쓰는 것입니다. 이번 장은 두 전략을 데이터스케쳐스의 RAG 실무 관점에서 정리합니다.

왜 하이브리드인가

벡터 검색만 쓰면:

  • 정확한 고유명사·코드·약어·버전(예: QLD-202, oauth2)을 "뜻"으로 잘 못 찾음.
  • 스파스(희소)하지 않은 임베딩은 희귀 토큰을 평균에 파묻어 버립니다.

키워드(BM25 등)는 정확한 용어에 강하고, 벡터는 의미·유사어에 강합니다. 둘을 합치면 정확 용어 + 의미 유사를 모두 잡아 recall 을 높입니다.

  • dense 검색: 임베딩 벡터 코사인 유사도.
  • sparse 검색: BM25 같은 어휘 점수(또는 SPLADE 같은 학습된 희소 벡터).
  • 융합(RRF 등): 두 점수 리스트를 순위 기반으로 병합해 최종 상위 결과를 선택.

임베딩 전략

  • 문장/token 임베딩: 문서를 청크로 나눠 각각 임베딩. 청크 크기는 검색 단위와 맞춰야 합니다(너무 크면 의미가 흐려지고, 너무 작으면 문맥이 끊김).
  • 모델 선택: 도메인·언어(한국어)에 맞는 임베딩 모델이 중요. 범용 모델보다 번역/도메인 튜닝 모델이 한국어 의미 검색 품질이 좋은 경우가 많습니다.
  • 쿼리 변환: 사용자 질문을 임베딩 전에 정규화(불용어·맞춤법)하거나 query rewrite 하면 검색 품질이 올라갑니다.

데이터스케쳐스 실무 관점

  • 이벤트/문서 RAG: 한국어 고유명사(기업·사람·제품명)가 잦으면, 벡터 + 키워드 하이브리드를 켜서 정확 용어를 놓치지 않게 합니다.
  • 임베딩 재생성 파이프라인: 콘텐츠가 늘어나면 임베딩을 주기적으로 다시 계산해야 합니다(이 위키도 DB embedding 컬럼으로 그렇게 운영, scripts/db/embed.py).
  • 평가: 검색 recall 을 실제 쿼리 세트로 측정(예: 재현율@k)해, 임베딩 모델·하이브리드 가중치를 정량적으로 튜닝하세요.

확인 필요

  • 하이브리드 융합 수식(RRF 가중치)·희소 벡터 지원은 검색 벡터DB(타입)마다 다르므로, 사용 제품 공식 문서를 재확인하세요. (확인 필요)

더 알아보기