Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
e91a842
First implementation with fast scalar and SIMD projection encoding.
tlwillke Dec 27, 2025
d2b6b0e
First implementation of paper-faithful block column-major scorer with…
tlwillke Dec 30, 2025
78f67ac
Improved backend selection logic and SIMD performance. Also improved…
tlwillke Dec 30, 2025
2058037
Using only one backend selection per benchmark run in DistancesASH.
tlwillke Dec 30, 2025
d194319
New distance calculation benchmark for PQ.
tlwillke Dec 31, 2025
d3dd57b
Added benchmarking options to DistancesASH and DistancesPQ. Introduc…
tlwillke Jan 1, 2026
22c4f53
We now amortize the cost of horizontal reductions during ASH scoring.
tlwillke Jan 1, 2026
2d8c6fd
Added overload to SiftLoader to allow for truncation of the load (wit…
tlwillke Jan 1, 2026
d8aa4f6
Added tput reporting to DistancesASH and DistancesPQ.
tlwillke Jan 3, 2026
3e5b4e3
First phase of ASH multi-landmark support.
tlwillke Jan 3, 2026
3869e36
More multi-landmark refactoring and moved the full scale and offset i…
tlwillke Jan 3, 2026
249456c
Change landmark vector header field to byte.
tlwillke Jan 3, 2026
0d08788
ASH is sensitive to SIMD alignment, so now we check that the payload …
tlwillke Jan 3, 2026
19a3534
ASH is sensitive to SIMD alignment, so now we check that the payload …
tlwillke Jan 3, 2026
63bc1e8
Merge branch 'ash-dev' of github.com:datastax/jvector into ash-dev
tlwillke Jan 3, 2026
ae8bf04
Added multi-landmark support to the scalar scorer. Updated Distances…
tlwillke Jan 4, 2026
92bf98d
Created a pooled landmark-specific query buffer. Still using the non…
tlwillke Jan 5, 2026
d903eb6
Added debug instrumentation to kmeans++ clusterer.
tlwillke Jan 5, 2026
db5bfbd
Bug fixes in SIMD scoreRange for copying queries into contiguous scra…
tlwillke Jan 6, 2026
2adbce0
Encoded vectors are now presorted by landmark for faster full dataset…
tlwillke Jan 7, 2026
70eb02e
Encoded vectors are now presorted by landmark for faster full dataset…
tlwillke Jan 7, 2026
27630a4
Deconflict merge.
tlwillke Jan 7, 2026
21ca46e
Initial implementation of LAPACK-based ITQ trainer and slow Landing t…
tlwillke Jan 8, 2026
6b73885
Added k-recall@R computations to DistancesASH and added a truncated i…
tlwillke Jan 8, 2026
1582dbf
Reduce allocations in quantizeBody by using a workspace for several v…
tlwillke Jan 8, 2026
d8097e1
Replaced QR with Thin SVD in runWithinTraining and temporarily overri…
tlwillke Jan 12, 2026
2fad117
Changed computeNativeV(X) to computeNativeVt(X) to fix ITQ. Other sm…
tlwillke Jan 13, 2026
74b0642
Partial implementation of ASH single vector scoring logic SIMD suppor…
tlwillke Jan 14, 2026
a4d35b9
Initial ASH integration into graph index. Scalar scoring with separa…
tlwillke Jan 14, 2026
e9ee895
Batch kmeans clustering. Renamed various scorers. Introduced new pa…
tlwillke Feb 14, 2026
73a4014
Merge latest main into branch.
tlwillke Feb 15, 2026
2f4e02d
Additional cleanup for the merge of latest main into branch.
tlwillke Feb 15, 2026
46d6d45
Merge latest main.
tlwillke Feb 23, 2026
6d4cf9e
Merged latest main, including logging support. Hierarchical indexing…
tlwillke Mar 3, 2026
c80194e
Merging latest main into branch.
tlwillke Mar 3, 2026
a71359b
Extend csv logging to include build and search compressor information.
tlwillke Mar 5, 2026
6a1a1b7
Merge remote-tracking branch 'origin/logging-improvements' into ash-dev
tlwillke Mar 5, 2026
df7cb7e
Keep ITQ in flat column-major buffers and compute Xbin in row blocks …
tlwillke Mar 24, 2026
7ba8e7e
Latest work on SIMD masked adds for ASH.
tlwillke Apr 14, 2026
6cea37c
Merge latest main into branch.
tlwillke Apr 14, 2026
e2d9579
Refactored YAML benchmark configs post-rebase. Added an ASH compress…
tlwillke Apr 14, 2026
b81c149
Initial implementation of multibit ASH trainer.
tlwillke Jun 10, 2026
b03b39b
Removed Landing algo from DistancesASH.
tlwillke Jun 10, 2026
63c113d
Remove Landing trainer from Asymmetric Hashing.
tlwillke Jun 10, 2026
5ba29d9
Removed Landing algo selection from Compression.
tlwillke Jun 10, 2026
d5aa241
Initial implementation of scalar/fallback multibit ASH support.
tlwillke Jun 11, 2026
118ff38
Initial implementation of Fused ASH.
tlwillke Jun 12, 2026
01fdeff
Add compressor_cache to .gitignore.
tlwillke Sep 11, 2026
001f24e
Implement standalone and fused ASH SIMD scoring with graph-compatible…
tlwillke Sep 11, 2026
074998a
Eliminate ASH LUT scoring allocations, add independent kernel tuning,…
tlwillke Sep 11, 2026
019177d
Improve ASH benchmark warmup and dispatch reporting, correct similari…
tlwillke Sep 11, 2026
a1b4b9d
Add ASH scoring, fused dispatch, and negative-entry graph search regr…
tlwillke Sep 11, 2026
e744b3b
Initial ASH graph index config file for ada002-1M.
tlwillke Sep 11, 2026
2d81a3d
Tweak datasets.yml for current benchmarking.
tlwillke Sep 11, 2026
62a5360
Tweak index config YAML for ada002-1M.
tlwillke Sep 11, 2026
4096cbe
Merge latest main into dev branch.
tlwillke Sep 14, 2026
129d4ba
Stub off ASH compaction for now.
tlwillke Sep 16, 2026
49b74c2
Minor dataset config change.
tlwillke Sep 16, 2026
fd53a1f
Initial commit for adaptive termination algo.
tlwillke Jun 16, 2026
f067fb6
Implementation of Distance Adaptive Beam Search.
tlwillke Jun 17, 2026
91ebf35
Integrate adaptive termination for ASH graph search
tlwillke Sep 16, 2026
5da7910
Enable adaptive termination for ASH construction scores
tlwillke Sep 16, 2026
a9d4064
Parallelize ASH ITQ training encoding
tlwillke Sep 17, 2026
d2d9168
Use divide-and-conquer SVD for ASH ITQ polar steps
tlwillke Sep 17, 2026
990c5aa
Set ASH adaptive termination default gamma to 0.01
tlwillke Sep 17, 2026
d34afca
Resize ASH quantization workspace for each vector shape
tlwillke Sep 17, 2026
7a08308
Use 20x ASH ITQ training sample with early stopping
tlwillke Sep 17, 2026
a88033a
Align ASH benchmark configs at 32x and retain PQ alternatives
tlwillke Sep 17, 2026
3f52d28
Fix ASH SIMD projection gather for partial blocks
tlwillke Sep 17, 2026
1ed906c
Validate ASH exhaustive recall across scalar and SIMD scorers
tlwillke Sep 17, 2026
32ff4bd
Validate 64-landmark ASH fused graph scoring
tlwillke Sep 18, 2026
f650cdb
Align ASH and PQ single-thread throughput benchmarks
tlwillke Sep 18, 2026
fa5b1a3
Share ASH query projection in fused graph scorer
tlwillke Sep 18, 2026
3695c3f
Write fused ASH neighborhoods in bulk
tlwillke Sep 18, 2026
3dba09f
Complete symmetric ASH construction scoring for packed codes
tlwillke Sep 19, 2026
406774d
Benchmark prepared symmetric ASH queries in DistancesASH
tlwillke Sep 19, 2026
fc48335
Compare ASH construction scoring policies and setup costs
tlwillke Sep 19, 2026
b48f725
Optimize symmetric ASH scoring from encoded vectors
tlwillke Sep 19, 2026
430819e
Measure ASH scoring with correct query setup and isolated modes
tlwillke Sep 19, 2026
76ff343
Prevent boxed SIMD allocations during ASH graph pruning
tlwillke Sep 19, 2026
ffa463d
Measure graph throughput over sustained query batches
tlwillke Sep 19, 2026
869052c
Expose symmetric ASH scoring through the diversity API
tlwillke Sep 19, 2026
ffa6608
Document symmetric ASH correctness and performance study
tlwillke Sep 19, 2026
c0b4dfb
Control graph benchmark query concurrency and verify result parity
tlwillke Sep 19, 2026
cf8eaa8
Document completed ASH versus PQ Figure 9 graph study
tlwillke Sep 19, 2026
04bd54c
Optimize fused ASH packing with 8x8 byte transposition
tlwillke Sep 24, 2026
889eb5a
Handle fresh Meson build directories
tlwillke Oct 28, 2026
87d0b80
Store heap-backed native float vectors directly
tlwillke Oct 28, 2026
2b40957
Share prepared ASH neighborhood scoring with graph decoding
tlwillke Oct 28, 2026
1f57e5c
Add Highway scoring for complete ASH neighborhoods
tlwillke Oct 28, 2026
7f6cf1c
Benchmark isolated ASH neighborhood full scans
tlwillke Oct 28, 2026
47d58a0
Measure full-scan ASH recall through neighborhood scoring
tlwillke Oct 28, 2026
cb02aef
Document ASH neighborhood scoring and benchmark contracts
tlwillke Oct 28, 2026
e7a4e0f
Measure full-scan PQ recall at exact code byte budgets
tlwillke Oct 28, 2026
7d088b1
Document trained ASH versus PQ recall at equal code sizes
tlwillke Oct 28, 2026
2b25871
Clean up ASH rebase dependency and writer integration
tlwillke Oct 28, 2026
ca1d485
Register fused ASH in the version 7 format extension
tlwillke Oct 28, 2026
ae9f956
Normalize graph format extension imports
tlwillke Oct 29, 2026
f81d2c0
Report inclusive and construction-only BenchYAML measurements
tlwillke Oct 29, 2026
139a8ab
Revert "Report inclusive and construction-only BenchYAML measurements"
tlwillke Oct 29, 2026
93a6f98
Use validated divide-and-conquer PCA for ASH training
tlwillke Oct 29, 2026
5c3ae32
Document native PQ versus trained ASH graph results
tlwillke Oct 29, 2026
9ca91ac
Project dense ASH queries with one Highway dispatch
tlwillke Oct 29, 2026
93997f3
Score symmetric ASH construction codes with Highway
tlwillke Oct 29, 2026
a10f4f8
Cover native ASH preparation, exact scoring and compatibility
tlwillke Oct 29, 2026
37eb9ae
Record BenchYAML results for native ASH preparation
tlwillke Oct 29, 2026
d7605a9
Complete native ASH results for both MPNet and OpenAI compression bud…
tlwillke Oct 29, 2026
cc1d119
test: expect dot product in Ada dataset metadata
tlwillke Oct 31, 2026
d83a23d
docs: escape comparison notation in API comments
tlwillke Oct 31, 2026
8c6325b
native: add optional sequential oneDNN FP16 projection engine
tlwillke Oct 31, 2026
514d45d
ash: default native query projection to FP16 with FP32 fallback
tlwillke Oct 31, 2026
800bdd0
docs: document portable FP16 query projection and validation
tlwillke Oct 31, 2026
5a8a78c
native: add portable FP32 batch projection for ASH
tlwillke Oct 31, 2026
cb9164b
ash: use native FP32 projection for single and bulk encoding
tlwillke Oct 31, 2026
7d46fe6
docs: document FP32 ASH encoding and encodeAll measurements
tlwillke Nov 1, 2026
e2f9384
ash: streamline residual normalization during encoding
tlwillke Nov 1, 2026
1b84ae2
native: prefer oneDNN FP32 for ASH batch projection
tlwillke Nov 1, 2026
6eaec4c
docs: recommend oneDNN for native ASH installation
tlwillke Nov 1, 2026
a35367b
ash: prepare single-landmark training from one shared sample
tlwillke Nov 1, 2026
0851582
docs: fix PQ entropy diagnostic paragraph markup
tlwillke Nov 1, 2026
322e179
ash: reuse FP64 ITQ workspaces and quantize contiguous rows
tlwillke Nov 2, 2026
6436b6e
ash: use guarded covariance PCA for training
tlwillke Nov 2, 2026
ac624ab
ash: accelerate ITQ polar steps and share quantization workers
tlwillke Nov 2, 2026
7e99a0c
native: include oneDNN in default ASH builds
tlwillke Nov 2, 2026
4a9efd1
Optimize native ASH direct scoring and reuse query scratch
tlwillke Nov 2, 2026
ea7357a
Fix native ASH projection ownership accounting
tlwillke Nov 3, 2026
dac1c61
Account retained ASH model, vector, and cache storage
tlwillke Nov 3, 2026
d4403b7
Add true native FP16 batch projection with portable fallback
tlwillke Nov 3, 2026
5d0c7bc
Combine concurrent ASH query projections on caller threads
tlwillke Nov 3, 2026
3553ea4
Add reusable prepared ASH queries for graph search
tlwillke Nov 3, 2026
d342b86
Add bounded execution with batched request preparation
tlwillke Nov 3, 2026
6aefea3
Add queued query execution mode to BenchYAML
tlwillke Nov 3, 2026
5c95726
Document queued ASH POC and unresolved latency regression
tlwillke Nov 3, 2026
bbac8c6
Unify queued ASH preparation and execute the first search locally
tlwillke Nov 4, 2026
a18853d
Defer queued latency reporting until query measurements finish
tlwillke Nov 4, 2026
e87c7dc
Document queued-query tail latency findings and focused fixes
tlwillke Nov 4, 2026
906f45a
Preserve direct ASH projection for one-row query preparation
tlwillke Nov 4, 2026
0cbd186
Scope queued benchmark reporting to completed measurement snapshots
tlwillke Nov 4, 2026
3e614cd
Record matched query measurements and reporting limitations
tlwillke Nov 4, 2026
9c9e590
Harden bounded batch execution for shared host executors
tlwillke Nov 4, 2026
c89b5b7
Guard queued query ownership and reuse bounded execution capacity
tlwillke Nov 4, 2026
d716ac6
Make fused ASH and PQ studies reproducible with standalone BenchYAML
tlwillke Nov 4, 2026
cb5f970
Document asynchronous query integration and reproducible benchmark pr…
tlwillke Nov 4, 2026
d144364
Restore standard license checks for ASH sources and generated reports
tlwillke Nov 4, 2026
ca92c1f
Merge production ASH query batching and reproducible BenchYAML studies
tlwillke Nov 4, 2026
1fe0dda
Warm the actual single-request path before BenchYAML latency measurem…
tlwillke Nov 4, 2026
f0e40e3
Share the latency execution pass between warmup and measurement
tlwillke Nov 4, 2026
504606c
Validate queued query handoff using identical prepared arithmetic
tlwillke Nov 4, 2026
55727c0
Use consistent prepared arithmetic in direct benchmark validation
tlwillke Nov 4, 2026
8eca9c3
Add reproducible large-dataset fused ASH and PQ studies
tlwillke Nov 4, 2026
e1066c1
Optimize native four-bit ASH single scoring with fixed lookup
tlwillke Nov 4, 2026
a7a97df
Use native two-bit ASH single scoring with explicit fallback guard
tlwillke Nov 4, 2026
e9b1991
Add standard MPNet-10M ASH index configuration
tlwillke Nov 5, 2026
8582de5
Include construction timings in queued BenchYAML reports
tlwillke Nov 5, 2026
8cdf18b
Keep benchmark diagnostics separate from result tables
tlwillke Nov 5, 2026
ed55e1f
Reuse ASH encoding corrections during construction setup
tlwillke Nov 5, 2026
4d71ec8
Reuse input-scan means for NVQ reranking
tlwillke Nov 5, 2026
31b5d7e
Add opt-in oneDNN INT8 ASH query projection
tlwillke Nov 6, 2026
9e7f639
Default ASH construction to symmetric-all and document configuration
tlwillke Nov 6, 2026
2e683e6
Expose ASH projection precision in BenchYAML run YAML
tlwillke Nov 6, 2026
4e36c9b
Move BenchYAML ASH precision into index search parameters
tlwillke Nov 6, 2026
9f3ebaa
Add introductory fused ASH graph examples for INT8 and FP16
tlwillke Nov 6, 2026
9aebbef
Demonstrate synchronous and queued ASH searches in hello examples
tlwillke Nov 6, 2026
090faaa
Preserve incremental native builds across Maven phases
tlwillke Nov 6, 2026
775ef9e
Merge main into ash-dev with modular Grid integration
tlwillke Nov 7, 2026
bac007e
Add BenchYAML configuration guide
tlwillke Nov 7, 2026
3f42a42
Add BenchYAML schema 3 construction and search options
tlwillke Nov 8, 2026
3671a37
Use the JVector API in HelloVectorWorld
tlwillke Nov 8, 2026
88df291
Avoid per-call heap segment allocation in symmetric ASH pair kernel
tlwillke Nov 8, 2026
a2cedea
Add DistancesFP scoring and allocation benchmark
tlwillke Nov 8, 2026
08c9776
Group ASH benchmark index recipes and leave saved-index reuse off by …
tlwillke Nov 9, 2026
ba0a9f2
Organize index parameters into dataset defaults and example pipelines
tlwillke Nov 9, 2026
8ebde41
Use lock-free paged storage for dense graph node maps
tlwillke Nov 9, 2026
fddd5f0
Join pool workers before the TestNeighbors leak check
tlwillke Nov 9, 2026
beb274e
Store ASH codes in compact pages and score them in place
tlwillke Nov 9, 2026
24ebb57
Keep the tuned ASH projection kernel within short query arrays
tlwillke Nov 9, 2026
2478da8
Report graph build, flush and reopen times for on-disk builds
tlwillke Nov 9, 2026
8e1aa6d
Name ESMC recipes after their catalog datasets
tlwillke Nov 9, 2026
ff4d30d
Log ASH training through SLF4J instead of standard output
tlwillke Nov 9, 2026
28396dd
Set construction and search workers in the index YAML
tlwillke Nov 9, 2026
fe80b2d
Add a build-and-run launcher and IntelliJ run configurations
tlwillke Nov 9, 2026
a09f65d
Remove benchmark run records and machine paths
tlwillke Nov 9, 2026
955039f
Default BenchYAML to a few public datasets and key output
tlwillke Nov 9, 2026
3549f97
Remove one-off PQ analysis tools and kernel tuning harnesses
tlwillke Nov 9, 2026
4821179
Make the ASH vs PQ study runner portable
tlwillke Nov 9, 2026
e994c72
Summarize the ASH vs PQ results and make reproduction portable
tlwillke Nov 9, 2026
5f2cb46
Add an ASH performance page with the ASH vs PQ results
tlwillke Nov 9, 2026
7582603
Align the ASH and benchmark docs and fix broken links
tlwillke Nov 9, 2026
dbe74d1
Use ASH with main's graph settings in the dataset defaults
tlwillke Nov 10, 2026
5bb6a9e
Keep low-dimensional defaults unquantized and drop plot_output.py ref…
tlwillke Nov 10, 2026
cab432e
Keep uncompressed defaults scoring with source vectors
tlwillke Nov 10, 2026
a248c9b
Reject any reranker on full-precision search
tlwillke Nov 10, 2026
918d1ae
Let the library set BLAS threads for ASH training
tlwillke Nov 10, 2026
2ed3205
Add one-JVM recipes for every ASH vs PQ case
tlwillke Nov 10, 2026
a2d020d
Resolve the ASH TODOs
tlwillke Nov 10, 2026
564e2d5
Test every selectable format version, including 6 with fused PQ and NVQ
tlwillke Nov 10, 2026
b8525fc
Document on-disk format version 7 in UPGRADING.md
tlwillke Nov 10, 2026
261b1ba
Write the 4.1.0 release notes for ASH as PR 796 entries
tlwillke Nov 10, 2026
6f5e6b4
Accept schema 1 index YAML in BenchYAML
tlwillke Nov 10, 2026
1982296
Drop license comments from docs excluded from the license check
tlwillke Nov 10, 2026
2ec06af
Explain landmarks and shared projection in the ASH release note
tlwillke Nov 10, 2026
66c0ef8
Declare netlib BLAS and LAPACK where the published jvector artifact i…
tlwillke Nov 10, 2026
c3d4c2c
Rewrite the README around getting started, quantizer choice and Bench…
tlwillke Nov 10, 2026
1587e76
Install CMake for oneDNN in Linux CI
tlwillke Nov 10, 2026
b16ffc1
Guard the ASH native subprocess test on hosts without the library
tlwillke Nov 10, 2026
f29789f
Include KleidiAI objects in the ARM oneDNN add-on
tlwillke Nov 10, 2026
3507c3c
Avoid the masked gather in Panama ASH projection scoring
tlwillke Nov 10, 2026
9b5819a
Mark the key ASH APIs as experimental
tlwillke Nov 10, 2026
ade1ec9
Use scalar ASH kernels on JDK 20 and drop masked memory ops from proj…
tlwillke Nov 10, 2026
9418c19
Keep the 16-lane ASH neighborhood path off scalable SVE targets
tlwillke Nov 10, 2026
4fd3af0
Exclude Meson's subproject lock and package cache from RAT
tlwillke Nov 10, 2026
14e82bf
Restore the regression-tests dataset section used by CI benchmarks
tlwillke Nov 10, 2026
0681448
Split the oneDNN add-on into its own Meson project and fetch Highway …
tlwillke Nov 10, 2026
cfb9cdf
Quote the oneDNN Maven flag so PowerShell passes it intact on Windows
tlwillke Nov 10, 2026
2281ff8
Let the oneDNN FP32 ASH query view report batch projection
tlwillke Nov 10, 2026
e3a5ded
Key cached benchmark graphs by everything that shapes the index file
tlwillke Nov 10, 2026
6ae13f0
Let DistancesFP load public datasets by name and measure exact FP32 r…
tlwillke Nov 11, 2026
e5bacc6
Score leftover ASH dimensions in one step in the native code-vs-code …
tlwillke Nov 11, 2026
18f936e
Build the ASH query LUT from per-dimension products
tlwillke Nov 10, 2026
045632e
Use Highway for query-sized FP32 ASH projection batches
tlwillke Nov 10, 2026
06610c0
Project INT8 ASH query tiles with a 256-bit VNNI kernel on non-AMX CPUs
tlwillke Nov 10, 2026
c9261a6
Tighten the ASH neighborhood kernel helpers per review
tlwillke Nov 11, 2026
b9835df
Drop scalar-target ASH kernel paths and guard 16-lane permutes for AV…
tlwillke Nov 11, 2026
415b009
Use unmasked loads for full vectors and one accumulator per ASH code …
tlwillke Nov 11, 2026
9ac0457
Let DistancesASH load public datasets by name and score every ASH bit…
tlwillke Nov 11, 2026
40544d2
removing hard coded version from Feature (#797)
MarkWolters Nov 11, 2026
56d598f
Give the fvec read-progress tests room for class loading on slow CI r…
tlwillke Nov 11, 2026
62598a9
Revert "Give the fvec read-progress tests room for class loading on s…
tlwillke Nov 11, 2026
9514019
Fold the ASH landmark term into every offset and give every bit width…
tlwillke Nov 11, 2026
b6dc6f2
Prefer INT8 ASH query projection with a two-digit query and the direc…
tlwillke Nov 11, 2026
55b6b0a
Force SIMD in the ASH negative-entry test only where the backend offe…
tlwillke Nov 11, 2026
c1a1d5b
Address PR review: packed-bits race, shared BLAS scopes, search provi…
tlwillke Nov 11, 2026
a12542d
Keep the native build quiet unless JVECTOR_NATIVE_BUILD_VERBOSE is set
tlwillke Nov 11, 2026
ba32934
Show FP32 for uncompressed build and search stages in the BenchYAML p…
tlwillke Nov 12, 2026
8b4addd
Print native build progress only for first builds and real rebuilds
tlwillke Nov 12, 2026
c7ec5d4
Reconfigure native builds only when their setup arguments change
tlwillke Nov 12, 2026
cba5927
Report the CPU and INT8 settings when the INT8 projection tests fail
tlwillke Nov 12, 2026
925ca36
Let the packed-bits race test tolerate a one-ULP reduction difference
tlwillke Nov 12, 2026
f24ea17
Compile the INT8 projection library without floating-point contraction
tlwillke Nov 12, 2026
9c85d62
Initialize the fvec reader before the read-progress tests' timeouts s…
tlwillke Nov 12, 2026
795bef3
Combine the INT8 query digits exactly so no compiler can fuse the fin…
tlwillke Nov 12, 2026
aad0da6
Measure up to three windows in the zero-allocation tests
tlwillke Nov 12, 2026
5cb70f3
Guard the read-progress tests with a call budget instead of timeouts
tlwillke Nov 12, 2026
2cf238b
Defer search candidates that can no longer be expanded
tlwillke Nov 12, 2026
650af85
Score ASH construction neighbors in one native call
tlwillke Nov 12, 2026
66aa605
Always stop ASH searches adaptively unless the searcher turns it off
tlwillke Nov 12, 2026
4394de1
Score ASH dot products on the exact unclamped scale
tlwillke Nov 13, 2026
c7f0ea5
Make adaptive stopping norm-aware, bounded, and the default for every…
tlwillke Nov 13, 2026
905915d
Document norm-aware adaptive stopping and the format 7 length fields
tlwillke Nov 13, 2026
34123e6
Make adaptive stopping experimental and off by default
tlwillke Nov 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 5 additions & 6 deletions .github/workflows/run-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ jobs:
- name: Set up GCC
run: |
sudo apt install -y gcc
- name: Install Meson and Ninja
- name: Install native build dependencies
run: |
sudo apt update && sudo apt install -y meson ninja-build
sudo apt update && sudo apt install -y cmake meson ninja-build
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v3
Expand Down Expand Up @@ -131,6 +131,8 @@ jobs:
ref: ${{ matrix.branch }}
fetch-depth: 0

# Branches from before the Highway Meson wrap still use a submodule;
# this step is a no-op on newer ones.
- name: Initialize Git Submodules
run: git submodule update --init

Expand All @@ -154,7 +156,7 @@ jobs:

# Build the branch
- name: Build branch
run: mvn -B -Punix-amd64-profile package --file pom.xml
run: mvn -B -Punix-amd64-profile -Dnative.onednn=true package --file pom.xml

# Run the benchmark if jvector-examples exists
- name: Run benchmark
Expand Down Expand Up @@ -255,9 +257,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Initialize Git Submodules
run: git submodule update --init

- name: Download all benchmark results
uses: actions/download-artifact@v4
with:
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/run-compaction.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ jobs:
steps:
- name: Set up GCC
run: sudo apt install -y gcc
- name: Install Meson and Ninja
- name: Install native build dependencies
run: |
sudo apt update && sudo apt install -y meson ninja-build
sudo apt update && sudo apt install -y cmake meson ninja-build
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v3
Expand All @@ -74,11 +74,13 @@ jobs:
ref: ${{ matrix.branch }}
fetch-depth: 0

# Branches from before the Highway Meson wrap still use a submodule;
# this step is a no-op on newer ones.
- name: Initialize Git Submodules
run: git submodule update --init

- name: Build branch
run: mvn -B -Punix-amd64-profile package --file pom.xml
run: mvn -B -Punix-amd64-profile -Dnative.onednn=true package --file pom.xml

- name: Run CompactorBenchmark
id: run-benchmark
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/unit-tests-arm64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,12 @@ jobs:
run: |
sudo apt install -y gcc g++

- name: Install Meson, Ninja, and GTest
- name: Install native build dependencies and GTest
run: |
sudo apt update && sudo apt install -y meson ninja-build pkg-config libgtest-dev
sudo apt update && sudo apt install -y cmake meson ninja-build pkg-config libgtest-dev

- uses: actions/checkout@v4

- name: Initialize Git Submodules
run: git submodule update --init

- name: Build test_simd_kernels (native C++)
# Meson detects aarch64 and compiles all three ISA variants (neon/sve/sve2)
# regardless of what the host CPU supports at runtime.
Expand Down Expand Up @@ -110,7 +107,7 @@ jobs:
env:
JVECTOR_MAX_ISA: ${{ matrix.max_isa }}
run: >-
mvn -B -Punix-amd64-profile -pl jvector-tests -am test
mvn -B -Punix-amd64-profile -Dnative.onednn=true -pl jvector-tests -am test
-DTest_RequireSpecificVectorizationProvider=NativeVectorizationProvider
-Dsurefire.failIfNoSpecifiedTests=false
-Dtest=TestVectorizationProvider
Expand All @@ -119,7 +116,7 @@ jobs:
env:
JVECTOR_MAX_ISA: ${{ matrix.max_isa }}
run: >-
mvn -B -Punix-amd64-profile test
mvn -B -Punix-amd64-profile -Dnative.onednn=true test
-DTest_RequireSpecificVectorizationProvider=NativeVectorizationProvider

- name: Test Summary for (ARM64/max:${{ matrix.max_isa }},JDK${{ matrix.jdk }})
Expand Down
19 changes: 7 additions & 12 deletions .github/workflows/unit-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,10 @@ jobs:
- name: Set up GCC
run: |
sudo apt install -y gcc
- name: Install Meson, Ninja, and GTest
- name: Install native build dependencies and GTest
run: |
sudo apt update && sudo apt install -y meson ninja-build pkg-config libgtest-dev
sudo apt update && sudo apt install -y cmake meson ninja-build pkg-config libgtest-dev
- uses: actions/checkout@v4
- name: Initialize Git Submodules
run: git submodule update --init

- name: Build test_simd_kernels (native C++)
working-directory: jvector-native/src/main/native
run: |
Expand Down Expand Up @@ -108,7 +105,7 @@ jobs:
env:
JVECTOR_MAX_ISA: ${{ matrix.max_isa }}
run: >-
mvn -B -Punix-amd64-profile -pl jvector-tests -am test
mvn -B -Punix-amd64-profile -Dnative.onednn=true -pl jvector-tests -am test
-DTest_RequireSpecificVectorizationProvider=NativeVectorizationProvider
-Dsurefire.failIfNoSpecifiedTests=false
-Dtest=TestVectorizationProvider
Expand All @@ -118,7 +115,7 @@ jobs:
env:
JVECTOR_MAX_ISA: ${{ matrix.max_isa }}
run: >-
mvn -B -Punix-amd64-profile test
mvn -B -Punix-amd64-profile -Dnative.onednn=true test
-DTest_RequireSpecificVectorizationProvider=NativeVectorizationProvider

- name: Test Summary for (ISA:isa-avx512f/max:${{ matrix.max_isa }},JDK${{ matrix.jdk }})
Expand Down Expand Up @@ -147,8 +144,6 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Initialize Git Submodules
run: git submodule update --init
- name: Set up JDK
uses: actions/setup-java@v3
with:
Expand All @@ -159,12 +154,12 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt install -y gcc
- name: Install Meson and Ninja
- name: Install native build dependencies
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt update && sudo apt install -y meson ninja-build
sudo apt update && sudo apt install -y cmake meson ninja-build
- name: Compile, run tests, and package (JDK 22)
run: mvn -B verify
run: mvn -B "-Dnative.onednn=true" verify
if: matrix.jdk == '22'
- name: Compile, run tests, and package (JDK 20)
run: mvn -B -Pjdk20 -am -pl jvector-tests test
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ dataset_
**results**.jsonl

### Bench caches
compressor_cache/
pq_cache/
index_cache/
dataset_cache/
Expand Down Expand Up @@ -64,3 +65,6 @@ dependency-reduced-pom.xml
results.csv
**/datasets/custom/**
**/dataset_cache/**

### Benchmark server profiles (machine-specific) ###
jvector-examples/bench-profiles/local/
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

19 changes: 19 additions & 0 deletions .run/ASH vs PQ single JVM - MPNet 10M 2-bit ASH.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ASH vs PQ single JVM - MPNet 10M 2-bit ASH" type="ShConfigurationType" folderName="ASH vs PQ single JVM">
<option name="SCRIPT_TEXT" value="" />
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/jvector-examples/benchyaml-play.sh" />
<option name="SCRIPT_OPTIONS" value="jvector-examples/yaml-configs/index-parameters/studies/ash-vs-pq-single-jvm/mpnet10m-2bit-ash.yml" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
<option name="INTERPRETER_PATH" value="/bin/bash" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="EXECUTE_IN_TERMINAL" value="false" />
<option name="EXECUTE_SCRIPT_FILE" value="true" />
<envs>
<env name="BENCH_RUN_CONFIG" value="jvector-examples/yaml-configs/ash-pq/run-single-jvm.yml" />
</envs>
<method v="2" />
</configuration>
</component>
Loading
Loading