티스토리 뷰

이전 포스팅까지 vector search를 기반으로 단어의 매칭이 아닌 embedding base retriver에 대해 작성했다.

 

더욱 검색 품질을 올리기 위해 어떠한 방식이 가능한지 알아보자

 

Vector Search는 완벽한가?

벡터 기반 의미 검색에는 다음과 같은 고민을 할 수 있다

  1. 임베딩 모델의 한계
    • 임베딩 모델의 출력한 벡터간의 유사도가 얼마나 의미간 유사도를 보여주나?
    • 모델의 학습 데이터와 실제 검색 데이터 간의 도메인 차이가 있을 경우 매칭이 안되지 않을까?
  2. 키워드 매칭의 필요성
    • 모든 검색 쿼리가 의미적 유사성에만 의존하는 것이 적합하지는 않을까?
    • 특정 키워드를 포함한 정확한 검색 결과가 더 나은 경우도 있지 않을까?

 

예를 들어,

 

원했던 것은 "코끼리 식당"이라는 고유한 가게에 대한 결과를 원했지만, "코끼리가 있는 가게"라는 잘못된 검색 결과를 나오게 할 수 있다.

 

키워드 검색 활용

Vector store로 사용하고 있는 DB(OpenSearch)에는 검색할 아이템들을 같이 저장하고 있다. 여기서 BM25와 같이 전통적인 lexical search 결과를 활용해 검색 결과에 반영한다.

 

해당 방법을 통해 정확한 키워드로 매칭된 아이템들도 검색결과에 포함될 수 있도록 한다.

ReRanker Model

단순히 검색결과에 추가하는 것만으로는 사용자의 경험을 올리지는 않는다.

 

원하는 검색 결과가 없는 경우도 경험을 저해하지만, 얼마나 질의 의도를 파악하고 상위에 원하는 결과가 있는가도 중요하기 때문

 

이를 위해, 검색 결과에 대한 재정렬(rescoring and re-ranking)이 중요하다.

 

 

그렇다면 ReRanker 모델은 어떤 것을 활용해야할까

 

해당 모델은, bi-encoder 기반의 embedding 모델과는 달리, 두 자연어를 input으로 넣어 output으로 자연어간 유사도를 점수로 출력한다. 

 

 

matching set들과 사용자 쿼리간의 유사도를 재측정하여 

  • 벡터 검색으로 추출된 후보 결과를 정밀히 평가
  • 검색 결과에 점수를 부여하여 사용자의 의도와 가장 관련성이 높은 항목을 상위에 배치

 

확장

  1. 사용자 이벤트 기반 학습
    사용자의 검색 행동 데이터를 트래킹하여 지속적으로 모델을 개선한다
    • 클릭 데이터: 사용자가 선택한 검색 결과를 분석하여 ReRanker의 학습 데이터로 활용
    • Dwell Time: 특정 검색 결과에 사용자가 머문 시간 데이터를 점수 계산에 반영
    • 이탈율 분석: 검색 후 사용자가 다른 행동을 취했는지 추적하여 검색 품질을 간접 평가
  2. ReRanker의 추가 개선
    • 모델 병렬화: Cross-Encoder 모델의 속도를 높이기 위해 병렬 처리를 도입.
    • 피처 조합: lexical score, vector similarity score, 사용자 행동 데이터를 통합하여 점수를 산출하는 Learning-to-Rank 방식으로 확장 가능
    • 도메인 특화 모델: 특정 도메인 데이터로 모델을 미세 조정(파인튜닝)하여 해당 도메인에서의 성능 최적화

'코딩 > AI' 카테고리의 다른 글

Vector Search deep dive #1 (KNN indexing)  (0) 2025.01.02
Vector Search 기반 Semantic Search 구현 #0  (0) 2024.12.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함