Day_50 [오피스아워] Elastic Search
작성일
[오피스아워] Elastic Search - 서중원 멘토
1. Retrieval 소개
IR(Information retrieval)의 관점으로 대표적으로는 Google Search
1.1 Boolean Retrieval
Boolean Retrieval 란?
쿼리 연산에 대해서 두가지 중 하나의 결과를 보여줌
- True or False
- Exact-match
일반적으로 Query 는 Bool 연산을 이용해 제공됨
- AND, OR, NOT
기본 가정은, “검색된 모든 결과는 동일하게 관련된 내용이다”
아직도 많은 검색 시스템은 Bool 연산을 활용
- 이메일, 인스타그램
일부 도메인에 대해서는 매우 효과적인
- 특허 검색
- 법률 검색
Boolean View
쿼리 실행
- 검색어로 들어온 Term 을 고르고
- Boolean 연산을 적용

Boolean 검색 예제

Google 에서 Boolean 검색 예제

Boolean 검색 장/단점
장점
- 검색 결과에 대한 설명이 쉬움(포함/미포함)
- 다양한 요소들이 검색에 함께 포함될 수 있음(이미지의 포함여부 등)
- 효율적인 연산(시작과 동시에 많은 문서들이 제외 될 것이기 때문에)
- 관련된 문서를 절대 놓치지 않음
단점
- 검색 결과의 퀄리티는 사용자의 쿼리 작성에 의해 달려있음
- 문서간 누가 더 유사한지의 랭킹이 X
1.2 Rank Retrieval
Rank Retrieval 란?
score(d, q)
- 주어진 쿼리 q 에 대해서 각각의 문서의 점수를 계산
- Query = “Hello world”
How?
- $w_{t, d}$ : 문서(d)와 Term(t) 과의 가중치 계산
- $w_{t, q}$ : 쿼리(q)와 Term(t) 과의 가중치 계산
- 그리고 그 둘의 내적을 통한 유사도 계산
- 각각의 문서에 대한 점수 반환

Scoring Example 1 - Term Frequency Weighting
$f_{t, d}$ : 문서 d 에서 term t 가 등장한 횟수 $f_{t, q}$ : 쿼리 q 에서 term t 가 등장한 횟수
Example
- Query : Hello, Hello world
- Term : Hello
- Document : “Hello, Hello, Hello world, programming is very fun”
- $f_{t, d}$ : 3
- $f_{t, q}$ : 2


Scoring Example 2 - Log Frequency Weighting
문서에서 단어 횟수를 적절히 반영하기 위해서는?

Vector Space Model (VSM)을 활용한 Rank Retrieval
문서와 쿼리는 term 의 weight 들의 벡터로 표현됨
- 쉽게 표현하면, 문서와 쿼리는 단어들이 중요도에 대한 벡터임
Term 과 Document 의 매트릭스로 표현


코사인 유사도
이전 슬라이드에서, 쿼리와 다큐먼트 둘 다 벡터로 표현을 했으므로, 문제를 재정의 가능
- 두 벡터 간의 유사도는 어떻게 구할 수 있을까?
Cosine 유사도

- 𝜃가 작을 수록 1에 가까워 진다.

단어가중치계산:어떤단어가얼마나중요한가?

너무 흔하지도 않지만, 너무 희귀하지도 않음

TF-IDF 를 활용한 랭킹함수

BM25: 우리는 1절만 하지 않지..

BM25 에서 직접 변경 가능한 파라미터

2. Elasticsearch
비정형 데이터 검색에 최적화된 데이터베이스
2.1 Elasticsearch Overview
Elasticsearch 는 어떻게 시작되었나?


이 이야기의 교훈은?

Elasticsearch 와 관련된 용어들

RDB vss Elasticsearch

2.2 Index
Index 란?

Big 이라는 단어를 포함하는 문서들을 찾는데 걸리는 시간 복잡도는?

Inverted Index


2.3 Elasticsearch setting
어떻게 Term 을 추출해야 좋을까?


Analyzer

Tokenizer : 어떤 기준으로 단어를 자를 것인가?

참고사이트 : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html
Filter: 어떤 단어를 어떻게 바꿀 것인가?

Scoring: 쿼리와 문서간의 점수계산

참고사이트 : https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html
Mappings

Settings


REST API

TMI: Elastic Stack


3. Practice
Retrieval 에서 Elastic search 를 활용하는 것도 좋을 듯
댓글남기기