fix(api): stop forcing vchordrq.probes on listless vchord indexes#2076
Merged
Conversation
… indexes Hindsight set a session-level vchordrq.probes override (10/30) for the vchord backend, but VectorChord requires the probes value to match each index's build.internal.lists hierarchy. Hindsight's built-in vchordrq index clause does not set lists, so it is listless and expects 0 probes; the session GUC supplies 1, and every query on that pooled connection fails with "need 0 probes, but 1 probes provided". On vchord deployments this rejects retain completions after extraction succeeds, so the worker retries forever and the queue fills with stuck retain ops that block consolidation. Drop the vchord entries from the ANN tuning dispatcher so no session probe override is applied; deployments that partition vchordrq indexes should attach probes via index storage fallback parameters (VectorChord 1.1) instead. pgvector hnsw.ef_search tuning is unchanged. Refs #1667.
This was referenced Jun 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stop applying the blanket session-level
vchordrq.probesGUC for the vchord vector backend. The dispatcher now returns no ANN-tuning statements for vchord; pgvectorhnsw.ef_searchtuning is unchanged.The bug (vchord deployments only)
Hindsight set a session-level
vchordrq.probesoverride (10on the retain link path viaSET LOCAL,30on pooled connections viaSET). But VectorChord requires theprobesvalue to match each index'sbuild.internal.listshierarchy. Hindsight's built-in vchordrq index clause does not setlists, so the index is listless and expects 0 probes — supplying any value makes the query fail with:Concretely, on a vchord backend this rejects the worker's retain completion after LLM extraction has already succeeded (
output_tokens: 1104, time: 230sin the worker log), so the retain op retries forever, the worker queue fills with stuck retain ops, and consolidation is blocked. A hard, full-stop break for vchord users.This was introduced by #1668 (which correctly moved vchord to
vector_cosine_opsbut also added the blanket probe GUCs). Reported in #1667.Fix
Remove the
vchordentries from_ANN_TUNING_LOW_LATENCY/_ANN_TUNING_HIGH_RECALL, soann_search_tuning_settings("vchord", …)returns()and no session-level probe override is applied. Deployments that do create partitioned vchordrq indexes should attach probes via VectorChord 1.1 index storage fallback parameters instead — the safe place for index-shaped tuning.Verification
uv run pytest tests/test_vector_index.py tests/test_link_utils.py::TestComputeSemanticLinksAnnPgBouncerSafety -q— 23 passedSET LOCAL hnsw.ef_searchand that vchord emits novchordrq.probes.Scope
This is the isolated regression fix split out of #1954; the structured-output /
strict_schemahardening in that PR is a separate concern and is intentionally not included here.