콘텐츠로 이동

Elasticsearch (전문검색 + 벡터)

의미 기반 검색만으로는 "memo"와 "note"처럼 뜻은 비슷해도 맥락이 다른 문서가 섞일 수 있어요. 정확한 단어·코드·약어가 중요할 때는 어휘(키워드) 매칭이 결정적인 경우가 많습니다. Elasticsearch는 이 키워드 검색이 강한 검색 엔진으로, 우리 검색 파이프라인에서 어휘 매칭 쪽을 담당합니다.

Elasticsearch는 최근판에서 dense_vector 필드와 kNN(근접 이웃) 검색을 네이티브로 지원해, 전문검색(전문 텍스트 검색)과 벡터 검색을 한 엔진 안에서 섞는 하이브리드 검색도 가능해요.


상황부터 — 단어가 정확해야 할 때

사용자가 "2026 휴가 정책"처럼 정확한 문구나, 코드·약어·고유명사를 검색하면 의미 검색보다 키워드 매칭이 훨씬 정확해요. Elasticsearch의 기본 점수화 알고리즘은 BM25 로, 문서 안에서 그 단어가 얼마나 자주·얼마나 드물게 나오는지로 관련도를 매깁니다.


핵심 개념

  • 인덱스(Index) — 문서를 저장하는 단위. Qdrant의 컬렉션과 비슷한 역할입니다.
  • 전문검색(Full-Text Search) — BM25 기반의 어휘 매칭. 정확한 단어·구절 검색에 강합니다.
  • dense_vector 필드 — 임베딩 결과를 벡터로 저장하는 필드 타입. dims(차원)를 임베딩 모델 출력에 맞춰 정합니다(우리는 text-embedding-3-small의 1536차원).
  • kNN 검색 — query_vector와 가장 가까운 벡터 상위 k개를 찾는 근사 최근접 이웃(ANN) 검색. HNSW 그래프로 빠르게 수행합니다.
  • 하이브리드 검색 + RRF — match(키워드)와 knn(벡터)을 함께 보내고, RRF(Reciprocal Rank Fusion) 로 두 순위를 하나로 합칩니다.

사용 사례 / 실제 적용

  • 정책·사내 문서 어휘 매칭 — 정확한 용어·약어 검색이 필요한 문서를 Elasticsearch 어휘 매칭으로 찾습니다.
  • 하이브리드 통합 — 의미 검색만으로 놓치기 쉬운 정확한 문구를 키워드로 잡고, 두 결과를 RRF로 합쳐 순위를 만듭니다.
  • 메타데이터 필터링 — 문서 종류·날짜 필터로 검색 범위를 줄여 비용·지연을 낮춥니다.

Elasticsearch 하위 챕터


더 알아보기