Repository navigation
Conversation
|
🤖 Automated first-pass review. A human maintainer still needs to review this before merge. What I checked: config parsing ( Worth fixing before merge
Optional / follow-up (not blockers)
Net: careful, well-verified groundwork. The read-back, the typed rejection of null/negative/string values, and the mutation check all meet this repo's bar. Item 1 is small and local, but it's the same silent-wrong-answer class this PR exists to close. Item 2 is mostly a question of whether the shipped configs should be runnable without the runbook. The accept decision, especially on configs targeting a Search build newer than the CI image, is a human maintainer's call. |
The Rust Redis adapter currently ignores HNSW compression and training settings, so a configuration labeled SQ8 can create an uncompressed index. This adds explicit
COMPRESSION SQ8andTRAINING_THRESHOLDhandling, validates the options, verifies the created schema throughFT.INFO, and records declared and effective settings in result metadata.Adds matched FLOAT32/FLOAT16 configurations for uncompressed HNSW, SQ8 threshold 0, and learned-mean SQ8 threshold 10240, with explicit k=10 for the initial DBpedia 100K workload. A dedicated integration target tests SQ8-capable servers.
E2E groundwork for MOD-14960, separate from VectorSimilarity microbenchmarks #1062. Runbook.
Initial Arm results
Measured with harness commit
5aa6253658274ad6322037b76c7e70b1adeedef3. The focused revision retains the same runtime SQ8 implementation and k=10 configuration; it removes the unused k=100 configuration and an unrelated test-only filter fix.Full DBpedia 100K corpus, dimension 1536, cosine; first 100 of 5000 queries, k=10, one client, one repetition. HNSW M=32, efConstruction=200, efRuntime=400. Arm Neoverse-V2, 8 cores, four Search workers. The dataset supplies only ten ground-truth neighbors per query, so these runs use the k=10 configuration.
These are short, unreplicated functional checks, not throughput evidence. Independent graph construction and input conversion affect recall. Every case verified the requested schema, full document/backend counts, empty vector frontend, no background indexing and no indexing errors before search. Only one configuration was resident at a time. Total memory includes the stored HASH vectors as well as the vector index.
Server: Redis 8.10.1, Search reported commit
8d1dae1. Search binary SHA256:1dee9895192d2331db447e744f0483d71fbac24e3085db3952af5250159fc02c. Dataset vectors SHA256:1836616fc92894a899798e1998f698f2d4d39b8e13bb162c95e9f96a933e5dfb; queries/ground truth:e04882b681de2650a79e05c5302935e01a81fed2438da54a8c0b0a70539448b6.Validation
On dorer-arm:
make agent-checkpassed in a clean checkout (formatting, Clippy, release tests and harness invariants).REDIS_TEST_PORT=14960 make integration-test-redis-sq8: passed against the feature-capable server.differs from requested 4; restored code passed again.The existing GitHub CI runs code checks and general integration tests. It does not run the Arm performance matrix or produce the table above. The SQ8-specific integration test is opt-in because the default CI Redis image may predate HNSW SQ8 support.
The existing downloaded-dataset shape test rejects DBpedia empty filters (
conditions: {}). That independent test fix is excluded from this PR. Clean-checkout validation does not cover the downloaded DBpedia shape scan.Remaining benchmark work
This draft does not complete MOD-14960: k=100 configurations for datasets with sufficiently wide ground truth, explicit accumulation/training-transition measurements, the 64/128/768/1536 dimension matrix at agreed sizes, sustained repeated throughput/latency runs with A/A controls, and calibrated regression thresholds remain outstanding. The registered 100K and 1M DBpedia families use different embedding models and must not be presented as a same-model scaling comparison.