글자가 다르면 못 찾는 검색
고전 검색 엔진과 SQL LIKE 쿼리는 문자열을 맞춰볼 뿐 뜻은 읽지 않아. "연간 결제 환불 정책"을 찾는 사람에게 "annual subscription cancellation" 문서를 보여주지 못하는 이유야. 의도는 같은데 겹치는 단어가 하나도 없거든.
형태소 분석과 표제어 추출, 동의어 사전은 달리는 → 달리다, 저렴한 ↔ 싼처럼 가까운 표현은 이어줘. 하지만 뜻 사이의 거리가 더 벌어지면 금세 한계가 드러나:
- "메모리 누수 어떻게 고쳐?"로는 "가비지 컬렉션 디버깅"을 못 찾아
- 영문에서 "은행이 우리 대출 거절"을 찾다가 강둑(river bank) 기사까지 함께 잡아
- "PyTorch M3에서 느림"으로는 "MLX로 Apple Silicon 학습 가속"을 못 봐
뜻을 좌표로 바꿔봐
필요한 건 단어가 아니라 의미를 좌표로 나타내는 방식이야. 같은 뜻을 담은 글이라면 사용한 단어가 달라도 가까운 좌표에 놓여야 해. 그 좌표가 바로 임베딩이야. 이 퀘스트에서는 글을 임베딩으로 바꾸고, 저장하고, 찾아내고, 실제 서비스에서 믿고 쓸 수 있게 만드는 전 과정을 다뤄.
내 데이터에 정말 필요한지 먼저 증명해
벡터 검색부터 들이밀지 말고 실제 자료에서 이런 빈틈이 얼마나 큰지 재봐. 사용자 쿼리 30개와 지식 베이스 문서 30개를 뽑은 뒤, 뜻은 분명히 맞는데 겹치는 토큰이 0인 쌍을 세는 거야. 이런 쌍이 많다면 벡터 검색을 도입할 이유가 충분해. 거의 없다면 BM25와 동의어 사전이 훨씬 싸고도 충분할 수 있어.