151c1ee518
코퍼스 ~52배 성장(코드 가정 765 → 실제 40k docs) 후 search_text ORDER BY 가 후보 행마다 extracted_text(평균 3.7KB·최대 1.6MB) 전체에 similarity() + to_tsvector() 재토큰화를 재연산 → broad/영어 쿼리 text_ms 최대 4960ms. scoring/match_reason 의 extracted_text 를 left(...,2000) 으로 절단(후보 CTE 의 FTS 매칭은 전체 본문 유지 → recall 불변). embed() 요청에 keep_alive:-1 추가로 ollama bge-m3 GPU 상주 → sparse 검색의 cold reload(~6s) 제거. 검증(snapshot freeze docs 43958/chunks 195671, 51 case, eval-version both): - graded NDCG 0.575 → 0.575 (±0.000, 전 카테고리 byte-identical) - Recall g>=2 0.691 / g>=3 0.739 불변, v0.1 NDCG/Recall/Top-3 불변 - latency p50 760→586ms (-23%) / p95 5230→832ms (-84%) - EXPLAIN 단일쿼리: V0 4917ms → left(2000) 285ms (17x) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>