Day_50 [오피스아워] Elastic Search

작성일

2 분 소요

[오피스아워] 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 를 활용하는 것도 좋을 듯

댓글남기기