개발/용어 사전

Semantic Search란? 키워드가 아니라 의미로 검색하는 방식

cedis 2026. 6. 19. 01:33
AI 응용 기술 용어 정리

Semantic Search는 같은 단어가 없어도 의미가 가까운 문서를 찾는 검색 방식입니다.

핵심 요약

검색에는 크게 단어를 보는 검색과 의미를 보는 검색이 있습니다. 둘 중 하나가 항상 정답은 아니며, 서비스에서는 둘의 장단점을 이해해야 합니다.

  • Semantic Search
  • Keyword Search와 Lexical Search
  • TF-IDF와 BM25의 위치

1. 한 줄로 정의하면

Semantic Search는 query와 문서를 embedding vector로 바꾼 뒤, 의미적으로 가까운 결과를 찾는 검색 방식입니다.

Keyword Search
입력한 단어가 문서에 얼마나 잘 등장하는지 보는 검색입니다.
Lexical Search
문자열, 단어, 형태 같은 표면적 표현을 기준으로 찾는 검색입니다.
Semantic Search
표현이 달라도 의미가 가까운 결과를 찾는 검색입니다.
BM25
검색 엔진에서 많이 쓰이는 키워드 기반 랭킹 함수입니다.

2. 왜 이 개념이 필요했나

콘텐츠 서비스에서 '로그인 안 됨'을 검색했는데 기존 문서는 'JWT 인증 실패'라고 쓰여 있을 수 있습니다. 키워드 검색만 쓰면 놓칠 수 있습니다.

반대로 'JWT'라는 정확한 기술명을 찾고 싶을 때는 semantic search가 애매한 글까지 가져올 수 있습니다. 이때는 키워드 검색이 더 강합니다.

따라서 Semantic Search와 Keyword Search는 경쟁 관계라기보다 서로 보완하는 관계입니다.

3. 동작 흐름

1
키워드 검색
query에 등장한 단어가 문서에 있는지 봅니다.
2
의미 검색
query와 문서를 벡터화해서 의미적 거리를 계산합니다.
3
결과 비교
정확한 단어가 중요한 검색인지, 표현이 달라도 의미가 중요한 검색인지 판단합니다.
4
Hybrid 후보
두 점수를 합쳐 검색 품질을 높일 수 있습니다.

4. 구조를 그림처럼 보면

순서 흐름
1
키워드 검색
query에 등장한 단어가 문서에 있는지 봅니다.
2
의미 검색
query와 문서를 벡터화해서 의미적 거리를 계산합니다.
3
결과 비교
정확한 단어가 중요한 검색인지, 표현이 달라도 의미가 중요한 검색인지 판단합니다.
4
Hybrid 후보
두 점수를 합쳐 검색 품질을 높일 수 있습니다.

5. 서비스 예시로 이해하면

지식베이스형 서비스의 초기 RAG는 embedding 기반 semantic retrieval로 시작할 수 있습니다. 사용자가 자연어로 쓴 질문과 의미가 가까운 콘텐츠를 찾기 좋기 때문입니다.

하지만 개발 지식베이스에서는 정확한 키워드도 중요합니다. 예를 들어 'sourceHash', 'JWT', 'Spring Scheduler' 같은 단어는 의미보다 정확 매칭이 더 중요할 수 있습니다.

query: "로그인이 계속 실패해요"

keyword search: "로그인", "실패" 포함 글 우선
semantic search: "JWT 인증 오류", "토큰 만료" 글도 후보로 찾음

6. 헷갈리기 쉬운 비교

검색 방식강한 상황약한 상황
Keyword/Lexical Search 정확한 용어, 에러 코드, 함수명 검색 표현이 다르면 놓칠 수 있음
Semantic Search 자연어 질문, 비슷한 의미 찾기 정확한 고유명사 검색이 흐려질 수 있음
Hybrid Search 의미와 정확 용어가 모두 중요한 검색 점수 결합과 튜닝이 필요함

7. 실무에서 조심할 점

  • semantic search를 쓰면 모든 검색 문제가 해결된다고 생각하면 안 됩니다.
  • 개발 지식베이스에서는 함수명, 에러 코드, 클래스명이 중요하므로 lexical search도 필요합니다.
  • 한국어는 형태 변화가 많아 단순 공백 기준 키워드 검색이 약해질 수 있습니다.

이번 글에서 기억할 것

  • Semantic Search는 의미로 찾고, Keyword Search는 단어로 찾습니다.
  • 기술 지식베이스에서는 둘 다 필요합니다.
  • Hybrid Search는 두 방식을 섞어 검색 품질을 높이려는 접근입니다.

스스로 점검

  • 에러 코드 검색에는 어떤 방식이 유리한가?
  • 자연어 질문 검색에는 어떤 방식이 유리한가?
  • 왜 둘을 섞는 방향이 나오는가?