Deep Learning For Search
Large Scale Language Model(LLM)의 출현은 기존의 검색 엔진 구조의 점진적 개선을 뛰어넘는
또 다른 차원의 길을 제시해주었다.
기존 검색엔진의 구조를 보면 알겠지만 기존 검색엔진에서 중요한 부분인 바로 Ranking부분과
기존 문서에 대한 크롤링을 통한 수집과 indexing부분이었다.
2023년 현재 검색엔진이 추구하고자 하는 방향성은 크롤링된 방대한 데이터에 대하여 Training을
수행한 대용량 모델의 산출을 바탕으로 해당 언어 모델에 포함되어 있는 확률값 기반의 접근법
Few Shot, Zero Shot Learning과 Prompt Learning 기반의 서비스 방법론이 활성화 되고 있다.
이에 기존의 검색엔진 구조를 살펴보고 앞으로의 나아갈 기술적 방향성을 검토해 보기 위해 해당 글을 작성한다.
기존 검색엔진 구조는 아래와 같았다.
검색 엔진 구조
3parts : software components, interfaces, relationships
2개의 필요조건
– effectiveness(효과성) : 검색 결과의 품질, most relevants set of document
– efficiency(효율성) : response time, throught
Indexing Process(색인 처리)
– Test acquisition(텍스트 획득) : 문서를 저장, 크롤링하여 구축
– Text transformation(텍스트 변환) : 문서를 index terms of features로 변환
– Index Creation(색인 구축) : create data structures to support fast searching
efficiently updated/inverted indexes(역색인)
Query process(질의 처리)
– User interaction(사용자 상호작용) : creation and refinement of query/display of results
– Ranking(순위 부여) : uses query and indexes to generate ranked list of documents based on retrieval model
– Evaluation(평가) : effectiveness and efficiency
effectiveness depends on retrieval model
efficiency depends on indexes
offline activity
검색엔진의 기본 구조
구성요소 | 역할 | 설명 |
문서수집기 (Crawler) | 위치정보 수집 | 새로 생성, 업데이트 문서, 파일 등 수집 |
색인기 (Indexer) | 위치정보 저장 , 색인데이터베이스 | 수집 위치 정보 저장, 수집된 정보 위치 DB |
검색기 (Searcher) | 색인데이터베이스, 검색 | 검색한 키워드에 대한 색인 DB 검색 모듈 |
질의관리기 (Query Manager) | 검색결과, 전달 | Client와 검색기 사이 정보 전달 |
Indexer
색인어 추출 방법
텍스트 추출 → Document Data Store →
텍스트 변환(Parser, Stopwords 제거, Stemming, 링크 추출 및 분석, 정보 추출, 분류기)
→ 색인 생성
구분 | 설명 |
N-gram 방법 | 글자를 겹쳐서 색인어 추출 방법ex) 정보검색을 “정보”,”보검”,”검색” 등 |
N-gram 장점 | 빠지는 정보 없이 모두 검색 가능신조어 검색 가능, 색인어 리스트 구성 |
N-gram 단점 | 틀린 내용 다수 포함, 검색품질 저하색인어 리스트 크기가 커짐 |
N-gram 적용 | 형태소 분석 오류 시 사용문서의 건수가 적고, 재현율 우선 시 |
Query Manager
검색 엔진 + 텍스트 생성 = 적응형 검색 엔진
사용자 Query → 대안(생성) Query 추가 → 검색 범위 확장
사용자 입력 query를 받음
query time-analysis 파이프라인에 query를 넘긴다.
토크나이저와 여러개의 필터를 거쳐 처리된 퀴리를 반환
변경된 query를 RNN 모델에 입력.
출력 값으로 alternative queries 들을 받음
original fitered query + alternative query = parsed query
역색인을 통해 쿼리에 맞는 정보를 찾음
Automatic Query Expansion
결과가 없는 쿼리를 최소화 한다.
– 비슷한 검색 결과를 갖는 쿼리끼리 연결 짓기
– 동일한 사용자가 특정 시간(time windows)동안 보낸 쿼리 연결 짓기
– 비슷한 검색 용어(search terms)를 포함한 쿼리 연결 짓기
– 색인된 데이터에서 출력 sequence 선택하기
– 비지도 학습으로 텍스트 얻기
재현률(recall)을 높힌다.
정확도(precision)을 높힌다.
Unsupervised Query Expansion
사용자 쿼리를 one-hot encoding된 character vector로 변환
RNN(LSTM,GRU) 모델에 입력 → Transformer 모델에 입력
첫번째 character vector 출력을 다시 모델에 입력
마지막 character가 나올 때까지 계속 반복 (“\r\n”등 delimeter)
→ 공통 term이 들어간 쿼리를 사용자가 입력하면, RNN이 관련있는 term을 추가해 “완성”해 줌
→ 완성된 쿼리를 입력하면, RNN이 검색 기록에서 비슷한 쿼리를 찾아서 생성해 줌
Neural Network으로 질의 Query를 생성하여 검색 결과 향상
그럴듯한 쿼리들 제안하기
Ternary Search Tree
https://www.cs.usfca.edu/~galles/visualization/TST.html
Autocomplete
Related Searched
Personalization
Trending topics
n-gram 활용 (bi-gram, tri-gram)
웹사이트별 랭킹 계산
word embedding을 사용해 검색 결과의 순위 지정하기
기존의 검색랭킹 모델?
Slope one (Collaborative Filtering)
– 다른 사람들과 다른 아이템에 대한 정보를 이용하여 특정인의 특정아이
템에 대한 정보를 추정
– 아마존의 상품 추천시스템에서 사용
랭킹 모델의 2가지 과정
Information Retrieval
사용자의 질의와 검색 대상인 컨텐츠 사이의 언어적 통계정보를 이용하여 Relevance를 측정
예) Boolean, TF*IDF Model, Contents based Rank model
Information Filtering
컨텐츠 및 도메인의 특성을 이용하여 컨텐츠의 quality 측정하고 이를 이용
해 컨텐츠를 순위화
예) PageRank, Snowrank 등
• ad-hoc based Rank model
두가지 모델이 혼용되어 Ranking Model