Text Mining 10 Search : Lexical Retrieval

2KT·5일 전

Search란?

직관적 정의

  • 사용자가 Query를 입력하면
  • 시스템이 Document Collection에서
  • 가장 관련성 높은 문서들을 순서대로 반환하는 문제

Search가 중요한 이유

  • 검색은 단순한 기능이 아니라 정보 접근의 핵심 인프라
  • LLM에서도
    • RAG(Retrieval-Augmented Generation)의 성능은
    • 무엇을 검색해오느냐 에 크게 의존
      -> Search가 약하면 LLM도 약해진다.

구성요소

  • Document : 검색 대상 텍스트(웹페이지, 상품 설명, 논문 등)
  • Collection : 전체 문서 집합
  • Query : 사용자의 정보 요구를 표현한 짧은 텍스트
  • index : 빠른 검색을 위한 자료구조

목표

  • 각 문서에 대해 Relevance score를 계산
  • Query에 가장 관련 있는 문서를 상위에 랭킹
    -> Relevance는 보통 Query-Document 텍스트 유사도로 근사

검색 성능 평가 지표

Precision@N / Recall@N

  • Precision@N
    상위 N개 결과 중 얼마나 많은 것이 relevant인가

  • Recall@N
    전체 relevant 문서 중 얼마나 많이 찾아 냈는가

    Precision과 Recall 만으로는 부족한 이유 : 보통 문서는 이진 relevance(맞다/아니다)가 아님.
    실제로는 graded relevance

    • Exact / Substitute / Complement / Irrelevant

그래서 등장한 것이 NDCG

NDCG@N
아이디어 :

  • 더 관련 있는 문서일수록
  • 그리고 더 위에 랭크될 수록 -> 더 큰 점수를 줘야 한다.

1) Gain : 문서의 relevance 점수
2) CG (Cumulative Gain)

3) DCG (Discounted CG)

-> 아래 순위일수록 기여도 감소

4) IDCG : 이상적인 랭킹의 DCG
5) NDCG :
-> 서로 다른 query 간에도 공정 비교 가능

Lexical Retrieval

핵심특징

  • Query와 Document를 단어 단위로 정확히 매칭
  • 표현 방식 : Sparse Vector
  • 대표 방법 : TF-IDF / BM25

장점

  • 빠르고 단순함
  • 대규모 코퍼스에 적합
  • 학습 데이터 불필요
  • 해석 가능성 높은

단점

  • 의미(sementic)이해 불가
  • 동의어, 패러프레이즈에 취약

Inverted Index (검색의 핵심 자료구조)
왜 필요한가?

  • 모든 문서와 cosine similarity 계산 -> 비효율
  • 대부분 문서는 query단어를 포함하지 않음
    -> query 단어를 포함한 문서만 후보로 계산

Dictionary : teram -> postings list
Postings list : 해당 term이 등장하는 docID 목록 (tf,df)

Query 단어별 postings list 조회
postings의 union으로 candidate set 구성
candidate에 대해서만 TF-IDF or BM25 점수 계산

BM25(Best Match 25)

  • 1995년 제안
  • 지금까지도 Lucene/Elasticsearch/Solr 기본 랭커
  • 학습 불필요, 빠름, 강력한 baseline

BM25 점수함수

구성요소
1) IDF(smoothed)

  • 극단적인 값 방지
  • term이 없을 확률 vs 있을확률 관점

2) TF saturation

  • k1 : TF 증가가 어디서 포화되는 제어
  • 보통 1.2~2.0

3) Length normalization

  • b : 문서 길이 보정 정도
  • b = 0 : 길이무시 / b=1 : 완전 보정
  • 실무 기본값 : 0.75

profile
2KT

0개의 댓글