← 테크곳간 목록으로

숨고 팀 블로그 | Tech

글자 너머의 의도를 읽는 Elasticsearch 기반 하이브리드 검색

AI 엔지니어링 브리핑

숨고는 글자만 비교하던 검색에 의미를 이해하는 벡터 검색을 더해, 사용자의 의도에 맞는 서비스를 더 정확하고 빠르게 찾도록 개선했습니다.

문제 & 배경
  • 문제 & 배경: 기존 Elasticsearch의 BM25 검색은 입력한 글자와 서비스명이 다르면 의미를 파악하지 못해 ‘고3’이나 ‘고양이’처럼 의도와 무관한 결과를 상위에 보여주는 문제가 있었습니다.
기술 & 해결책
  • 기술 & 해결책: 기존 BM25의 정확한 글자 매칭에 임베딩 벡터의 의미 매칭을 결합하고, 두 검색 점수를 정규화해 합산하는 하이브리드 검색을 구현했으며, Redis 캐시와 BM25 폴백으로 속도와 안정성도 확보했습니다.
교훈 & 주의점
  • 교훈 & 주의점: 품질만 높이는 기술보다 서비스의 속도와 안정성에 맞는 조합이 중요하므로, 비용이 큰 Cross-Encoder는 제외하고 검색 품질을 관찰하며 가중치와 기존 쿼리를 계속 조정해야 합니다.
원문 읽기 ↗
내용이 비슷해요

내용이 비슷한 글을 먼저 보여드려요. 같은 문제나 해결책을 다룬다는 뜻은 아니에요.