오픈소스 검색엔진 베스파 Open source search engine Vespa

2017년 9월 26일에 Yahoo가 Vespa를 오픈해서 오픈소스로 공개했습니다.

먼저 밑에 프로젝트의 URL을 올려드립니다.
http://vespa.ai/

개인적으로 상당히 큰 사건이라고 생각합니다.

우선 Yahoo가 가진 핵심 기술 중에 절대로 공개하지 않을 것만 같은 것 중에 항상 언급이 되는 것 중에 다섯손가락 안에 꼽히는 것이 Vespa입니다.

하지만 Vespa가 뭔지 대부분의 분들은 모를 것입니다.  간단히 설명하면 Vespa는 원래는 검색엔진이었습니다. 하지만 최초에 만들어지고 Yahoo 내에서 계속 사용하면서 발전시켜서  기능이 많이 확장되었고 성숙하게 발전해서 통합 콘텐츠 처리 플랫폼이 되었습니다.

저도 Vespa를 이용해서 일을 했던 적이 있습니다만 매우 오래전이기 때문에 제가 봤던 것보다는 지금의 버전이 훨씬 더 많이 확장되었고 발전했을 것이라고 생각합니다.

조금 구체적으로 설명하면

앞서 말씀드린 것 처럼 Vespa는 검색엔진을 중심으로 둔 통합 콘텐츠 처리 플랫폼의 콤포넌트 셋입니다.  간단히 생각하면 검색엔진이라고 보면 되지만 일반적인 Solr이나 Elastic과 같은 검색엔진 보다는 주변에 가진 부속 컴포넌트들이 훨씬 더 많습니다.

Vespa의 역사를 보면 Vespa는 노르웨이의 엔지니어들이 주축으로 만든 한때 유럽의 Top1 검색엔진이었던 Fast검색엔진의 갈래입니다. Fast검색엔진은 후에 시장 주도권을 뺏긴후 차츰 회사 자체가 분할 매각되어서 지금은 거의 자취가 사라졌습니다.

분할된 Fast사는 Yahoo가 일부를 인수했고 시간의 간격을 두고 Microsoft가 일부를 인수했고 나머지 분할된 파트는 지금은 어찌되었는지 지금은 잘 모르겠습니다.

이 중에 Yahoo가 Fast에서 인수한 분할 부분은 Web search를 담당하는 쪽이었는데 인수한 Web search engine 중에  crawler같은 것을 버리고 vertical 검색 및 content platform으로 발전시킨 것이 Vespa입니다.  Vespa가 crawler같은 것을 버리고 web search 엔진을 추구하지 않은 이유는 Yahoo는 그당시에 이미 Inktomi web search를 가지고 있었기 때문에 Web search가 또 필요하지 않은 상태여서 Vertical search engine으로 방향을 전환하게 됩니다.

Vespa는 오토바이 브랜드명이기도 하지만 Vertical Search Plafrom의 약어입니다. 이름에 추구하는 바를 넣었듯이 한창때에는 세계 최고의 Vertical  Search Platform이라고 부를만 했습니다만 지금은 모르겠습니다. 검색 엔진쪽 만의 기능은 Elastic Search와 비교를 해봐야 하겠습니다.

Hadoop의 창시자인 더그커팅도 Yahoo에 근무하던 시절이 있었기 때문에 루씬도 Vespa에도 상당한 영향을 주었다고 알려져 있습니다. 때문에 Elastic이니 Solr이니 하는 Lucene기반의 것들과 비슷한 면도 많습니다.

검색엔진의 측면에서는 현재 주류라고 할 수 있는 Elastic Search와 비교를 해봐야 하겠습니다만 전체 기능의 광범위함과 성능을 볼 때는 Elastic Search가 Vespa를 따라가지 못할 것 같습니다.  하지만 편리함의 측면이라면 Elastic search가 더 나을 것입니다.

Vespa를 보면 코어 모듈의 튼튼함과 오랜 역사, 깔끔한 구조, 다양한 주변기능은 유럽 엔지니어들의 탁월한 능력을 엿볼 수 있게 해줍니다. 소스코드도 매우 깔끔하고 구조화가 잘 되어 있는 편이고 작동도 일관성있게 작동하는 것이 특징입니다.  소스코드를 들여다 보는 것 만으로도 많은 공부가 됩니다.

부속 콤포넌트 및 주변 콤포넌트로는 ML ranking(MLR이라고 부릅니다)을 비롯한 자체 개발한 문서저장용 NoSQL, 분산 데이터 파이프라인, 페더레이션(Federation)을 위한 컨테이너 등도 모두 가지고 있습니다.

그리고 여기에 Yahoo의 또 하나의 오픈 소스 선물인  Hadoop과 결합해서 사용하면 최고의 Content Agility Platform을 구성할 수 있게 됩니다.

MLR은 기계학습 기반의 검색결과 랭킹 기능입니다. GBDT기반으로 되어 있었습니다만 오픈 소스 버전에 탑재가 되었는지는 모르겠습니다.  (아마 되어 있을 것입니다. 분리하기 어렵기 때문에) 그리고 다국어 형태소 분석기와 Yahoo의 강력한 언어처리 모듈이 결합되어 비교적 매끈한 언어처리 기능까지도 지원했었습니다. 형태소 분석기와 언어처리 모듈은 오픈소스 버전에는 아마도 포함되지 않을 것입니다.

페더레이션 컨테이너 여러 검색엔진의 결과를 하나로 병합해주는 플랫폼을 말합니다.

분산 데이터 파이프라인은 소스로부터 검색엔진까지의 데이터 파이프라인으로 검색엔진으로 가기전까지 콘텐츠를 가공, 병합, 변형하는 플랫폼입니다.

이외에도 Phrase match와 Proximity 계산을 위한 고속 FSA 라이브러리와 그 외에 부속품들이 잔뜩 들어 있는 종합선물세트입니다.

대략 여기까지만 보셔도 알겠지만 대형 인터넷 포털사이트에서 사용하던 수십억건의 콘텐트를 관리, 가공, 활용, 서비스하는데 사용했던 솔루션을 이제는 누구나 사용할 수 있다는 것입니다.

기쁜일이지만 개인적으로는 서글픈 감상에도 젖어봅니다. Yahoo가 저렇게 하나씩 보따리를 풀고 사라져 가네요.

Author: euriion

답글 남기기