어제는 미래의 검색의 모습을 상상하면서, 검색의 중심에 놓일 모바일 기기의 다양한 입력수단/감각기관에 대해서 말씀드렸습니다. 모바일기기에서는 키보드를 통한 키워드 입력이 부자연스럽고 힘들기 때문에, 대체 입력수단인 카메라, 마이크 등으로 더 풍부한 데이터를 입력받을 수 있고, 그런 데이터를 활용해서 다양한 방식의 검색이 가능하다는 것입니다. 구체적으로 그런 입력수단을 통해서 얻은 정보를 어떻게 활용할 것인가? 즉, 미래의 검색의 모습을 상상하기에 앞서 현재까지의 검색엔진의 구조와 발전방향에 대해서 살펴보는 것도 중요할 것같아서, 제목 (검색의 미래)와는 조금 동떨어진 '검색의 과거'를 본 포스팅에서 다루려고 합니다.
아래의 그림도 지난 발표자료에 포함되어있는 것입니다. 이 그림 한장으로 현재의 검색엔진의 구조와 현재까지 검색엔진에 대한 연구의 방향을 한눈에 확인할 수 있습니다. 어제도 짧게 언급했지만, 검색엔진이란 사용자로부터 키워드/검색어를 입력받아서 외부의 웹클라우드에서 해당 키워드를 포함하는 문서를 찾아와서 적당히 정열해서 보여주는 기능을 제공합니다. 그런데, 사용자들이 입력하는 모든 키워드에 대해서 실시간으로 웹클라우드를 뒤질 수가 없기 때문에, 대부분의 검색엔진은 크게 3부분/기능을 제공하고 있습니다. 바로, 1) 웹클라우드에 존재하는 많은/다양한 문서들을 검색엔진 데이타스토리지로 긁어오는 Crawling, 2) 크롤링된 많은 문서들에서 키워드들을 추출해서 키워드별로 문서들을 역색인하는 Indexing, 그리고 3) 사용자가 입력한 키워드에 매칭되는 문서군에서 사용자의 의도에 가장 적합한 문서를 취합하고 정열해주는 Ranking이 바로 검색엔진의 3대 기능/요소입니다. 참고로, 크롤링과 인덱싱은 보통 오프라인에서 진행되는 것이고, 랭킹은 오프라인과 온라인에서 동시에 진행될 수 있습니다. 대표적인 오프라인 랭킹알고리즘이 바로 구글에서 사용하는 PageRank입니다.
검색엔진이 이렇게 Crawling, Indexing, Ranking으로 구성되어있기 때문에 (실제는 더 복잡한 기능과 다양한 요소들이 포함됩니다.), 현재까지의 검색엔진의 발전방향도 이들 세기능을 어떻게 고도화시킬 것인가가 주요 관건이었습니다. 크롤링의 고도화란 다름 아닌 더 많은 웹문서들을 찾는 것입니다. 외부 웹클라우드에 존재하는 웹문서들은 크롤러라는 로봇/에이전트 (다음의 경우, 다모아 DAUMOA라는 봇을 이용합니다.)를 이용해서 수집하는 경우도 존재하고, 국내의 네이버, 다음, 네이트 등의 포털에서처럼 내부의 카페, 블로그, 지식 등의 내부 DB를 통해서 웹문서들을 수집하기도 합니다. 크롤링, 즉 얼마나 많은 문서를 모으느냐? How Many?와 관련해서 재미있는 일화로는, 2008년도에 잠깐 세간에 이슈가 되었던 Cuil.com입니다. '쿨'이 처음 런칭하면서 내세웠던 것이 바로 세계 최대의 인덱싱문서를 수집했다고 발표했습니다. 물론, 바로 몇일 뒤에 구글이 그것보다 수배, 수십배나 많은 문서 (1조 또는 10조? 정확한 수치는 기억나지 않습니다.)를 색인했다고 밝혔기 때문에 하나의 해프닝으로 끝났습니다. 이 해프닝에서 보듯이, 검색엔진의 성능을 평가하는 지표로써 색인된 문서의 수, 즉 크롤링 능력에 대한 연구가 검색엔진의 주요 축을 담당하고 있습니다. 두번째로, 앞서 설명했듯이 크롤링을 통해서 너무 많은 문서들이 데이타스토리지에 저장되어있기 때문에, 사용자가 검색어를 입력할 때마다 바로바로 관련된 문서를 찾아서 제공해주는 것에 많은 시간이 필요합니다. 그렇기 때문에, 이들 많은 문서들을 빠르게 스캔하기 위해서 개발된 기술이 바로 색인입니다. 엄밀히 말해서, 검색엔진에서 사용하는 색인방식은 '색인'이 아니라, '역색인'기술입니다. 색인은 단순히 문서별로 키워드를 뽑아내서 정열하는 것이고, 역색인은 반대로 키워드별로 해당 키워드를 포함하는 문서들을 정열시키는 것입니다. 이렇게 역색인을 해야, 사용자가 입력한 키워드에 바로 반응해서 문서들을 제공해줄 수가 있습니다. 이 색인기술은 얼마나 빨리 문서를 찾아주느냐? How Fast?를 위한 기술입니다. 문서들을 빨리 그리고 효율적으로 스캔할 수 있는 방법을 제공해주는 것이 이제까지의 검색엔진의 두번째 연구 축이었습니다. (참고로, 몇 달 전에 구글에서 카페인이라는 기술을 소개했는데, 이 카페인이 바로 빠른 색인과 조회를 위한 기술입니다.) 마지막으로, 사용자 입력 키워드를 포함하는 많은 문서들 중에서 사용자가 의도했던 검색결과를 효과적으로 보여주는 것이 바로 랭킹입니다. 랭킹은 단순히 입력 키워드의 포함여부를 시작으로 해서, 문서의 인기도 및 신뢰도 (보통 페이지랭크에서 제공하는 것)으로 발전했다가, 다음 포스팅에서 밝힐 언제 문서가 작성되었느냐? 누가 문서를 작성했느냐? 어디에서 작성했느냐? 등의 다양한 부가 정보들을 활용하도록 발전하고 있습니다. 이 랭킹은 얼마나 정확한 검색결과를 제공하느냐? How Accurate?에 대한 것을 제공합니다. 다양한 랭킹 요소들과 알고리즘이 여전히 계속 제안되고 있고, 많은 이들이 가장 관심을 가지고 연구하는 것도 랭킹일 듯합니다. 크롤링은 적당히 큰 스토리지가 존재하고, 꾸준히 문서들을 서핑하다보면 자연스럽게 채워지는 요소이고, 색인/역색인 기술은 거의 표준화되었지만, 랭킹기술만큼은 각 검색엔진들마다 각각 장단점들을 가지고 있고, 또 타 엔진들과 차별화할 수 있는 요소이기 때문에, 크롤링과 인덱싱보다는 랭킹에 대한 연구가 더 활발한 것도 그런 이유입니다.
간단히 검색엔진의 구조/기능은 크롤링, 인덱싱, 랭킹으로 이뤄지고, 그렇기 때문에 현재까지는 얼마나 많은 문서들을 수집했는가? 얼마나 빠르게 수집된 문서를 스캔할 수 있는가? 그리고, 찾은 문서들을 얼마나 효과적으로 보여줄 것인가?가 검색엔진의 주요 연구 및 발전 방향이었습니다. 앞으로 더 개선의 여지가 많이 있긴 하지만, 이런 기본 기능에서의 비약적인 변화를 몸소 느끼기에는 어려울 것같습니다. 그렇기에, 후속 포스팅에서 다룰 개인화검색이나 비접촉검색 등의 새로운 영역 (순수 검색의 영역에서는 조금 벗어났지만)에서 큰 발전이 있으리라 봅니다. 실제, 개인화검색 (또는 문맥검색)은 실제 랭킹알고리즘의 개선으로 봐도 무방합니다. 그리고, 비접촉검색은 검색환경이 PC에서 모바일기기로 넘어가면서 자연스럽게 발생한 분야입니다.
반응형