키워드 검색과 의미 기반 검색: 어느 한쪽이 항상 더 낫지는 않다
논문을 찾을 때는 두 가지 정반대의 실패를 겪게 된다. 정확한 전문용어를 입력했는데 그 단어가 들어간 문헌만 반복해서 나오거나, 자연어로 질문했더니 주제는 비슷해 보이지만 정작 필요한 방법·물질·대상을 다루지 않은 논문이 섞인다. 전자는 키워드 검색의 한계처럼 보이고, 후자는 의미 기반 검색의 한계처럼 보인다. 그래서 어느 한쪽을 더 발전된 검색으로 선택하면 문제가 해결될 것 같지만, 정보검색 연구가 보여 주는 답은 다르다. 두 방식은 같은 과제를 두고 우열을 가리는 경쟁자가 아니라, 서로 다른 종류의 관련성을 포착하는 도구다.
.png)
키워드 검색은 사용자가 입력한 단어와 문서에 실제로 적힌 단어의 일치를 중심으로 찾는다. 의미 기반 검색은 문장이나 문서의 의미를 숫자 벡터로 나타내는 임베딩(embedding)을 만들고, 표현이 달라도 뜻이 가까운 자료를 찾는다. 임베딩은 텍스트의 여러 특징을 수백 또는 수천 개의 숫자로 압축한 표현이며, 각 문서는 이 숫자들이 만드는 다차원 공간의 한 점이 된다. 검색어와 가까운 점을 찾으면 “adolescent sleep deprivation”을 입력했을 때 정확히 같은 단어가 없어도 “insufficient sleep among teenagers” 같은 표현을 발견할 수 있다.
그러나 이 예만 보면 의미 기반 검색이 키워드 검색을 완전히 대체할 것처럼 보인다. 실제 연구 질문에는 화합물명, 유전자 변이, 척도명, 법령 번호, 알고리즘명, 논문 제목처럼 한 글자 차이가 중요한 표현도 많다. “TP53 R175H”를 찾는 연구자에게 일반적인 종양억제 유전자 연구는 의미상 가깝지만 정답이 아니다. 반대로 한 분야에서 같은 개념을 서로 다른 용어로 부르거나, 오래된 논문과 최신 논문의 어휘가 다르면 정확한 단어 일치만으로는 관련 문헌을 놓친다. 결국 검색 방식을 고를 때는 “어느 기술이 더 현대적인가”가 아니라 “이 질문에서 어떤 실패가 더 자주 생기는가”를 판단해야 한다.
키워드 검색은 단순한 문자열 찾기가 아니다
현대의 대표적인 키워드 순위 알고리즘인 BM25는 문서에 검색어가 있으면 모두 똑같이 보여 주는 방식이 아니다. BM25는 특정 단어가 한 문서에 얼마나 자주 나타나는지, 전체 문서 집합에서는 얼마나 드문지, 문서 길이가 어느 정도인지를 함께 고려한다. 전체 자료에서 드문 단어는 여러 곳에 흔한 단어보다 구별력이 크다. 같은 단어가 문서에 반복되면 점수가 올라가지만, 열 번 나온 문서가 한 번 나온 문서보다 무조건 열 배 중요하다고 보지는 않는다. 반복 효과가 점차 줄어드는 ‘포화’를 적용하기 때문이다. 긴 문서는 단어가 우연히 더 많이 등장할 수 있으므로 문서 길이도 보정한다. 문서가 질문과 관련될 가능성을 이런 단서로 점수화하는 원리는 BM25와 확률적 관련성 모형을 정리한 고전적 설명에 자세히 제시돼 있다(2).
키워드 검색이 강한 상황은 분명하다. 정확한 논문 제목, 저자명, DOI, 임상시험 등록번호, 제품 코드, 희귀한 전문용어를 알고 있을 때다. 이때 단어가 실제로 같다는 사실 자체가 강한 근거다. 학술 검색에서는 방법명과 측정 도구명도 중요하다. 어떤 정책 전후의 변화가 비교 집단과 얼마나 달랐는지 보는 이중차분법(difference-in-differences)을 사용한 연구와 단순히 집단 차이를 비교한 연구는 얼핏 비슷해 보여도 연구 설계가 다르다. 의미 임베딩이 두 표현을 가깝게 놓으면 오히려 필요한 경계가 흐려질 수 있다.
키워드 검색의 약점은 사용자가 문헌의 언어를 미리 알아야 한다는 것이다. 저자가 같은 개념을 다른 동의어, 약어, 철자, 옛 용어로 썼다면 검색식에 그 표현이 들어가야 한다. 통제어휘를 제공하는 학술 데이터베이스는 이를 일부 해결하지만, 새 개념이나 아직 색인되지 않은 문헌에는 한계가 있다. 또한 단어가 같다고 의미가 같은 것도 아니다. “depression”은 정신건강 상태를 뜻할 수도 있고 경제 침체나 지형의 저지대를 뜻할 수도 있다. 키워드 일치는 정확한 형태를 보존하지만 문맥을 스스로 이해하지 못한다.
그렇다고 키워드와 학습 기반 검색의 경계가 언제나 선명한 것은 아니다. SPLADE 같은 학습형 희소 검색은 신경망이 관련 단어를 확장하고 가중치를 정하지만, 결과를 전통적인 역색인으로 검색할 수 있는 희소 벡터로 저장한다(8). 희소 벡터는 가능한 단어 차원의 대부분이 0이고 실제로 중요한 소수 단어에만 값이 있는 숫자 표현이다. 역색인은 책 뒤의 찾아보기처럼, 각 단어가 어느 문서에 있는지 미리 정리한 구조다. 이런 방식은 원문 단어와 학습된 확장을 함께 사용한다. 따라서 “키워드냐 AI냐”로 나누기보다, 검색 결과를 뒷받침하는 정확한 단어 일치 정보를 얼마나 보존하고 어떤 학습 데이터에 의존하는지 살피는 편이 더 정확하다.
의미 기반 검색은 표현의 차이를 넘지만 질문의 의도를 자동으로 알지는 못한다
의미 기반 검색의 핵심은 비슷한 뜻을 가진 텍스트를 가까운 임베딩으로 만드는 것이다. Sentence-BERT는 각 문장을 수치 벡터로 한 번만 바꿔 재사용해, 모든 문장 쌍을 무거운 언어모델로 다시 비교해야 했던 비용을 크게 줄였다(6). 논문의 실험 환경에서는 한 문장을 1만 개 문장과 비교하는 추정 시간이 기존 방식의 약 65시간에서 약 5초로 줄었다. 이 수치는 현재 모든 시스템의 속도를 뜻하는 것이 아니라, 문서를 미리 벡터화하는 구조가 왜 대규모 의미 기반 검색을 가능하게 했는지를 보여 준다.
검색어와 문서를 각각 하나의 벡터로 만드는 모델을 바이인코더라고 한다. 두 텍스트를 따로 계산하므로 문서 벡터를 미리 저장해 둘 수 있고 검색이 빠르다. Dense Passage Retrieval은 질문과 문단을 별도로 인코딩한 뒤 벡터 유사도를 계산해 가까운 문단을 찾았고, 당시 특정 분야에 한정되지 않은 질의응답 데이터셋에서 강한 BM25 기준선보다 상위 20개 문단 검색 정확도를 9~19%포인트 높였다(5). 하지만 이 결과는 질문에 답이 들어 있는 웹 문단을 찾는 특정 과제에서 나온 것이다. 긴 학술 초록, 정확한 표본 특성, 희귀한 방법명까지 같은 우위가 자동으로 이어진다는 뜻은 아니다.
그 과제의 성격을 이해해야 이 한계를 제대로 읽을 수 있다. MS MARCO는 100만 건이 넘는 익명화된 Bing 질의와 사람이 쓴 답변, 웹 문서에서 가져온 수백만 개 문단으로 구성되며, 질문에 답하는 문단의 순위를 매기는 과제를 제공했다(3). 따라서 이 자료에서의 성공은 실제 웹 질문에 맞는 문단을 찾는 능력을 보여 주지만, 긴 학술 초록이나 전문용어가 많은 분야의 문헌에서도 같은 성능이 나온다고 보증하지는 않는다.
학술문헌에는 논문 간 인용 관계를 학습에 이용한 전용 임베딩도 있다. SPECTER는 제목과 초록을 입력하고 인용 연결을 관련성 신호로 사용해 과학 문서 벡터를 만들었다(14). SciNCL은 인용 그래프에서 가까운 이웃을 더 세밀하게 골라 학습했다(15). 이런 모델은 비슷한 연구 분야나 후속 연구를 찾는 데 유용하지만, 인용이 많거나 같은 연구 공동체에 속한다는 이유만으로 사용자의 질문과 정확히 맞는다고 판단할 위험도 있다. 인용 관계는 학문적 근접성의 한 신호이지 모든 검색 의도의 정답은 아니다.
한 개의 임베딩이 모든 학술 과제를 잘 처리한다고 가정해서도 안 된다. SciRepEval은 분류, 수치 예측, 유사 문서 순위, 특정 질문에 대한 검색 등 24개 과제를 묶어 평가했다(16). 기존 과학 문서 임베딩은 한 과제에서 좋은 성능을 내더라도 다른 형식의 과제에서 같은 성능을 유지하지 못했고, 과제 유형을 구분해 여러 표현 방식을 학습한 모델이 전체 성능을 개선했다. 독자에게 필요한 교훈은 특정 모델 이름이 아니다. “비슷한 논문 추천”, “정확한 연구 방법 검색”, “질문에 답하는 근거 문단 찾기”는 모두 다른 관련성을 요구하므로 같은 벡터 하나로 해결되지 않을 수 있다는 점이다.
의미 기반 검색은 희귀 용어와 학습 범위 밖의 표현에서도 실패할 수 있다. 신경 정보검색의 어휘 일치를 분석한 연구는 여러 신경 검색 모델이 학습 영역 밖의 문서나 학습에서 드물었던 단어를 만났을 때, 정확한 단어 일치를 관련성 판단에 제대로 활용하지 못할 수 있음을 보였다(18). 신약 코드, 단백질 변이, 설문 도구 약어, 지역 고유 정책명처럼 정확한 형태가 중요한 검색에서는 키워드 경로를 남겨야 한다. 의미상 그럴듯한 결과는 정확한 식별자를 포함한 결과를 대신할 수 없다.
검색 모델이 포착하는 관계의 정교함과 계산 비용 사이에도 여러 절충 방식이 있다. 바이인코더는 빠르지만 검색어와 문서를 각각 하나의 벡터로 압축하면서 세밀한 단어 관계를 잃을 수 있다. 크로스인코더는 검색어와 후보 문서를 한꺼번에 읽어 두 텍스트의 세밀한 관계까지 판단할 수 있지만, 모든 문서에 적용하기에는 느리다. 그래서 빠른 검색기가 먼저 수십~수백 개 후보를 만들고, 크로스인코더가 그 후보만 다시 정렬하는 2단계 구조가 흔하다. BERT 문단 재순위화 연구는 이 구조를 초기부터 명확히 보여 줬다(9). ColBERT는 문서와 질문을 미리 별도로 인코딩하되 마지막 단계에서 단어 단위로 비교해, 하나의 벡터와 완전한 쌍별 비교 사이의 절충안을 제시했다(7).
밀집 텍스트 검색 설문은 이 구분을 더 넓게 정리한다(13). 바이인코더는 첫 후보군을 빠르게 만들기에 적합하고, 크로스인코더는 검색어와 문서를 한 쌍씩 비교하는 비용이 커서 보통 재순위화에 쓰인다. 또 밀집 검색 성능은 학습 자료, 질의 유형, 단어 겹침, 관련 없는 문서를 학습 예시로 고르는 방식, 근사 색인, 분야 차이에 영향을 받는다. 설문이 정리한 연구는 최신 임베딩과 대규모 언어모델 재순위화 이전까지의 범위이므로, 여기서 얻을 수 있는 결론은 특정 모델의 최신 순위가 아니라 구조별 비용과 실패 조건의 차이다.
하이브리드 검색은 두 결과를 섞는 버튼이 아니라 검증할 설계다
하이브리드 검색은 보통 키워드 검색과 의미 기반 검색을 함께 실행한 뒤 두 순위 목록을 하나로 합친다. 가장 단순한 장점은 한쪽의 실패를 다른 쪽이 보완할 가능성이다. 정확한 식별자와 전문용어는 BM25가 살리고, 다른 표현으로 쓰인 같은 개념은 임베딩이 살릴 수 있다. 실제로 과학 문헌을 대상으로 희소 검색과 SPECTER2를 결합한 한 연구에서는 두 방식이 단독으로 비슷한 수준이었지만 결합 결과가 더 좋았다(17). 다만 이 연구는 오래된 소규모 의학 자료 집합 하나를 사용한 사전출판본이므로, 숫자를 모든 학술 검색에 일반화해서는 안 된다. 중요한 것은 보완 가능성을 대상 자료에서 직접 측정했다는 점이다.
.png)
두 순위를 합치는 방법도 결과를 바꾼다. Reciprocal Rank Fusion, 줄여서 RRF는 각 결과의 원점수 대신 몇 위에 올랐는지를 사용한다. 서로 단위가 다른 BM25 점수와 벡터 유사도를 바로 더하기 어렵기 때문에, 순위만 이용하면 간단하게 결합할 수 있다. RRF 원 논문은 당시의 여러 정보검색 실험에서 개별 검색 시스템과 비교 대상이었던 다른 결합 방식보다 좋은 결과를 보고했다(10). 하지만 RRF가 언제나 최선이거나 조정이 필요 없는 것은 아니다. 하이브리드 결합 함수 분석은 실험한 조건에서 RRF가 두 순위의 결합 강도를 정하는 설정값에 민감했고, 두 점수를 서로 비교할 수 있는 범위로 바꾼 뒤 학습한 가중합이 더 나은 경우를 보였다(11). 검색 서비스의 “하이브리드” 표시만으로 어떤 결합법과 가중치가 쓰였는지 알 수 없다는 뜻이다.
실제 시스템에서는 후보 검색, 순위 결합, 재순위화, 필터링의 순서까지 정해야 한다. OpenSearch의 하이브리드 검색 문서는 키워드와 의미 하위 질의를 실행한 뒤 검색 파이프라인에서 점수 정규화나 순위 결합을 적용하는 구조를 보여 준다(19). Azure AI Search는 BM25와 벡터 검색을 병렬 실행하고 RRF로 합친 뒤 필요하면 의미 재순위화를 적용한다(20). Google Vertex AI Vector Search는 밀집 벡터와 희소 벡터를 함께 보내는 방식을 제공한다(21). 이 문서들은 구현 방법을 설명하는 공급자 자료이지 독립적인 효과 검증은 아니다. 같은 ‘하이브리드’라는 이름 아래에서도 문서 표현 방식, 결합, 필터, 재순위화가 다르다는 점을 이해하는 데 가치가 있다.
어느 구성이 더 좋은지는 대표 질문과 관련성 판단으로 평가해야 한다. 관련성 판단은 사람이 각 검색 결과가 질문과 얼마나 관련 있는지 판정해 둔 자료다. 이미 알고 있는 논문 몇 편이 나오는지만 보면 새로운 관련 문헌을 얼마나 놓치는지 알 수 없다. 상위 10개 결과의 순서가 중요한 탐색 검색과, 관련 논문을 최대한 빠짐없이 모아야 하는 체계적 문헌고찰은 같은 평가 지표를 써서도 안 된다.
nDCG@10은 상위 10개에서 더 관련성 높은 문서가 앞에 있는지를 보는 지표이고, Recall@k는 상위 k개 결과 안에 전체 관련 문헌이 얼마나 들어왔는지를 본다. 클릭률은 사용 편의와 순위를 반영하지만 사실상 관련 있는 문헌을 모두 찾았는지는 알려 주지 않는다.
BEIR은 질의응답, 사실 확인, 생의학 검색, 인용 예측 등 18개 서로 다른 자료 집합에서 희소 검색, 밀집 검색, 늦은 상호작용, 재순위화 방식을 비교했다(1). 핵심 결과는 하나의 승자가 아니라 자료 집합에 따른 큰 변동이었다. BM25는 강한 기본선으로 남았고, 학습 기반 모델의 성능은 영역에 따라 달라졌다. TREC Deep Learning 평가 자료와 Pyserini가 강조하듯, 공정한 비교를 하려면 같은 문서 집합, 같은 질문, 같은 관련성 판단, 같은 평가 계산을 사용해야 한다(4)(12). 서로 다른 서비스 화면에서 좋아 보이는 결과 몇 개를 비교하는 것은 평가가 아니다.
학술 검색에서 현실적인 출발점은 질문의 성격을 나누어 보는 것이다. 제목·저자·DOI·정확한 방법명처럼 정확한 표기 자체가 중요한 탐색은 키워드를 우선한다. 용어를 아직 모르거나 여러 분야의 표현을 연결해야 하는 탐색은 의미 기반 검색으로 후보를 넓힌다. 중요한 연구를 빠뜨리면 안 되는 검색은 두 후보군을 합치고, 중복을 제거한 뒤, 필요하면 더 정교한 재순위화를 거친다. 마지막으로 실제 질문 표본을 만들어 어떤 관련 문헌을 찾고 놓쳤는지 확인한다. 의미 기반 검색은 질문을 이해하는 마법이 아니고, 키워드 검색은 낡은 문자열 도구가 아니다. 둘은 관련성을 판단하는 서로 다른 단서를 포착하며, 좋은 검색은 그 차이를 숨기지 않고 설계와 평가에 이용한다.
출처
1. BEIR - https://proceedings.neurips.cc/paper/2021/hash/65b9eea6e1cc6bb9f0cd2a47751a186f-Abstract.html
2. The Probabilistic Relevance Framework: BM25 and Beyond - https://doi.org/10.1561/1500000019
3. MS MARCO - https://arxiv.org/abs/1611.09268
4. TREC Deep Learning Track - https://doi.org/10.1145/3404835.3463249
5. Dense Passage Retrieval - https://aclanthology.org/2020.emnlp-main.550/
6. Sentence-BERT - https://aclanthology.org/D19-1410/
7. ColBERT - https://doi.org/10.1145/3397271.3401075
8. SPLADE v2 - https://arxiv.org/abs/2109.10086
9. Passage Re-ranking with BERT - https://arxiv.org/abs/1901.04085
10. Reciprocal Rank Fusion - https://doi.org/10.1145/1571941.1572114
11. An Analysis of Fusion Functions for Hybrid Retrieval - https://doi.org/10.1145/3596512
12. Pyserini - https://doi.org/10.1145/3404835.3463238
13. Dense Text Retrieval Based on Pretrained Language Models: A Survey - https://doi.org/10.1145/3637870
14. SPECTER - https://aclanthology.org/2020.acl-main.207/
15. SciNCL - https://aclanthology.org/2022.emnlp-main.802/
16. SciRepEval - https://aclanthology.org/2023.emnlp-main.338/
17. Sparse Meets Dense - https://arxiv.org/abs/2401.04055
18. Match Your Words! - https://arxiv.org/abs/2112.05662
19. OpenSearch hybrid search - https://docs.opensearch.org/latest/vector-search/ai-search/hybrid-search/index/
20. Azure AI Search hybrid search - https://learn.microsoft.com/en-us/azure/search/hybrid-search-overview
21. Vertex AI Vector Search hybrid queries - https://cloud.google.com/vertex-ai/docs/vector-search/query-index-public-endpoint#hybrid_queries