데이터·DB

Semantic Search

시맨틱 서치

단어의 철자 일치가 아니라 문장의 '의미'로 문서를 찾는 검색 방식입니다. 질문과 문서를 각각 벡터(임베딩)로 바꾼 뒤, 벡터 사이 거리가 가까운 것을 관련 있는 결과로 봅니다. 그래서 검색어와 겹치는 단어가 하나도 없어도 뜻이 통하면 찾아냅니다. 동의어·자연어 질문·오타에 강해 키워드 검색의 한계를 보완합니다. 문장 임베딩 기법과 벡터 데이터베이스가 발전하면서 실용화됐고, 지금은 RAG의 기본 검색 방식으로 쓰입니다.

쉽게 말하면?

시맨틱 서치(semantic search)는 '뜻으로 찾는' 검색입니다. 글자가 똑같은 문서를 찾는 대신, 질문과 문서를 각각 숫자 벡터로 바꿔 의미가 가까운 것을 고릅니다. 그래서 '연차 쓰는 법'으로 검색해도 '휴가 신청 절차' 문서를 찾아 줘요. 키워드가 정확히 겹치지 않아도 되니 자연어 질문이나 동의어에 강합니다. 다만 뜻이 비슷하기만 하고 실제로는 틀린 문서도 끌려올 수 있어서, 키워드 검색이나 리랭킹과 함께 쓰는 경우가 많아요. 그래서 검색 정확도를 높이려면 임베딩 모델 선택이 중요합니다.

한 줄로 비유하면?

'연차 쓰는 법'으로 물어도 '휴가 신청 절차' 문서를 찾아 줍니다.

어디에 쓰이나?

케이스 1Google — 검색에 언어모델 BERT 적용

Google은 2019년 검색 순위에 언어모델 BERT를 도입했습니다 [2]. 'to', 'for' 같은 전치사의 뉘앙스까지 반영해 대화형 질의를 이해하도록 했습니다 [2]. 구글은 이를 지난 5년간 검색에서 가장 큰 도약이라고 표현했습니다 [2]. 처음에는 미국 영어 검색에 우선 적용한 뒤, 이후 다른 언어와 지역으로 넓혀 갔습니다 [2].
도입효과: 미국 영어 검색 10건 중 1건(약 10%)의 이해도 개선 (BERT 적용 기준) [2]

케이스 2OpenAI — 3세대 임베딩 모델 공개

OpenAI는 2024년 1월 시맨틱 검색용 임베딩 모델 text-embedding-3를 공개했습니다 [3]. 직전 세대 모델인 text-embedding-ada-002를 기준선으로 삼아 성능을 비교했습니다 [3]. 다국어 검색 벤치마크 MIRACL로 측정했습니다 [3]. 큰 모델은 최대 3072차원 벡터를 지원하고, 필요하면 차원을 줄여 저장·검색 비용을 낮출 수 있습니다 [3].
도입효과: 다국어 검색(MIRACL) 평균 점수 31.4%→54.9% (ada-002→text-embedding-3-large) [3]

케이스 3Facebook AI — 밀집 검색(DPR)이 키워드 검색을 앞서다

Facebook AI 연구진은 2020년 질문과 문서를 벡터로 인코딩해 유사도로 찾는 밀집 임베딩 검색 DPR을 발표했습니다 [5]. 질문용 인코더와 문단용 인코더를 따로 두는 이중 인코더 구조입니다 [5]. 고전 키워드 검색(BM25)과 검색 정확도를 비교했습니다 [5]. 여러 오픈도메인 QA에서 최고 성능을 세웠습니다 [5].
도입효과: 상위 20개 문단 검색 정확도 BM25 대비 +9~19%p(절대값) 향상 [5]

케이스 4네이버 검색(한국) — ColBERT 벡터 유사도 검색 서빙

네이버는 DEVIEW 2021에서 검색에 ColBERT 기반 벡터 유사도 검색을 적용·서빙한 경험을 공개했습니다 [4]. 수십억 규모의 대규모 임베딩을 실서비스 검색에 올릴 때 생기는 지연과 비용 문제를 다뤘습니다 [4]. 네이버 검색 조직이 직접 발표했습니다 [4]. 한국어 대규모 시맨틱 검색의 국내 대표 사례입니다 [4].
도입효과: 약 300억 개 벡터 서빙 규모의 시맨틱 검색 인프라 구축 (네이버 검색, ColBERT 벡터 유사도 기준) [4]

주의할 점은?

오늘 바로 해보기
01. OpenAI text-embedding-3-small로 사내 문서 30건을 임베딩해 벡터로 저장합니다.
02. 키워드가 겹치지 않는 자연어 질문을 넣어 의미로 문서가 검색되는지 확인합니다.
03. 같은 질문을 키워드 검색과 시맨틱 검색으로 각각 돌려 결과 차이를 비교합니다.
04. 뜻은 비슷하나 실제로는 틀린 문서가 상위에 오는 사례(오탐)를 찾아 메모합니다.
05. Google 검색 BERT 발표에서 '10건 중 1건' 표현의 적용 범위(미국 영어)를 확인합니다 [2].

한계와 진화
시맨틱 서치의 한계는 '주제는 비슷하지만 답은 틀린' 문서를 끌어오기 쉽다는 점입니다. 정확한 품번·법조문·부정어(‘~하지 않음’)처럼 글자 그대로가 중요한 질의에서는 오히려 약합니다 [6]. 임베딩 품질이 도메인에 좌우되고, 문서를 미리 벡터로 바꿔 저장하는 인프라도 필요합니다 [1]. 2019년 Sentence-BERT가 가장 비슷한 문장 쌍 찾기를 65시간에서 약 5초로 줄여 실용화의 길을 열었지만, 벡터 검색 인프라 자체는 여전히 운영 부담으로 남습니다 [1]. 임베딩은 문장을 통째로 뭉뚱그리기 때문에, 여러 조건이 겹친 복잡한 질의에서는 어느 조건이 중요한지 구분하기 어렵습니다 [6]. 사전학습 도메인과 실제 문서의 말투가 다르면 검색 품질이 떨어져, 도메인에 맞는 임베딩 선택이 중요합니다 [1]. 벡터를 미리 만들어 저장하고 갱신하는 인프라 부담도 함께 고려해야 합니다 [1]. 즉 만능이 아니라 키워드 검색을 보완하는 축입니다 [1].
진화 방향은 두 갈래입니다.

  1. 임베딩 모델이 계속 좋아지는 흐름입니다. OpenAI의 3세대 임베딩은 다국어 검색 점수를 이전 세대의 31.4%에서 54.9%로 끌어올렸습니다 [3].
  2. 키워드 검색과 합치는 하이브리드, 그리고 리랭킹과 결합해 정확도를 보정하는 방향입니다. 대규모 서빙도 자리 잡아, 네이버는 검색에 ColBERT 벡터 유사도 검색을 약 300억 벡터 규모로 올린 경험을 공개했습니다 [4]. 정확한 용어나 품번이 필요한 검색에는 BM25 키워드 검색을 나란히 두는 하이브리드가 기본값처럼 쓰입니다 [6]. 임베딩 모델과 벡터 데이터베이스가 함께 발전하면서, 시맨틱 검색은 사내 문서 검색과 RAG의 기본 검색 계층으로 굳어지는 흐름입니다 [3]. 뜻으로 검색하는 이 방식은 사내 지식 검색, 상품 추천, 고객 문의 응답까지 폭넓게 퍼지고 있습니다 [3]. 다만 키워드 검색을 대체하기보다 함께 쓰는 조합이 실무의 표준입니다 [6].

참고 자료

  1. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks — arXiv 논문(EMNLP)·Reimers & Gurevych(TU Darmstadt)·2019 — https://arxiv.org/abs/1908.10084
  2. Understanding searches better than ever before (Search에 BERT 적용) — 공식 블로그·Google·2019 — https://blog.google/products-and-platforms/products/search/search-language-understanding-bert/
  3. New embedding models and API updates — 공식 블로그·OpenAI·2024 — https://openai.com/index/new-embedding-models-and-api-updates/
  4. 네이버 검색 ColBERT 벡터 유사도 검색 서빙 (DEVIEW 2021 세션) — 공식 콘퍼런스 발표·네이버·2021 — https://deview.kr/2021/sessions/486
  5. Dense Passage Retrieval for Open-Domain Question Answering — arXiv 논문(EMNLP)·Facebook AI(Karpukhin 외)·2020 — https://arxiv.org/abs/2004.04906
  6. What is Semantic Search? — 공식 제품 가이드·Elastic·2026 접속 — https://www.elastic.co/what-is/semantic-search

대표 출처

arXiv 논문 (2019) · Reimers & Gurevych, Sentence-BERT