Finding (Milvus tire-kick session, #1235)
When semantic_vector_index points at an index that holds no ready manifest rows for the
project, search silently degrades with no signal, in both directions:
- pgvector-indexed project, config flipped to
milvus, before bm reindex --embeddings:
--vector returns "No results found"; --hybrid quietly serves FTS-only results.
- The reverse (milvus-owned manifest, pgvector configured): identical silent degradation.
_hydrate_vector_matches filters on vector_index = <configured>, so zero rows hydrate.
The user gets no warning that semantic recall is gone — hybrid results still look
plausible because FTS carries them.
Proposal
When a vector/hybrid query finds the configured index has zero ready manifest rows for the
project (a cheap count), surface it: a logged warning at minimum, ideally a response-level
notice ("semantic index 'milvus' has no ready vectors for this project — run
bm reindex --embeddings"). Fail-closed hydration itself is correct and should not change.
Finding (Milvus tire-kick session, #1235)
When
semantic_vector_indexpoints at an index that holds no ready manifest rows for theproject, search silently degrades with no signal, in both directions:
milvus, beforebm reindex --embeddings:--vectorreturns "No results found";--hybridquietly serves FTS-only results._hydrate_vector_matchesfilters onvector_index = <configured>, so zero rows hydrate.The user gets no warning that semantic recall is gone — hybrid results still look
plausible because FTS carries them.
Proposal
When a vector/hybrid query finds the configured index has zero ready manifest rows for the
project (a cheap count), surface it: a logged warning at minimum, ideally a response-level
notice ("semantic index 'milvus' has no ready vectors for this project — run
bm reindex --embeddings"). Fail-closed hydration itself is correct and should not change.