예: "롯데채용공고를 찾아줘"
Query: 롯데채용공고를
| 복합어 |+|조사|
| 레이어 | 상태 | 문제 |
|---|---|---|
| Dense (pgvector) | ✅ OK | "채용", "공고" 의미 포착 가능 |
| Sparse (FTS) | ❌ 실패 | "롯데채용공고를"이 단일 토큰 → "채용", "공고" 토큰 없음 |
| Keyword Rescoring | ❌ 실패 | raw token "롯데채용공고를" ≠ "롯데" keyword → 순위 상승 불가 |
결과: Dense 신호만으로 부족 → 상관없는 문서도 상위 노출
원리: 링크 저장 시 LLM이 자동으로 핵심 키워드 추출
Link {
"keywords": ["AI", "채용", "개발자"], // LLM 자동 추출
"title": "AI개발자 채용 공고"
}
매칭 규칙 (_token_matches):
효과: 키워드가 사전에 정리되어 있어 정확한 매칭 가능
원리: LLM 키워드 추출 실패 시 제목 검색으로 복구
if not keyword_match:
if len(token) >= 2 and token in title:
matched += 1 # ← title에서 substring 검색