Add pathseer filter strategy for HNSW vector index - #2157
Merged
Conversation
Weaviate core is adding an adaptive filtered-HNSW search strategy named 'pathseer' (weaviate/weaviate#12137) as a third filterStrategy value alongside 'sweeping' and 'acorn'. Expose it in the client via a new VectorFilterStrategy.PATHSEER enum member. Includes a unit test for serialization and an integration test (gated on server >= 1.40.0) covering creation and runtime updates in both directions.
There was a problem hiding this comment.
Orca Security Scan Summary
| Status | Check | Issues by priority | |
|---|---|---|---|
| Infrastructure as Code | View in Orca | ||
| SAST | View in Orca | ||
| Secrets | View in Orca | ||
| Vulnerabilities | View in Orca |
abdelr
approved these changes
Sep 8, 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.
Motivation
Weaviate core is adding
pathseer(weaviate/weaviate#12137, targeting 1.40), a third HNSW filter strategy that adaptively decides per query between sweeping and multi-hop candidate discovery. The client needs to expose it so users can configure it — but more importantly, without the enum value the client cannot even read the config of a collection that uses it:collection.config.get()deserializes the server response viaVectorFilterStrategy(config["filterStrategy"])and raises aValueErroron the unknown string. This makes the change a forward-compatibility fix as well as a feature enablement.Approach
Add
PATHSEER = "pathseer"to the existingVectorFilterStrategyenum inconfig_vector_index.py. No serialization or validation changes are needed — the strategy is passed through as a string and validated server-side, which keeps the client agnostic to strategy semantics (same pattern asACORN).Risks and mitigations
Testing
Configure.VectorIndex.hnsw(filter_strategy=PATHSEER)serializes to"filterStrategy": "pathseer".config.get()(exercising the deserialization path that previously would have raised), then round-tripsReconfigureupdates pathseer → acorn → pathseer to verify the strategy is mutable in both directions. Verified passing against a local1.40.0-devserver built from the core branch.