Releases: unum-cloud/usearch
v2.7.4
v2.7.3
v2.7.2
v2.7.1
New APIs for JS, C, and Rust 🥳
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
, andget
now support batches and can run in parallel! - JS:
exactSearch
to perform exact search over continuous matrices. - Rust:
export
is similar toget
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
Faster Exact Search 🎉
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 amongn
.--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
2.5.1 (2023-09-20)
Build
- Fix csharp version update in release.yml (1cc8d1b)
Fix
- Adequate search radius (4b207d9)
Improve
- Expose
metric_kind
API (1d2e039) - Temporary memory for exact search (13f9634)
- Use
std::shared_mutex
only with C++17 (4d0daab)
Make
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
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
2.4.1 (2023-09-18)
Build
Docs
- Suggest v3 format (9667599)
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)