📌 문제상황

사용자 쿼리의 조사+복합어로 인한 검색 실패

예: "롯데채용공고를 찾아줘"

Query: 롯데채용공고를
       |  복합어 |+|조사|
레이어 상태 문제
Dense (pgvector) ✅ OK "채용", "공고" 의미 포착 가능
Sparse (FTS) ❌ 실패 "롯데채용공고를"이 단일 토큰 → "채용", "공고" 토큰 없음
Keyword Rescoring ❌ 실패 raw token "롯데채용공고를" ≠ "롯데" keyword → 순위 상승 불가

결과: Dense 신호만으로 부족 → 상관없는 문서도 상위 노출


🔧 해결방안 (4가지)

1️⃣ LLM 기반 Keyword Mapping

원리: 링크 저장 시 LLM이 자동으로 핵심 키워드 추출

Link {
  "keywords": ["AI", "채용", "개발자"],  // LLM 자동 추출
  "title": "AI개발자 채용 공고"
}

매칭 규칙 (_token_matches):

효과: 키워드가 사전에 정리되어 있어 정확한 매칭 가능


2️⃣ Title Fallback (키워드 없을 때 보조)

원리: LLM 키워드 추출 실패 시 제목 검색으로 복구

if not keyword_match:
    if len(token) >= 2 and token in title:
        matched += 1  # ← title에서 substring 검색