진짜 프로덕션 query 의 모양
'전체 테이블에서 top-10 nearest' 거의 안 원해. '이 tenant, 이 프로젝트들에서, X 이후 update 된, 유저가 read 권한 있는 가장 가까운 top-10' 을 원해. pgvector 는 이걸 한 SQL statement 로 쓰고 구조화 필터링은 Postgres 에 맡기게 해.
인덱스-aware 필터링
HNSW/IVFFlat 인덱스가 approximate nearest neighbor 먼저 반환; WHERE 필터는 candidate set 에 적용. 필터가 매우 selective 면 Postgres 한테 먼저 필터하고 ranking 하라고 — 보통 CTE 나 partial index 로 달성. EXPLAIN ANALYZE 로 측정.
'iterative' 패턴
인덱스가 candidate 10개 반환했는데 필터 통과 3개뿐일 때 있어. 고침은 over-fetch + re-filter: nearest 100개 요청, 조건 필터, survivor 의 top-10. 진짜 데이터로 over-fetch factor 튜닝.