구글 검색엔진 5등분 해보자! [parks]

구글 검색엔진을 5부분으로 구분하여 그 요소들의 하는 역할과 의미 각 요소들의 중요성과 상호 작용을 통한 최적화에 대하여 설명하였다
나는 블로그를 작성하면서 궁금했던 구글 검색엔진의 큰 틀과 어떤 방식으로 운영되는지 필요한 요소가 무엇인지 크롤러, 크롤링, 색인, 문서 최적화, 구글 파일시스템 등에 관하여 알아본 내용을 5부분으로 나누어 정리하여 작성하였다.. 

구글 검색엔진 구분해 보기


검색엔진은 월드 와이드 웹(www.) 상에 존재하는 정보와 웹 사이트를 검색하기 위한 프로그램이다. 구글 검색엔진은 크게 어떤 부분으로 나누어져 있는지 구분해 보기로 했다.

1. 크롤러(Crawler), 크롤링(Crawling)

월드 와이드 웹상의 각 웹 사이트들은 서로 연결되어 있습니다. 정보를 모으기 위해서는 정보를 수집하는 소프트웨어가 있어야 하는데 이것을 크롤러라고 부릅니다. 

크롤러가 정보를 모으는 행위를 크롤링이라고 하는데요 크롤러는 사이트의 웹 페이지(URL) 를 방문할 때마다 웹페이지에서 추출한 정보를 대규모 데이타베이스인 Google 색인에 저장합니다. 문서를 색인 하는 것이 크롤러의 목표 입니다. 

크롤러는 각 사이트를 방문할 일정을 가지고 있는데 이를 크롤러 스케줄이라고 합니다. 어떤 사이트를 언제, 어느 정도의 시간 간격으로(선택 정책) 방문할 수 있도록 일정(스케줄)을 결정하는 것은 중요한 부분으로 선택 정책과 스케줄러는 사이트 운영자들에게도 민감한 사안이라고 합니다. 너무 자주 방문하면 과도한 트래픽이 발생되어 서비스에 피해를 줄 수 도 있기 때문이라고 합니다. 크롤러가 자신의 사이트를 방문하지 못하도록 차단할 수도 있습니다. 구글 크롤러의 성능은 매우 정교하여 웹페이지의 내용을 상당히 이해할 수 있다고 합니다 하지만 어느 정도까지 이해할 수 있는지에 관한 데이터는 찾지 못하였습니다. 

구글은 막대한 수의 컴퓨터를 사용하여 웹에 있는 페이지 수십억 개를 크롤링 한다고 합니다.

2. 색인(Index)

수집한 문서(웹페이지)를 검색에 적합하도록 만들어(문서의 정보를 추출·저장) 검색을 빠르게 수행할 수 있도록 구축하는 것. 

이 색인 과정은 여러가지 알고리즘을 적용하여 구축되는데 

  • 색인된 문서를 빠른 시간에 찾기 위해

검색 엔진은 미리 문서 점수(품질) 지표를 만들어 놓아서 검색 속도를 높일 수 있다고 합니다. (페이지 랭크(page rank) 알고리즘 등 사용) 또한
구글 검색 엔진이 문서 점수를 정하는 조건은 구글의 경우 약 200여 가지의 순위 조건을 이용한다고 합니다. 


  • 사용자의 요청에 최적화된 문서를 보여주기 위해

-. 퀴리 

웹 서버의 특정한 정보를 보여 달라는 웹 클라이언트 요청으로 사용자가 입력한 검색 요청으로 주로 문자열에 기반한 요청 입니다. 즉 크롬 검색창에서 검색을 위해 입력하는 내용입니다. 사용자가 원하는 검색 결과가 최적화 되어야 사용자의 만족도가 높아지고 자주 사용하게 되죠. 이 쿼리에 맞는 문서를 찾는데 적용 되는 알고리즘으로 TF-IDF를 기반으로 하는 점수 계산 방식 중 가장 성능이 좋다고 알려진 방식으로 BM25 (Best Matching 25) 알고리즘이라고 합니다. 

-. TF-IDF (Term Frequency - Inverse Document Frequency)

(단어 출현 빈도 - 문서 출현 빈도의 역수)
문서 내에서 해당 단어가 많이 나올수록, 다른 문서 내에서 해당 단어가 포함되어 있지 않을수록 점수가 커지는 계산방식.

-. BM25(Best Matching 25)

TF-IDF와 원리는 비슷하지만 문서의 길이와 전채 평균 길이를 비교하면서 가중치를 조절하는 factor와 2가지의 매개변수를 포함하여 점수를 계산하므로 정교하고 성능 좋은 결과치를 제공합니다. 

3. 검색 결과의 만족도 TEST

최종 검색 결과물이 실제로 사용자가 만족할 만한 결과물인지 알아보기 위한 방법으로

A/B TEST : 무작위 대조 시험(Randomized Controlled Trial) 

피실험자를 2개 이상의 그룹에 무작위로 할당하여 한 그룹(실험그룹)은 개선된 조건으로 실험을 수행하고, 다른 그룹(대조 그룹)은 기존 조건으로 실험하여 그 결과를 비교하는 방식으로 이 시험을 A/B 데스트는 온라인에서 구현 합니다.

4. 진화하는 검색엔진 구글MUM(Multitask Unified Model) 딥러닝을 결합하다.

트랜스포머 아키텍쳐를 기반으로 구축되었으며 언어를 이해하고 생성하기도 하며 한 번에 75개 언어로 훈련할 수 있으며 새로운 정보 확인을 위해 멀티태스킹도 수행할 수 있습니다.
쿼리에 대한 이해도가 높아져 복잡한 사용자의 입력에도 의미를 파악하고 결과를 보여줄 수 있게 되었습니다. 이제 단답식이 아닌 방식으로 사용자에게 친밀하게 접근 하게 되었습니다.

5. 많은 양의 수집 색인 테이터를 어떻게 보관 할까.

구글의 색인량은 2013년 30조 개, 2016년 100조 개 이 후 더 공개된 게 없습니다. 다만 전문가들의 예측으로 2020년 기준 300조개가 넘는 문서를 색인하고 있을 것으로 추정 됩니다.

구글 파일 시스템(Google File System) - 분산 파일 시스템

가격이 저렴한 일반 범용 컴퓨터 수백, 수천 대로 구성되고 집적도가 높은 구글의 컴퓨팅 클러스터들에서 잘 동작하도록 최적화되었다. 저렴한 비용으로 안정적인 저장을 할 수 있도록 설계된 저장 시스템으로 초기 빅테이터 플랫폼의 원형이 되었다. 
GFS는 엄청난 양의 색인 데이터를 저장하는 비용적인 문제에서도 쉽지 않은 일을 다른 시각에서 접근하여 그 문제를 해결하는 파일 저장 처리 시스템이다.  


구글 검색엔진의 구성을 파악해 보며


구글 검색엔진을 큰 틀로 나누어 보며 검색엔진이 구동 되는데 필요한 요소들과 작동 흐름에 관하여 알아가게 되어 즐거웠다. 물론 이외에 다 설명할 수도 없고 알 수도 없는 많은 비하인드 스토리가 있겠지만 전체적인 흐름을 파악하며 다른 검색엔진도 비슷한 틀에서 나름의 성과를 올리기 위해 고분분투할 것이다. 지금은 생성형 언어 모텔이 접목되어 사용자의 편의 제공을 위해 한 발 더 다가가고 진화되고 있다. 

참고 : 
Google 검색센터 
위키백과 
Google 한국 블로그
비전공자도 이해할 수 있는 AI지식(박상길 지음)