시맨틱 검색 vs. 어휘 검색 vs. 전문 검색
오늘날 우리가 살아가는 디지털 세계에서 검색 엔진은 우리 삶에 필수적인 요소가 되었으며, 정보를 빠르고 쉽게 접근할 수 있도록 도와줍니다. 이러한 검색 엔진의 핵심에는 정보가 어떻게 검색되는지를 결정하는 정보 검색 알고리즘이 있습니다.
전체 텍스트 및 어휘 검색과 같은 전통적인 방법부터 의미 검색과 같은 더 발전된 기술에 이르기까지 여러 정보 검색 알고리즘을 사용할 수 있습니다. 이러한 알고리즘은 각각 고유한 장점과 단점이 있으므로, 우리의 사용 사례에 맞는 최적의 정보 검색 알고리즘을 선택하는 것이 중요합니다.
이 글에서는 이러한 정보 검색 알고리즘을 다루며, 특히 어휘, 전체 텍스트, 의미 검색에 초점을 맞출 것입니다. 가장 간단한 것부터 시작해 보겠습니다: 어휘 검색입니다.
어휘 검색
키워드 검색이라고도 알려진 어휘 검색은 텍스트의 단어 수준 분석을 기반으로 하는 검색 알고리즘을 의미합니다(따라서 이런 이름이 붙었습니다). 이 정보 검색 알고리즘은 쿼리 용어가 텍스트에 나타나는 그대로 정확히 일치시킵니다. 예를 들어 검색 쿼리가 “run”이라면, 알고리즘은 문서에서 “run”이라는 용어의 모든 인스턴스를 반환합니다.
어휘 검색은 사용할 수 있는 가장 기본적인 정보 검색 알고리즘으로, 문서에서 우리 쿼리와 정확히 일치하는 항목을 포함하는 용어만 반환합니다. 따라서 어휘 검색은 특정 문자열이나 단어를 포함하는 문서 또는 레코드를 찾는 것처럼 정확성과 구체성이 요구될 때 특히 유용합니다.
그림: 간단한 어휘 검색의 예시.
그러나 어휘 검색의 단순성은 여러 가지 단점으로도 이어집니다. 첫째, 쿼리의 오타를 허용하지 않습니다. 예를 들어 실수로 “run” 대신 “ron”을 입력하면, 우리가 찾고 있는 결과를 얻지 못합니다. 둘째, 어휘 검색은 동의어, 어간 추출 또는 표제어 추출을 고려하지 않습니다. 따라서 “run”을 검색해도 “ran”이나 “running”처럼 다른 형태의 유사한 단어와는 일치하지 않습니다.
또한 쿼리를 기반으로 가장 관련성 높은 레코드를 찾고자 한다면 어휘 검색은 최선의 선택이 아닐 수 있습니다. 쿼리 용어를 포함하는 문서나 레코드에는 순서나 순위에 대한 개념이 없기 때문에, 어휘 검색이 반환한 결과의 관련성을 평가하기 어렵습니다.
보시다시피, 대부분의 정보 검색 사용 사례의 요구 사항을 고려할 때 어휘 검색에는 분명 상당한 한계가 있습니다. 게다가 사용자는 결과에 포함되는 용어와 관련해 더 많은 유연성을 요구하는 경우가 많은데, 어휘 검색에는 이 또한 부족합니다. 바로 여기에서 전체 텍스트 검색이 등장합니다.
전체 텍스트 검색
전체 텍스트 검색은 어휘 검색과 유사하게 작동하며, 쿼리에 포함된 용어를 포함하는 레코드를 찾으려 합니다. 그러나 전체 텍스트 검색은 어휘 검색보다 더 넓고 발전된 기능을 제공하여, 어휘 검색과 관련된 문제를 해결합니다.
전체 텍스트 검색을 구현할 때는 어간 추출 및 표제어 추출과 같은 인기 있는 자연어 처리(NLP) 기술이 자주 포함됩니다. 이는 “run”이라는 용어를 검색할 때 “ran”이나 “running”처럼 다른 형태의 유사한 단어가 포함된 모든 문서나 레코드도 결과에 포함된다는 것을 의미합니다.
그림: 전통적인 어휘 검색과 비교한 전체 텍스트 검색의 발전 예시.
관련성을 기준으로 검색 결과를 정렬하기 위해 TF-IDF 및 BM25 같은 알고리즘도 구현할 수 있습니다. 이 두 알고리즘에 대해 더 자세히 이야기해 보겠습니다.
TF-IDF와 BM25의 기본 사항
Term Frequency-Inverse Document Frequency (TF-IDF)는 주어진 용어 또는 쿼리에 대해 문서나 레코드의 관련성을 판단하기 위해 간단한 통계적 방법을 사용합니다. 이는 두 가지 구성 요소로 이루어져 있습니다:
Term Frequency (TF): 이는 문서에서 쿼리 용어가 나타나는 횟수를 계산합니다. 따라서 쿼리 용어가 문서에 더 자주 등장할수록 해당 문서의 TF 점수가 높아집니다.
Inverse Document Frequency (IDF): 이는 전체 컬렉션에서 쿼리 용어를 포함하는 문서의 비율을 계산합니다.
IDF 구성 요소의 주요 목표는 거의 모든 문서에 나타나는 경향이 있는 “a,” “an,” “the,” “and”와 같은 흔하고 의미가 적은 용어에 페널티를 부여하는 것입니다. 예를 들어, 쿼리 용어가 “mix and match”인 경우, 우리는 “and”가 많이 등장하는 문서보다는 “mix”와 “match”가 많이 포함된 가장 관련성 높은 문서를 원합니다. 마지막으로, 문서의 최종 TF-IDF 점수는 TF 점수와 IDF 점수를 곱하여 얻습니다.
TF-IDF의 주요 단점 중 하나는 관련성을 계산할 때 문서의 길이를 고려하지 않는다는 점입니다. 실제로 더 긴 문서는 쿼리 용어를 더 자주 포함할 가능성이 높습니다. 예를 들어, 쿼리 용어가 1,000단어 문서(문서 A)에 10번 나타나는 반면, 50단어 문서(문서 B)에는 5번만 나타난다면, 등장 횟수는 더 적더라도 문서 B가 더 관련성이 높을 수 있다고 주장할 수 있습니다.
BM25는 문서 길이를 고려하기 위해 추가 항을 도입하고 TF-IDF 방정식을 확장함으로써 TF-IDF의 이러한 한계를 해결합니다.
이를 통해 BM25는 주어진 쿼리에 대한 문서의 관련성을 측정할 때 더 긴 문서에 대한 편향을 제거합니다.
희소 임베딩의 개념
TF-IDF와 BM25는 모두 희소 임베딩으로 표현될 수 있습니다. 희소 임베딩은 n차원 벡터이며, 차원 수는 코퍼스 또는 문서 컬렉션에 있는 고유 용어의 수에 따라 달라집니다.
예를 들어, 총 10,000개의 고유 단어를 포함하는 문서 10개가 있다고 가정해 보겠습니다. 그러면 각 문서는 10,000차원 벡터로 변환되며, 각 차원은 해당 문서에서 특정 용어의 중요도를 나타냅니다.
그림: 문서를 희소 임베딩으로 변환하는 과정의 예시.
벡터의 차원 수는 코퍼스의 고유 용어 수에 의해 결정되므로, 우리는 종종 매우 높은 차원의 벡터를 얻게 됩니다. 또한 문서는 일반적으로 사용 가능한 용어 중 작은 일부만 포함하기 때문에, 위 이미지에서 볼 수 있듯이 이러한 벡터 요소의 대부분은 0이 됩니다. 이것이 이러한 벡터가 일반적으로 희소 임베딩이라고 불리는 이유입니다.
이제 모든 문서가 임베딩으로 표현되었으므로, 코사인 유사도 또는 유클리드 거리와 같은 일반적인 알고리즘을 사용하여 임의의 두 임베딩 간의 유사도를 계산할 수 있습니다. 직관적으로, 중요도가 높은 유사한 용어를 가진 두 문서는 높은 유사도를 갖게 됩니다.
전체 텍스트 검색에서 희소 임베딩이 갖는 장점에도 불구하고, 한 가지 중요한 단점이 있습니다. 바로 쿼리 용어의 의미론적 의미를 고려하지 않는다는 점입니다. 예를 들어, 쿼리가 “Apple device”인 경우, “apple”(과일)이 많이 포함된 문서가, 쿼리와 더 관련성이 높지만 “Apple”(회사)이라는 용어를 포함하지 않는 기술 문서보다 더 높은 순위를 차지할 수 있습니다.
그림: 의미론적 이해와 맥락이 필요한 예시 쿼리.
유사한 의미론적 의미를 가진 결과를 포함하는 것이 사용 사례의 요구사항이라면, 전체 텍스트 검색은 사용하기에 가장 적합한 정보 검색 알고리즘이 아닐 수 있습니다. 바로 이 지점에서 의미론적 검색이 등장합니다.
의미론적 검색
의미론적 검색은 의미론적 의미를 고려한 검색 결과를 원할 때 유용한 접근 방식입니다. 이전 섹션에서 언급한 예를 사용하면, “Apple device”와 같은 쿼리를 입력할 때 우리는 실제로 “apple”이라는 단어가 포함된 문서나 레코드를 찾는 것이 아닙니다. 대신, 기술, 바람직하게는 Apple 기기에 대해 논의하는 문서를 찾고자 합니다. 이 경우 전체 텍스트 검색은 원치 않는 결과를 반환할 것이므로, 의미론적 검색이 더 나은 선택입니다.
밀집 임베딩의 개념
의미론적 검색은 정교한 AI 모델을 활용하여 문서와 쿼리 용어를 임베딩으로 변환함으로써 작동합니다. 그러나 이러한 모델이 생성하는 임베딩은 흔히 밀집 임베딩이라고 불리며, 앞서 논의한 희소 임베딩과는 다릅니다.
밀집 임베딩에서는 각 벡터 차원의 값이 정확히 0인 경우가 거의 없으며, 차원 수 자체는 사용된 모델에 따라 달라집니다. 그러나 밀집 임베딩의 차원 수는 희소 임베딩보다 훨씬 낮습니다.
그림: 문서가 밀집 임베딩으로 변환되는 과정의 예시.
밀집 임베딩은 자신이 나타내는 콘텐츠에 대한 의미론적으로 풍부한 정보를 포함합니다. 따라서 두 밀집 임베딩이 의미론적으로 얼마나 유사한지 판단하려면, 코사인 유사도나 유클리드 거리와 같은 널리 사용되는 유사도 알고리즘을 간단히 사용할 수 있습니다.
의미론적 검색에서 벡터 데이터베이스의 역할
실제 정보 검색 애플리케이션에서는 수백만 또는 수십억 개의 밀집 임베딩을 다루게 될 가능성이 큽니다. 따라서 이러한 모든 임베딩을 컴퓨터 메모리에 저장하는 것은 비현실적이며, 이를 효율적으로 저장할 수 있는 데이터베이스 시스템이 필요합니다.
벡터 데이터베이스는 근사 최근접 이웃(ANN) 및 계층적 탐색 가능 소세계(HNSW)와 같은 고급 인덱싱 방법을 사용하여 방대한 양의 밀집 임베딩을 효율적으로 저장할 수 있게 해주는 시스템입니다. 또한 코사인 유사도와 유클리드 거리 같은 널리 사용되는 유사도 알고리즘을 사용하여 쿼리에 대해 의미론적으로 가장 관련성 높은 문서를 찾는 벡터 검색 작업을 수행하는 기능도 제공합니다.
그림: 벡터 검색 작업을 수행하는 워크플로.
또한 Milvus와 같은 인기 있는 벡터 데이터베이스는 하이브리드 검색과 같은 고급 기능을 제공하며, 이를 통해 밀집 임베딩과 희소 임베딩의 강점을 결합하여 벡터 검색을 수행할 수 있습니다. 이에 대해서는 다음 섹션에서 더 자세히 논의하겠습니다.
어휘 검색 vs. 전문 검색 vs. 의미 검색
이제 어휘 검색, 전문 검색, 의미 검색에 대해 자세히 이해했으므로, 이들의 매칭 메커니즘, 복잡도, 예시 사용 사례, 성능을 비교해 보겠습니다.
| 의미 검색 | 어휘 검색 | 전문 검색 | |
|---|---|---|---|
| 메커니즘 | 맥락과 의도 | 정확한 일치 | 키워드와 관련성 |
| 복잡도 | 높음 | 낮음 | 중간 |
| 성능 | 더 느림 | 빠름 | 보통 |
| 사용 사례 | NLP 기반 시스템, 검색 증강 생성(RAG), LLM 기반 애플리케이션, 추천 시스템 | 단순 검색 | 문서 중심 시스템 |
표: 어휘 검색 vs. 전문 검색 vs. 의미 검색
매칭 메커니즘 측면에서 어휘 검색은 쿼리의 정확한 용어와 일치시키기 때문에 세 가지 중 가장 단순합니다. 전문 검색은 전체 문서에서 쿼리 용어의 출현을 스캔하여 어휘 검색을 개선하며, 이를 통해 쿼리와의 관련성을 기준으로 결과를 정렬할 수 있습니다. 한편, 의미 검색은 고급 딥러닝 모델과 NLP 기법을 활용하여 의미와 맥락을 기반으로 쿼리 용어를 문서 컬렉션과 매칭합니다.
복잡도와 관련해서도 어휘 검색은 가장 단순한 선택지입니다. 전문 검색은 텍스트를 희소 임베딩으로 변환하는 TF-IDF 또는 BM25와 같은 알고리즘이 도입되기 때문에 약간 더 복잡합니다. 의미 검색은 텍스트를 밀집 임베딩으로 변환하기 위해 고급 딥러닝 모델을 사용하므로 가장 복잡합니다.
예를 들어, 코드 검색에서 변수 이름을 찾거나 문서에서 제품 ID를 찾는 것처럼 정확한 매칭이 중요한 경우 어휘 검색은 훌륭한 선택입니다. 전문 검색은 학술 데이터베이스나 법률 저장소 검색처럼 쿼리에 포함된 특정 용어나 개념이 있는 문서를 찾는 애플리케이션에 적합합니다. 의미 검색은 고객 지원 챗봇, 추천 시스템, 콘텐츠 발견처럼 맥락을 이해하는 것이 우선인 사용 사례에 이상적입니다.
성능 측면에서 의미 검색과 전문 검색은 복잡성 때문에 상대적으로 느린 반면, 어휘 검색은 접근 방식이 단순하기 때문에 더 빠릅니다.
하이브리드 검색의 개념
각 정보 검색 알고리즘의 다양성과 장단점을 고려할 때, 최선의 알고리즘을 선택하는 것은 쉽지 않으며 실제로 모든 요구 사항을 충족하지 못할 수도 있습니다. 실제 사용 사례에서는 효과적인 정보 검색 시스템이 사용자에게 의미론적 이해와 정확한 키워드 매칭을 모두 제공해야 하므로, 애플리케이션 내의 다양한 요구를 충족하기 위해 둘 이상의 알고리즘을 사용해야 할 수도 있습니다. 하이브리드 검색은 이러한 과제를 해결하기 위해 설계된 개념입니다.
하이브리드 검색을 사용하면 두 가지 서로 다른 검색 알고리즘을 결합할 수 있으며, 가장 일반적으로는 의미론적 검색과 전문 검색 또는 어휘 검색을 결합합니다. 그러나 하이브리드 검색을 구현하는 것은 서로 다른 시스템이 관여하기 때문에 과제를 수반합니다. 구체적으로, dense embeddings를 저장하고 의미론적 검색을 수행하려면 Milvus와 같은 벡터 데이터베이스가 필요하고, 전문 검색을 수행하려면 Elasticsearch와 같은 검색 엔진이 필요합니다.
그러나 서로 다른 검색 알고리즘을 수용하기 위해 두 개의 별도 시스템을 사용하면 새로운 복잡성이 생깁니다. 이는 별도의 구성과 유지 관리 작업을 처리해야 함을 의미하며, 이는 향후 통합 문제로 이어질 수 있습니다. 또한 이 접근 방식은 두 인프라에 데이터를 저장해야 하므로 비용을 두 배로 늘릴 수도 있습니다.
그림: 하이브리드 검색에서 Elasticsearch vs Milvus.
더 나은 해결책은 의미론적 검색과 전문/어휘 검색을 모두 지원할 수 있는 통합 시스템을 사용하는 것입니다. Milvus는 이 경우에 완벽한 오픈소스 벡터 데이터베이스입니다. 하이브리드 의미론적 및 전문 검색 구현을 지원하기 때문입니다. 또한 Milvus는 가장 정확한 결과를 얻기 위해 메타데이터 필터링 검색, 범위 검색, 및 재순위화도 지원합니다.
Milvus를 사용하면 dense embeddings, sparse embeddings, 메타데이터를 포함하여 다양한 유형의 검색에 필요한 모든 데이터를 저장할 수 있습니다. 이를 통해 의미론적 검색과 전문 또는 어휘 검색과 같은 하이브리드 검색을 수행할 수 있습니다. 고급 인덱싱 방법 덕분에 Milvus는 벡터 검색 작업에도 고도로 최적화되어 있어 Elasticsearch에 비해 정보 검색 프로세스를 크게 가속화합니다.
결론
정보 검색 알고리즘의 선택은 애플리케이션에서 검색 결과의 효율성과 관련성을 결정하는 데 중요한 역할을 합니다. 어휘 검색은 정확한 용어 매칭을 제공하므로 정확한 매칭이 필수적인 시나리오에 이상적입니다. 전문 검색은 어간 추출, 퍼지 매칭, TF-IDF 및 BM25와 같은 알고리즘을 사용한 관련성 순위 지정 같은 기법을 통합하여 어휘 검색을 발전시키며, 문서 중심 애플리케이션에 적합합니다. 한편, 의미론적 검색은 맥락과 의도를 이해하는 기능을 제공하므로 고객 챗봇과 같은 복잡한 NLP 기반 시스템에 매우 유용합니다.
그러나 유연하고 효율적인 검색 시스템에 대한 수요가 증가함에 따라, 하이브리드 검색은 여러 검색 알고리즘의 장점을 적용하는 실용적인 솔루션이 됩니다. 의미론적 검색과 전문/어휘 검색을 통합함으로써 Milvus는 유연성과 향상된 사용자 경험을 제공합니다. Milvus로 의미론적 검색과 전문 검색을 시도해 보려면 이 튜토리얼을 확인해 보세요.
관련 자료
계속 읽기

The AWS Outage Was a Wake-Up Call for Vector Database Cross-Region Disaster Recovery
Zilliz Cloud Had the Answer Before the Crisis. Zilliz Cloud is the world's first vector database with native cross-region disaster recovery.

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.


