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 하위 챕터¶
- 매핑과 인덱스 — 필드 타입 정의, 동적·명시적 매핑
- Query DSL — 쿼리·필터 컨텍스트, 쿼리 작성
- kNN / 벡터 검색 — 근사 kNN, 하이브리드 검색
더 알아보기¶
- 공식 문서 (1차): Elasticsearch Documentation, Elastic kNN 검색, Elastic RRF
- 큐레이션/블로그 (2차): Elastic 하이브리드 검색 튜토리얼, Elastic 블로그