You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+37Lines changed: 37 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,42 @@
1
1
# Release Notes
2
2
3
+
## deglib v0.2.6
4
+
5
+
### Overview
6
+
deglib v0.2.6 adds a second search strategy alongside the existing relative-epsilon search: **`ef` fixed-pool search**, now selectable through a single `eps_or_ef` query parameter. The new `ef` mode supports candidate filtering and a distance-computation budget. `Searcher::optimize()` gained K-Means entry-point selection and prefetch auto-tuning, and a set of graph-layout and SIMD improvements makes both build and search faster.
7
+
8
+
---
9
+
10
+
### 🚀 Key Features & Improvements
11
+
12
+
#### `ef` Fixed-Pool Search (new)
13
+
***Second exploration strategy:** In addition to the existing relative-epsilon (`eps`) search, queries can now run a fixed candidate-pool (`ef`) best-first search.
14
+
***Single `eps_or_ef` parameter:** One argument selects the mode — values $\ge 1.0$ are treated as a fixed pool size (`ef`), values $< 1.0$ run the relative-epsilon search. Applies to the C++ `Searcher` and the Python bindings.
15
+
***Candidate filtering:**`ef` search accepts a filter predicate; filtered candidates guide exploration but never occupy the result set, so the search radius is not prematurely collapsed.
16
+
***Distance-computation budget:**`ef` search can cap the number of distance evaluations per query (`max_distance_computation_count`) for predictable worst-case latency.
17
+
18
+
#### Searcher Tuning (`Searcher::optimize()`)
19
+
***K-Means entry points:** Clusters graph features to pick better search entry points, improving recall at a given effort.
20
+
***Prefetch auto-tuning:** Automatically tunes memory-prefetch parameters for the target machine.
21
+
22
+
#### Performance
23
+
***Faster distance kernels:** Vectorized SIMD tail handling across the FP32/FP16/Int8/UInt8 distance headers, plus feature and neighbor prefetching during graph traversal.
24
+
***Cache-friendly graph layout:**`ReadOnlyGraph` now stores features in a contiguous, aligned layout.
25
+
26
+
---
27
+
28
+
### ⚠️ Breaking Changes & Migration Guide
29
+
30
+
***`Searcher` search parameter:**`search()` / `search_batch()` (C++ and Python) now take `eps_or_ef` in place of `eps`. Existing relative-epsilon callers keep the same behavior by passing a value $< 1.0$.
31
+
***Graph creation & loading API:**`create_empty`, `create_dynamic_empty`, and `create_random_graph` moved to the `deglib` namespace, and `create_builder` / `load_readonly_graph` / `load_dynamic_graph` / `load_mutable_graph` are exposed from `deglib.h`. Update call sites to the new locations.
32
+
***EVP quantization:**`EvpQuantizer` is now a stateful object shared by database and queries; the `quantize_evp_*` free functions were removed. Use the quantizer instance directly.
33
+
34
+
---
35
+
36
+
### 🛠️ Bug Fixes
37
+
38
+
***Dynamic graph deletions:** Removing vertices from `SizeBoundedGraph` now keeps internal indices contiguous (swap-with-last compaction), fixing sliding-window graph extensions and `ReadOnlyGraph` serialization after deletions.
0 commit comments