The shape of a real production query
You almost never want "top-10 nearest across the whole table." You want "top-10 nearest from THIS tenant, in THESE projects, updated since X, where the user has read permission." pgvector lets you write that as one SQL statement and lean on Postgres for the structured filtering.
Index-aware filtering
The HNSW/IVFFlat index returns approximate nearest neighbors first; WHERE filters are applied on the candidate set. If your filter is very selective, ask Postgres to filter first and then rank — usually achieved with a CTE or a partial index. Measure with EXPLAIN ANALYZE.
The 'iterative' pattern
Sometimes the index returns 10 candidates but only 3 pass the filter. The fix is to over-fetch and re-filter: ask for 100 nearest, filter to your conditions, take top-10 of survivors. Tune the over-fetch factor on real data.