Skip to content

Releases: unum-cloud/usearch

v2.7.4

22 Oct 17:38
Compare
Choose a tag to compare

2.7.4 (2023-10-22)

Improve

  • New SIMD-accelerated metrics from SimSIMD (0f7b4ae)

Make

  • Versioning CMake and citations (6e25f10)

v2.7.3

21 Oct 23:53
Compare
Choose a tag to compare

2.7.3 (2023-10-21)

Fix

  • Multi-threading and exactSearch JS dispatch (730a45c)

v2.7.2

17 Oct 07:19
Compare
Choose a tag to compare

2.7.2 (2023-10-17)

Make

  • Sign gradle and deprecate Anaconda (b1d8d9a)

v2.7.1

17 Oct 03:52
Compare
Choose a tag to compare

2.7.1 (2023-10-17)

Docs

Fix

  • Early exit in multi-index lookups (8bb0e39), closes #274

Make

  • Missing dependencies for Debian (890777d)

New APIs for JS, C, and Rust 🥳

13 Oct 23:24
Compare
Choose a tag to compare

New APIs for JS, C, and Rust 🥳

This release focuses on accelerating math with new SimSIMD capabilities, exposing exact search, parallel index construction, and parallel search to more runtimes!

  • C: usearch_distance to compute the distance between 2 vectors.
  • C: usearch_exact_search to perform exact search over strided matrices.
  • JS: add, search, contains, count, and get now support batches and can run in parallel!
  • JS: exactSearch to perform exact search over continuous matrices.
  • Rust: export is similar to get but less error-prone.

Special thanks to @nairihar for his contributions on the JavaScript side, and to @weedge for contributions in Rust 🤗

v2.6.1

13 Oct 03:29
Compare
Choose a tag to compare

2.6.1 (2023-10-13)

Docs

Make

Faster Exact Search 🎉

25 Sep 14:36
Compare
Choose a tag to compare

At the cost of using a bit more memory, I've made the exact search significantly faster.
LLM don't always need billion-scale vector search, but they often need to search through a small set of high-dimensional vectors.
I've added a benchmark you can run on your hardware to compare USearch against FAISS's exact search functionality.

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 10 --k 100
USearch:  0.013957023620605469
FAISS:    0.04720497131347656

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 10 --k 100 --half
USearch:  0.014386892318725586
FAISS:    0.08691692352294922

Even without hardware acceleration from SimSIMD, on the M2 Mac Book Pro:

  • USearch performs 3.3x faster than FAISS on single-precision f32 vectors.
  • USearch performs 6.1x faster than FAISS on half-precision f16 vectors.

In some settings, the difference may reach 10x. Below are samples for the 13th Gen Intel Core i9-13950HX x86 CPU:

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 10 --k 100
USearch:  0.024287939071655273
FAISS:    0.2323017120361328

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 10 --k 100 --half
USearch:  0.04021167755126953
FAISS:    0.20610713958740234

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 100 --k 100
USearch:  0.12478017807006836
FAISS:    0.5975005626678467

$ python python/scripts/bench_exact.py --ndim 256 --n 100_000 --q 100 --k 100 --half
USearch:  0.423309326171875
FAISS:    0.7565422058105469

$ python python/scripts/bench_exact.py --ndim 256 --n 10_000 --q 10 --k 100 --half
USearch:  0.02945685386657715
FAISS:    0.11811184883117676

$ python python/scripts/bench_exact.py --ndim 256 --n 10_000 --q 100 --k 100 --half
USearch:  0.06946372985839844
FAISS:    0.15354132652282715

The script is located at python/scripts/bench_exact.py and has a few CLI parameters:

  • --ndim - number of vector dimensions.
  • --n - number of vectors in the dataset to search.
  • --q - number of vectors to query among n.
  • --k - number of closest neighbors to retrieve per query.
  • --half - use half-precision.

For large q, FAISS works quite well - in such cases, it redirects the query to the linked BLAS implementation. But it means it supports only two metrics - L2 and inner product. With USearch exact search, you can still use all the same metrics as with usearch.index.Index class and provide custom JIT-ed CompiledMetric.


Thanks to @ebursztein, @guyrosin, and @vprelovac for suggesting the use case and spotting the issues!
Next step - expose exact search in JS, Rust, and Swift bindings 🎉

Hashes

  • docs.tar.gz : edb8e2a80790e80b75b5d6f869d327643d6bc6bff335561e90bcf6b648ff334e
  • usearch-v2.6.0.tar.gz : 3759c4c1102bc937b322dd9be1ddb372d3d713b6f8a74d475c487ccb9bdd378b
  • usearch-v2.6.0.zip : 66ba82ad76265d19afb061f79982355c1aa665489acc3b02ad68fce13b04e88a
  • usearch_linux_amd_2.6.0.deb : 6edd76af1d54a18da5a14002575fed425325017d5ae6b675f4995efd83b22045
  • usearch_linux_arm_2.6.0.deb : c16148a391381ecc87dbb038c0e1ad7a5c42728e6f25665aade1584f3e6adb9f
  • usearch_macOS_arm64_2.6.0.zip : 82697239671093d2c43e61682e465e1160cf77bed223cad62a735b81a86e00d9
  • usearch_macOS_x86_64_2.6.0.zip : 3b59742d3725e8153496c511ed966863c0cefb11c38517603f0917f51c5d5861
  • usearch_wasm_linux_arm64_2.6.0.tar.gz : 6fe59c9ec43109c4fa8c20d41c1ea64f86903123c61ac8a2034acc5f8a26dc26
  • usearch_wasm_linux_x86_64_2.6.0.tar.gz : 1e266401ce200490437493a54d9bd4cc522346305667c14ce84a21c28f8ae8ca
  • usearch_wasm_macos_arm64_2.6.0.zip : a10bd9a94925cc26a16fcaf9198e1277b3aa978b5248a21c732b9f5e1cbacb31
  • usearch_wasm_macos_x86_64_2.6.0.zip : 7dc81152a16c59ddabd3304e00f76cce2c43413447cf38aeb4b187af4c9f7c75
  • usearch_wasm_windows_x64_2.6.0.tar.gz : 6a6b701077d47830b26063005452369b9386a8f3210be7b6b724acce084a546a
  • usearch_wasm_windows_x86_2.6.0.tar.gz : af01ec3098a58f25d3e80f1747f019d4b705bf908d35f48d3b71aa7294756a9d
  • usearch_windows_x64_2.6.0.tar : aa3e1a054d6d340d0c967c361d46977513de3d14d3b5f0afaabc01c7add381a0
  • usearch_windows_x86_2.6.0.tar : 412c79eeec7909f33d9325c5bae5d22bcf78332e0b934ff198b5a0a41f552813

v2.5.1

20 Sep 17:25
Compare
Choose a tag to compare

2.5.1 (2023-09-20)

Build

  • Fix csharp version update in release.yml (1cc8d1b)

Fix

Improve

  • Expose metric_kind API (1d2e039)
  • Temporary memory for exact search (13f9634)
  • Use std::shared_mutex only with C++17 (4d0daab)

Make

  • Disable AVX512 and SVE on Apple chips (720cfd2)
  • Lighter builds with colored diagnostics (87135d3)

Hashes

  • docs.tar.gz : f4770548b62b459a83a4eb82c26e2769e7be17d4aaf403cf0f817c6681b515f6
  • usearch-v2.5.1.tar.gz : fdc7c3fbf46115c6c573da6eed7b96b0bcc801306a61446f891d36a2ca4a7969
  • usearch-v2.5.1.zip : 55b97c9addaa18fe695e23f1410f392f936c64ed36eaa3bd03894d8afd30e385
  • usearch_linux_amd_2.5.1.deb : a1cdc20b5953386981c70e8ec647b29d2b0d9503be0044456291f2b27bb96f86
  • usearch_linux_arm_2.5.1.deb : ea1badbec9cb08794cbcdc08d99ddf476c16d4c99605e80380ee8014122d2b8f
  • usearch_macOS_arm64_2.5.1.zip : e652e05789864786b394169e15c3b8e6a34935c6936298faf91a945efd09734d
  • usearch_macOS_x86_64_2.5.1.zip : 7b162dd85ee9766457393efcba72507fbc764a7a00b612dba3aa7beee06aec3f
  • usearch_wasm_linux_arm64_2.5.1.tar.gz : 57a230c45a2e51990ed2bf00cb13e1873b3b0f64a5e4de53a4d0dc902427b97c
  • usearch_wasm_linux_x86_64_2.5.1.tar.gz : 3c309359c05eed6418982369d6d1b2e170d32fe886d5324b4ba55421227adb29
  • usearch_wasm_macos_arm64_2.5.1.zip : 64a4d1fc489d802f3f355cd87f91ff129297fbdfec616491da7bce0e8dbadb1f
  • usearch_wasm_macos_x86_64_2.5.1.zip : 604e2e78e07c4c50f808ee77c5ef4d2b31426665ce01fe9d186afcd93e78607c
  • usearch_wasm_windows_x64_2.5.1.tar.gz : b1c180ce7c45fb1b77a8761bac4bada57e6a884a6a398ad15d971990a8ad7476
  • usearch_wasm_windows_x86_2.5.1.tar.gz : 6cf760134a9d3f5d5c46c2d46668c4a66040660d68a79d5734230b95d7d345e5
  • usearch_windows_x64_2.5.1.tar : 3d6dd9c042965d55027260d3e68e7230cff87a74fb9e832ab1a1f6530483f1eb
  • usearch_windows_x86_2.5.1.tar : d8dbc5bb3ed9db9a4a75534c3d4b89bd4580d131e2ceb0f4ebe74a74599dfaa3

v2.5.0

18 Sep 08:49
Compare
Choose a tag to compare

2.5.0 (2023-09-18)

Add

  • Second level Rust binding (84c0f79)

Improve

  • Multi-lookup support in Rust (5c7f009)

Hashes

  • docs.tar.gz : cc2fe9b9d7bab78d50037655c4e630877971cec236b06602f7526815ff15f265
  • usearch-v2.5.0.tar.gz : 2812b9d41fc20102a428456f4b782572f2c882144cb117dc43eed572ee7797e4
  • usearch-v2.5.0.zip : fcf7a517aa4bb2845a51ee6def40fde3081eecfbf1a3d880d41f9858caeaf1e0
  • usearch_linux_amd_2.5.0.deb : 322fea479cddf4afd3b4f9739e076fbd6c369a5f45ed663fe674ba667c2a87ff
  • usearch_linux_arm_2.5.0.deb : 2039e10c2cf777f190252c490d54cde7908ebcbddf65164190cee3b87be92f65
  • usearch_macOS_arm64_2.5.0.zip : bab366cbc9e0d357cf4b80c150228f17634d79b12d843e28f179c722cdd36bca
  • usearch_macOS_x86_64_2.5.0.zip : cab2775663b9089c60bfdfb72bc6b3b71b5242cb312caa7e616833f7c70e039f
  • usearch_wasm_linux_arm64_2.5.0.tar.gz : 0d465cd66abb7601b44e35c314735ad79cf5580f91cb71569a22c1c31e2590c9
  • usearch_wasm_linux_x86_64_2.5.0.tar.gz : 4dcc0849bcf8ffcbd835165b13ab0fd1a6b69beebb2506a3c96503b0ea75dff6
  • usearch_wasm_macos_arm64_2.5.0.zip : d867e41f3c9ea7c343510e51f1bb6b4a99ed62e14c8857f70a4b889f172ad70b
  • usearch_wasm_macos_x86_64_2.5.0.zip : 59ae0db49709f7591fddf971e28977b34355972de5940d35da80dddec209f410
  • usearch_wasm_windows_x64_2.5.0.tar.gz : a628956195c7c4a68ff02364c2bc7db8445c194119046d35be1690cbd0f69c0a
  • usearch_wasm_windows_x86_2.5.0.tar.gz : e92ad06813afd3f50d6188a6d2d74f12f3797b2b50e87b9c3e046c315e455915
  • usearch_windows_x64_2.5.0.tar : e70c3f59dcdc906e8d33a8a2e228b033aaef4ee498360ec220048cac17aa79d6
  • usearch_windows_x86_2.5.0.tar : a0029aee5004650319ecbca2bed7b466d36b12a0dd682b5dc90bbd38623d7900

v2.4.1

18 Sep 08:17
Compare
Choose a tag to compare

2.4.1 (2023-09-18)

Build

Docs

Fix

  • Dimensions of exact search results (6675b72)

Improve

  • Add new constructor for USearchIndex (eab5acb)

Make

  • Add WASM C lib build action (5313a4f)
  • Publish WASM libs archive hashes (4121859)
  • Separate option for C tests compilation (e91ae6a)
  • Set checkout branch (ea3356d)

Refactor

  • Use stub param in IndexOptions (348e54a)

Test

  • Style improvement and split complex tests (7c84bc0)