Skip to content

Commit dd266bc

Browse files
author
Yury
committed
preliminary release notes
1 parent 2175362 commit dd266bc

File tree

2 files changed

+16
-25
lines changed

2 files changed

+16
-25
lines changed

README.md

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,22 @@
11
# Hnswlib - fast approximate nearest neighbor search
2-
Header-only C++ HNSW implementation with python bindings.
2+
Header-only C++ HNSW implementation with python bindings, insertions and updates.
33

44
**NEWS:**
55

6+
**version 0.7.0**
67

7-
**version 0.6.2**
8-
9-
* Fixed a bug in saving of large pickles. The pickles with > 4GB could have been corrupted. Thanks Kai Wohlfahrt for reporting.
10-
* Thanks to ([@GuyAv46](https://github.com/GuyAv46)) hnswlib inner product now is more consitent accross architectures (SSE, AVX, etc).
11-
*
12-
13-
**version 0.6.1**
14-
15-
* Thanks to ([@tony-kuo](https://github.com/tony-kuo)) hnswlib AVX512 and AVX builds are not backwards-compatible with older SSE and non-AVX512 architectures.
16-
* Thanks to ([@psobot](https://github.com/psobot)) there is now a sencible message instead of segfault when passing a scalar to get_items.
17-
* Thanks to ([@urigoren](https://github.com/urigoren)) hnswlib has a lazy index creation python wrapper.
18-
19-
**version 0.6.0**
20-
* Thanks to ([@dyashuni](https://github.com/dyashuni)) hnswlib now uses github actions for CI, there is a search speedup in some scenarios with deletions. `unmark_deleted(label)` is now also a part of the python interface (note now it throws an exception for double deletions).
21-
* Thanks to ([@slice4e](https://github.com/slice4e)) we now support AVX512; thanks to ([@LTLA](https://github.com/LTLA)) the cmake interface for the lib is now updated.
22-
* Thanks to ([@alonre24](https://github.com/alonre24)) we now have a python bindings for brute-force (and examples for recall tuning: [TESTING_RECALL.md](TESTING_RECALL.md).
23-
* Thanks to ([@dorosy-yeong](https://github.com/dorosy-yeong)) there is a bug fixed in the handling large quantities of deleted elements and large K.
24-
25-
8+
* Added support to filtering (#402, #430) by [@kishorenc](https://github.com/kishorenc)
9+
* Added python interface for filtering (though note its performance is limited by GIL) (#417) by [@gtsoukas](https://github.com/gtsoukas)
10+
* Added support for replacing the elements that were market as delete with newly inserted elements (to control the size of the index, #418) by [@dyashuni](https://github.com/dyashuni)
11+
* Fixed data races/deadlocks in updates/insertion, added stress test for multithreaded operation (#418) by [@dyashuni](https://github.com/dyashuni)
12+
* Documentation, tests, exception handling, refactoring (#375, #379, #380, #395, #396, #401, #406, #404, #409, #410, #416, #415, #431, #432, #433) by [@jlmelville](https://github.com/jlmelville), [@dyashuni](https://github.com/dyashuni), [@kishorenc](https://github.com/kishorenc), [@korzhenevski](https://github.com/korzhenevski), [@yoshoku](https://github.com/yoshoku), [@jianshu93](https://github.com/jianshu93), [@PLNech](https://github.com/PLNech)
13+
* global linkages (#383) by [@MasterAler](https://github.com/MasterAler), USE_SSE usage in MSVC (#408) by [@alxvth](https://github.com/alxvth)
2614

2715

2816
### Highlights:
2917
1) Lightweight, header-only, no dependencies other than C++ 11
30-
2) Interfaces for C++, Java, Python and R (https://github.com/jlmelville/rcpphnsw).
31-
3) Has full support for incremental index construction. Has support for element deletions
18+
2) Interfaces for C++, Python, external support for Java and R (https://github.com/jlmelville/rcpphnsw).
19+
3) Has full support for incremental index construction and updating the elements. Has support for element deletions
3220
(by marking them in index). Index is picklable.
3321
4) Can work with custom user defined distances (C++).
3422
5) Significantly less memory footprint and faster build time compared to current nmslib's implementation.
@@ -50,7 +38,7 @@ Note that inner product is not an actual metric. An element can be closer to som
5038

5139
For other spaces use the nmslib library https://github.com/nmslib/nmslib.
5240

53-
#### Short API description
41+
#### API description
5442
* `hnswlib.Index(space, dim)` creates a non-initialized index an HNSW in space `space` with integer dimension `dim`.
5543

5644
`hnswlib.Index` methods:
@@ -263,14 +251,17 @@ https://github.com/facebookresearch/faiss
263251
["Revisiting the Inverted Indices for Billion-Scale Approximate Nearest Neighbors"](https://arxiv.org/abs/1802.02422)
264252
(current state-of-the-art in compressed indexes, C++):
265253
https://github.com/dbaranchuk/ivf-hnsw
254+
* Amazon PECOS https://github.com/amzn/pecos
266255
* TOROS N2 (python, C++): https://github.com/kakao/n2
267256
* Online HNSW (C++): https://github.com/andrusha97/online-hnsw)
268257
* Go implementation: https://github.com/Bithack/go-hnsw
269258
* Python implementation (as a part of the clustering code by by Matteo Dell'Amico): https://github.com/matteodellamico/flexible-clustering
259+
* Julia implmentation https://github.com/JuliaNeighbors/HNSW.jl
270260
* Java implementation: https://github.com/jelmerk/hnswlib
271261
* Java bindings using Java Native Access: https://github.com/stepstone-tech/hnswlib-jna
272-
* .Net implementation: https://github.com/microsoft/HNSW.Net
262+
* .Net implementation: https://github.com/curiosity-ai/hnsw-sharp
273263
* CUDA implementation: https://github.com/js1010/cuhnsw
264+
* Rust implementation https://github.com/rust-cv/hnsw
274265
* Rust implementation for memory and thread safety purposes and There is A Trait to enable the user to implement its own distances. It takes as data slices of types T satisfying T:Serialize+Clone+Send+Sync.: https://github.com/jean-pierreBoth/hnswlib-rs
275266

276267
### 200M SIFT test reproduction

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from setuptools import Extension, setup
99
from setuptools.command.build_ext import build_ext
1010

11-
__version__ = '0.6.1'
11+
__version__ = '0.7.0'
1212

1313

1414
include_dirs = [

0 commit comments

Comments
 (0)