usearch 2.26.2__tar.gz → 2.26.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {usearch-2.26.2/usearch.egg-info → usearch-2.26.4}/PKG-INFO +27 -8
- {usearch-2.26.2 → usearch-2.26.4}/README.md +26 -7
- usearch-2.26.4/VERSION +1 -0
- {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index.hpp +1 -1
- {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index_dense.hpp +3 -0
- {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index_plugins.hpp +55 -19
- {usearch-2.26.2 → usearch-2.26.4}/python/lib.cpp +3 -1
- {usearch-2.26.2 → usearch-2.26.4/usearch.egg-info}/PKG-INFO +27 -8
- usearch-2.26.2/VERSION +0 -1
- {usearch-2.26.2 → usearch-2.26.4}/LICENSE +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/MANIFEST.in +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/LICENSE +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention/sapphireamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention/sme.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/capabilities.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/diamond.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/sapphire.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/smef64.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/diamond.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonfhm.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonfp8.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvbb.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvbf16.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvhalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sapphire.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sierra.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sve.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svebfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svehalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svesdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/diamond.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/graniteamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonfhm.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonfp8.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sapphireamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sierra.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sme.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smebi32.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smef64.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smehalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neonhalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/sapphire.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/sapphireamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/sme.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neonfhm.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/numkong.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/random.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonfhm.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/sierra.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/sve.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/neonhalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/sapphire.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/rvvbb.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/sve.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/smebi32.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/sve2.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/turin.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/diamond.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonfp8.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvvbf16.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvvhalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/sierra.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/sve.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svebfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svehalf.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svesdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/alder.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/diamond.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/genoa.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/graniteamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/icelake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/loongsonasx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonbfdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonfhm.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonfp8.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonsdot.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/powervsx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sapphireamx.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sierra.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sme.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/smef64.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/haswell.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/neon.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/rvv.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/serial.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/skylake.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/v128relaxed.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/types.h +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/pyproject.toml +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/__init__.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/client.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/compiled.pyi +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/eval.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/index.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/io.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/numba.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/py.typed +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/python/usearch/server.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/setup.cfg +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/setup.py +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/SOURCES.txt +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/dependency_links.txt +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/requires.txt +0 -0
- {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: usearch
|
|
3
|
-
Version: 2.26.
|
|
3
|
+
Version: 2.26.4
|
|
4
4
|
Summary: Smaller & Faster Single-File Vector Search Engine from Unum
|
|
5
5
|
Home-page: https://github.com/unum-cloud/USearch
|
|
6
6
|
Author: Ash Vardanian
|
|
@@ -569,20 +569,39 @@ index = Index(ndim=ndim, metric=CompiledMetric(
|
|
|
569
569
|
|
|
570
570
|
## Integrations & Users
|
|
571
571
|
|
|
572
|
+
### Databases & Query Engines
|
|
573
|
+
|
|
572
574
|
- [x] ClickHouse: [C++](https://github.com/ClickHouse/ClickHouse/pull/53447), [docs](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/annindexes#usearch).
|
|
573
575
|
- [x] DuckDB: [post](https://duckdb.org/2024/05/03/vector-similarity-search-vss.html).
|
|
574
576
|
- [x] ScyllaDB: [Rust](https://github.com/scylladb/vector-store), [presentation](https://www.slideshare.net/slideshow/vector-search-with-scylladb-by-szymon-wasik/276571548).
|
|
575
577
|
- [x] TiDB & TiFlash: [C++](https://github.com/pingcap/tiflash), [announcement](https://www.pingcap.com/article/introduce-vector-search-indexes-in-tidb/).
|
|
576
|
-
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc).
|
|
578
|
+
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc), [architecture](https://www.yugabyte.com/blog/yugabytedb-vector-indexing-architecture/), [1B-vector benchmark](https://www.yugabyte.com/blog/benchmarking-1-billion-vectors-in-yugabytedb/).
|
|
577
579
|
- [x] MemGraph: [C++](https://github.com/memgraph/memgraph/blob/784dd8520f65050d033aea8b29446e84e487d091/src/storage/v2/indices/vector_index.cpp), [announcement](https://memgraph.com/blog/simplify-data-retrieval-memgraph-vector-search).
|
|
578
|
-
- [x]
|
|
579
|
-
- [x]
|
|
580
|
-
- [x]
|
|
580
|
+
- [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
|
|
581
|
+
- [x] GreptimeDB: [Rust](https://github.com/GreptimeTeam/greptimedb/blob/main/src/index/src/vector.rs).
|
|
582
|
+
- [x] KurrentDB: [C#](https://github.com/kurrent-io/KurrentDB/blob/master/src/KurrentDB.Kontext/Indexing/USearch/USearchVectorStore.cs), [credits](https://github.com/kurrent-io/KurrentDB/blob/master/NOTICE.md).
|
|
583
|
+
- [x] Chroma: [Rust](https://github.com/chroma-core/chroma/blob/main/rust/index/src/usearch.rs), behind their RaBitQ-quantized SPANN index.
|
|
584
|
+
|
|
585
|
+
### AI Frameworks & Memory
|
|
586
|
+
|
|
587
|
+
- [x] Google: [Perch](https://github.com/google-research/perch-hoplite) bioacoustics DB, [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
|
|
588
|
+
- [x] Microsoft: [Semantic Kernel](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and [vcpkg](https://github.com/microsoft/vcpkg/tree/master/ports/usearch).
|
|
589
|
+
- [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.125).
|
|
590
|
+
- [x] Hugging Face: Sentence-Transformers [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch), [quantization benchmarks](https://huggingface.co/blog/embedding-quantization).
|
|
581
591
|
- [x] GPTCache: [Python](https://github.com/zilliztech/GPTCache/releases/tag/0.1.29).
|
|
582
|
-
- [x]
|
|
592
|
+
- [x] MemMachine: [Python](https://github.com/MemMachine/MemMachine/blob/main/packages/server/src/memmachine_server/common/vector_store/vector_search_engine/usearch_engine.py).
|
|
583
593
|
- [x] Pathway: [Rust](https://github.com/pathwaycom/pathway).
|
|
584
594
|
- [x] Vald: [GoLang](https://github.com/vdaas/vald).
|
|
585
|
-
|
|
595
|
+
|
|
596
|
+
### Applications & Products
|
|
597
|
+
|
|
598
|
+
- [x] Arm MCP: [Python](https://github.com/arm/mcp/blob/main/arm_kb_search/loaders.py).
|
|
599
|
+
- [x] GPT4All: [C++](https://github.com/nomic-ai/gpt4all/blob/main/gpt4all-chat/src/database.cpp).
|
|
600
|
+
- [x] Ente: [Rust](https://github.com/ente-io/ente/blob/main/rust/crates/photos/src/ml/vector_db.rs), [post](https://ente.com/blog/vector-db/).
|
|
601
|
+
- [x] Tracy profiler: [C++](https://github.com/wolfpld/tracy/blob/master/profiler/src/profiler/TracyLlmEmbeddings.cpp), behind the embeddings index of its LLM assistant.
|
|
602
|
+
- [x] Copilot for Xcode by Intitni: [Swift](https://github.com/intitni/CopilotForXcode/blob/main/Tool/Sources/USearchIndex/UsearchIndex.swift).
|
|
603
|
+
- [x] LLM for Unity: [C#](https://github.com/undreamai/LLMUnity/tree/main/Runtime/RAG/usearch), [docs](https://undream.ai/LLMUnity/).
|
|
604
|
+
- [x] Music Assistant: [Python](https://github.com/music-assistant/server/blob/dev/music_assistant/providers/sonic_similarity/vectors.py), [docs](https://www.music-assistant.io/plugins/sonic-similarity/).
|
|
586
605
|
|
|
587
606
|
|
|
588
607
|
## Citations
|
|
@@ -593,7 +612,7 @@ doi = {10.5281/zenodo.7949415},
|
|
|
593
612
|
author = {Vardanian, Ash},
|
|
594
613
|
title = {{USearch by Unum Cloud}},
|
|
595
614
|
url = {https://github.com/unum-cloud/USearch},
|
|
596
|
-
version = {2.26.
|
|
615
|
+
version = {2.26.4},
|
|
597
616
|
year = {2026},
|
|
598
617
|
}
|
|
599
618
|
```
|
|
@@ -525,20 +525,39 @@ index = Index(ndim=ndim, metric=CompiledMetric(
|
|
|
525
525
|
|
|
526
526
|
## Integrations & Users
|
|
527
527
|
|
|
528
|
+
### Databases & Query Engines
|
|
529
|
+
|
|
528
530
|
- [x] ClickHouse: [C++](https://github.com/ClickHouse/ClickHouse/pull/53447), [docs](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/annindexes#usearch).
|
|
529
531
|
- [x] DuckDB: [post](https://duckdb.org/2024/05/03/vector-similarity-search-vss.html).
|
|
530
532
|
- [x] ScyllaDB: [Rust](https://github.com/scylladb/vector-store), [presentation](https://www.slideshare.net/slideshow/vector-search-with-scylladb-by-szymon-wasik/276571548).
|
|
531
533
|
- [x] TiDB & TiFlash: [C++](https://github.com/pingcap/tiflash), [announcement](https://www.pingcap.com/article/introduce-vector-search-indexes-in-tidb/).
|
|
532
|
-
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc).
|
|
534
|
+
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc), [architecture](https://www.yugabyte.com/blog/yugabytedb-vector-indexing-architecture/), [1B-vector benchmark](https://www.yugabyte.com/blog/benchmarking-1-billion-vectors-in-yugabytedb/).
|
|
533
535
|
- [x] MemGraph: [C++](https://github.com/memgraph/memgraph/blob/784dd8520f65050d033aea8b29446e84e487d091/src/storage/v2/indices/vector_index.cpp), [announcement](https://memgraph.com/blog/simplify-data-retrieval-memgraph-vector-search).
|
|
534
|
-
- [x]
|
|
535
|
-
- [x]
|
|
536
|
-
- [x]
|
|
536
|
+
- [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
|
|
537
|
+
- [x] GreptimeDB: [Rust](https://github.com/GreptimeTeam/greptimedb/blob/main/src/index/src/vector.rs).
|
|
538
|
+
- [x] KurrentDB: [C#](https://github.com/kurrent-io/KurrentDB/blob/master/src/KurrentDB.Kontext/Indexing/USearch/USearchVectorStore.cs), [credits](https://github.com/kurrent-io/KurrentDB/blob/master/NOTICE.md).
|
|
539
|
+
- [x] Chroma: [Rust](https://github.com/chroma-core/chroma/blob/main/rust/index/src/usearch.rs), behind their RaBitQ-quantized SPANN index.
|
|
540
|
+
|
|
541
|
+
### AI Frameworks & Memory
|
|
542
|
+
|
|
543
|
+
- [x] Google: [Perch](https://github.com/google-research/perch-hoplite) bioacoustics DB, [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
|
|
544
|
+
- [x] Microsoft: [Semantic Kernel](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and [vcpkg](https://github.com/microsoft/vcpkg/tree/master/ports/usearch).
|
|
545
|
+
- [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.125).
|
|
546
|
+
- [x] Hugging Face: Sentence-Transformers [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch), [quantization benchmarks](https://huggingface.co/blog/embedding-quantization).
|
|
537
547
|
- [x] GPTCache: [Python](https://github.com/zilliztech/GPTCache/releases/tag/0.1.29).
|
|
538
|
-
- [x]
|
|
548
|
+
- [x] MemMachine: [Python](https://github.com/MemMachine/MemMachine/blob/main/packages/server/src/memmachine_server/common/vector_store/vector_search_engine/usearch_engine.py).
|
|
539
549
|
- [x] Pathway: [Rust](https://github.com/pathwaycom/pathway).
|
|
540
550
|
- [x] Vald: [GoLang](https://github.com/vdaas/vald).
|
|
541
|
-
|
|
551
|
+
|
|
552
|
+
### Applications & Products
|
|
553
|
+
|
|
554
|
+
- [x] Arm MCP: [Python](https://github.com/arm/mcp/blob/main/arm_kb_search/loaders.py).
|
|
555
|
+
- [x] GPT4All: [C++](https://github.com/nomic-ai/gpt4all/blob/main/gpt4all-chat/src/database.cpp).
|
|
556
|
+
- [x] Ente: [Rust](https://github.com/ente-io/ente/blob/main/rust/crates/photos/src/ml/vector_db.rs), [post](https://ente.com/blog/vector-db/).
|
|
557
|
+
- [x] Tracy profiler: [C++](https://github.com/wolfpld/tracy/blob/master/profiler/src/profiler/TracyLlmEmbeddings.cpp), behind the embeddings index of its LLM assistant.
|
|
558
|
+
- [x] Copilot for Xcode by Intitni: [Swift](https://github.com/intitni/CopilotForXcode/blob/main/Tool/Sources/USearchIndex/UsearchIndex.swift).
|
|
559
|
+
- [x] LLM for Unity: [C#](https://github.com/undreamai/LLMUnity/tree/main/Runtime/RAG/usearch), [docs](https://undream.ai/LLMUnity/).
|
|
560
|
+
- [x] Music Assistant: [Python](https://github.com/music-assistant/server/blob/dev/music_assistant/providers/sonic_similarity/vectors.py), [docs](https://www.music-assistant.io/plugins/sonic-similarity/).
|
|
542
561
|
|
|
543
562
|
|
|
544
563
|
## Citations
|
|
@@ -549,7 +568,7 @@ doi = {10.5281/zenodo.7949415},
|
|
|
549
568
|
author = {Vardanian, Ash},
|
|
550
569
|
title = {{USearch by Unum Cloud}},
|
|
551
570
|
url = {https://github.com/unum-cloud/USearch},
|
|
552
|
-
version = {2.26.
|
|
571
|
+
version = {2.26.4},
|
|
553
572
|
year = {2026},
|
|
554
573
|
}
|
|
555
574
|
```
|
usearch-2.26.4/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.26.4
|
|
@@ -1923,6 +1923,9 @@ class index_dense_gt {
|
|
|
1923
1923
|
std::forward<executor_at>(executor), std::forward<progress_at>(progress));
|
|
1924
1924
|
vectors_lookup_ = std::move(new_vectors_lookup);
|
|
1925
1925
|
vectors_tape_allocator_ = std::move(new_vectors_allocator);
|
|
1926
|
+
|
|
1927
|
+
// Slots were permuted, so the key-to-slot lookup and the free-slot list are stale
|
|
1928
|
+
reindex_keys_();
|
|
1926
1929
|
return result;
|
|
1927
1930
|
}
|
|
1928
1931
|
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
#include <float.h> // `_Float16`
|
|
4
4
|
#include <stdlib.h> // `aligned_alloc`
|
|
5
5
|
|
|
6
|
-
#include <atomic>
|
|
7
|
-
#include <chrono>
|
|
8
|
-
#include <cstring>
|
|
9
|
-
#include <thread>
|
|
6
|
+
#include <atomic> // `std::atomic`
|
|
7
|
+
#include <chrono> // `std::chrono`
|
|
8
|
+
#include <cstring> // `std::strncmp`
|
|
9
|
+
#include <thread> // `std::thread`
|
|
10
|
+
#include <type_traits> // `std::is_floating_point`
|
|
10
11
|
|
|
11
12
|
#include <usearch/index.hpp> // `expected_gt` and macros
|
|
12
13
|
|
|
@@ -374,10 +375,10 @@ inline expected_gt<scalar_kind_t> scalar_kind_from_name(char const* name, std::s
|
|
|
374
375
|
parsed.result = scalar_kind_t::i8_k;
|
|
375
376
|
else if (str_equals(name, len, "u8"))
|
|
376
377
|
parsed.result = scalar_kind_t::u8_k;
|
|
377
|
-
else if (str_equals(name, len, "b1"))
|
|
378
|
+
else if (str_equals(name, len, "b1") || str_equals(name, len, "b1x8"))
|
|
378
379
|
parsed.result = scalar_kind_t::b1x8_k;
|
|
379
380
|
else
|
|
380
|
-
parsed.failed("Unknown type, choose: f64, f32, bf16, f16, e5m2, e4m3, e3m2, e2m3, i8, u8, b1");
|
|
381
|
+
parsed.failed("Unknown type, choose: f64, f32, bf16, f16, e5m2, e4m3, e3m2, e2m3, i8, u8, b1, b1x8");
|
|
381
382
|
return parsed;
|
|
382
383
|
}
|
|
383
384
|
|
|
@@ -2280,8 +2281,23 @@ template <typename scalar_at = float, typename result_at = scalar_at> struct met
|
|
|
2280
2281
|
|
|
2281
2282
|
inline result_t operator()(scalar_t const* a, scalar_t const* b, std::size_t dim) const noexcept {
|
|
2282
2283
|
result_t ab{}, a2{}, b2{};
|
|
2284
|
+
// OpenMP only accepts `x += expr` as a reduction update, not a comma-expression.
|
|
2285
|
+
// With a function-call cast, GCC leaves `a2` and `b2` at zero and every distance becomes 0.
|
|
2286
|
+
add_products_(a, b, dim, ab, a2, b2, std::is_floating_point<scalar_t>());
|
|
2287
|
+
|
|
2288
|
+
result_t result_if_zero[2][2];
|
|
2289
|
+
result_if_zero[0][0] = 1 - ab / (std::sqrt(a2) * std::sqrt(b2));
|
|
2290
|
+
result_if_zero[0][1] = result_if_zero[1][0] = 1;
|
|
2291
|
+
result_if_zero[1][1] = 0;
|
|
2292
|
+
return result_if_zero[a2 == 0][b2 == 0];
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
private:
|
|
2296
|
+
inline void add_products_(scalar_t const* a, scalar_t const* b, std::size_t dim, result_t& ab, result_t& a2,
|
|
2297
|
+
result_t& b2, std::true_type) const noexcept {
|
|
2298
|
+
result_t product{}, first_squared{}, second_squared{};
|
|
2283
2299
|
#if USEARCH_USE_OPENMP
|
|
2284
|
-
#pragma omp simd reduction(+ :
|
|
2300
|
+
#pragma omp simd reduction(+ : product, first_squared, second_squared)
|
|
2285
2301
|
#elif defined(USEARCH_DEFINED_CLANG)
|
|
2286
2302
|
#pragma clang loop vectorize(enable)
|
|
2287
2303
|
#elif defined(USEARCH_DEFINED_GCC)
|
|
@@ -2290,14 +2306,24 @@ template <typename scalar_at = float, typename result_at = scalar_at> struct met
|
|
|
2290
2306
|
for (std::size_t i = 0; i != dim; ++i) {
|
|
2291
2307
|
result_t ai = static_cast<result_t>(a[i]);
|
|
2292
2308
|
result_t bi = static_cast<result_t>(b[i]);
|
|
2293
|
-
|
|
2309
|
+
product += ai * bi;
|
|
2310
|
+
first_squared += square(ai);
|
|
2311
|
+
second_squared += square(bi);
|
|
2294
2312
|
}
|
|
2313
|
+
ab = product;
|
|
2314
|
+
a2 = first_squared;
|
|
2315
|
+
b2 = second_squared;
|
|
2316
|
+
}
|
|
2295
2317
|
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2318
|
+
inline void add_products_(scalar_t const* a, scalar_t const* b, std::size_t dim, result_t& ab, result_t& a2,
|
|
2319
|
+
result_t& b2, std::false_type) const noexcept {
|
|
2320
|
+
for (std::size_t i = 0; i != dim; ++i) {
|
|
2321
|
+
result_t ai = static_cast<result_t>(a[i]);
|
|
2322
|
+
result_t bi = static_cast<result_t>(b[i]);
|
|
2323
|
+
ab += ai * bi;
|
|
2324
|
+
a2 += square(ai);
|
|
2325
|
+
b2 += square(bi);
|
|
2326
|
+
}
|
|
2301
2327
|
}
|
|
2302
2328
|
};
|
|
2303
2329
|
|
|
@@ -2544,9 +2570,14 @@ struct metric_cos_i8_t {
|
|
|
2544
2570
|
a2 += square(ai);
|
|
2545
2571
|
b2 += square(bi);
|
|
2546
2572
|
}
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2573
|
+
// Same tail as `nk_angular_i8_serial`: a zero dot product is orthogonal, not identical.
|
|
2574
|
+
if (a2 == 0 && b2 == 0)
|
|
2575
|
+
return 0;
|
|
2576
|
+
if (ab == 0)
|
|
2577
|
+
return 1;
|
|
2578
|
+
result_t norms = std::sqrt(static_cast<result_t>(a2)) * std::sqrt(static_cast<result_t>(b2));
|
|
2579
|
+
result_t unclipped = 1 - static_cast<result_t>(ab) / norms;
|
|
2580
|
+
return unclipped < 0 ? 0 : unclipped;
|
|
2550
2581
|
}
|
|
2551
2582
|
};
|
|
2552
2583
|
|
|
@@ -2596,9 +2627,14 @@ struct metric_cos_u8_t {
|
|
|
2596
2627
|
a2 += square(ai);
|
|
2597
2628
|
b2 += square(bi);
|
|
2598
2629
|
}
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2630
|
+
// Same tail as `nk_angular_u8_serial`: a zero dot product is orthogonal, not identical.
|
|
2631
|
+
if (a2 == 0 && b2 == 0)
|
|
2632
|
+
return 0;
|
|
2633
|
+
if (ab == 0)
|
|
2634
|
+
return 1;
|
|
2635
|
+
result_t norms = std::sqrt(static_cast<result_t>(a2)) * std::sqrt(static_cast<result_t>(b2));
|
|
2636
|
+
result_t unclipped = 1 - static_cast<result_t>(ab) / norms;
|
|
2637
|
+
return unclipped < 0 ? 0 : unclipped;
|
|
2602
2638
|
}
|
|
2603
2639
|
};
|
|
2604
2640
|
|
|
@@ -574,7 +574,9 @@ static py::tuple search_many_brute_force( //
|
|
|
574
574
|
if (dataset_kind != queries_kind)
|
|
575
575
|
throw std::invalid_argument("The types of vectors don't match!");
|
|
576
576
|
|
|
577
|
-
std::size_t dimensions =
|
|
577
|
+
std::size_t dimensions = queries_dimensions;
|
|
578
|
+
if (queries_kind == scalar_kind_t::b1x8_k)
|
|
579
|
+
dimensions *= CHAR_BIT;
|
|
578
580
|
metric_t metric = //
|
|
579
581
|
metric_uintptr //
|
|
580
582
|
? metric_t::stateless(dimensions, metric_uintptr, metric_signature, metric_kind, queries_kind)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: usearch
|
|
3
|
-
Version: 2.26.
|
|
3
|
+
Version: 2.26.4
|
|
4
4
|
Summary: Smaller & Faster Single-File Vector Search Engine from Unum
|
|
5
5
|
Home-page: https://github.com/unum-cloud/USearch
|
|
6
6
|
Author: Ash Vardanian
|
|
@@ -569,20 +569,39 @@ index = Index(ndim=ndim, metric=CompiledMetric(
|
|
|
569
569
|
|
|
570
570
|
## Integrations & Users
|
|
571
571
|
|
|
572
|
+
### Databases & Query Engines
|
|
573
|
+
|
|
572
574
|
- [x] ClickHouse: [C++](https://github.com/ClickHouse/ClickHouse/pull/53447), [docs](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/annindexes#usearch).
|
|
573
575
|
- [x] DuckDB: [post](https://duckdb.org/2024/05/03/vector-similarity-search-vss.html).
|
|
574
576
|
- [x] ScyllaDB: [Rust](https://github.com/scylladb/vector-store), [presentation](https://www.slideshare.net/slideshow/vector-search-with-scylladb-by-szymon-wasik/276571548).
|
|
575
577
|
- [x] TiDB & TiFlash: [C++](https://github.com/pingcap/tiflash), [announcement](https://www.pingcap.com/article/introduce-vector-search-indexes-in-tidb/).
|
|
576
|
-
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc).
|
|
578
|
+
- [x] YugaByte: [C++](https://github.com/yugabyte/yugabyte-db/blob/366b9f5e3c4df3a1a17d553db41d6dc50146f488/src/yb/vector_index/usearch_wrapper.cc), [architecture](https://www.yugabyte.com/blog/yugabytedb-vector-indexing-architecture/), [1B-vector benchmark](https://www.yugabyte.com/blog/benchmarking-1-billion-vectors-in-yugabytedb/).
|
|
577
579
|
- [x] MemGraph: [C++](https://github.com/memgraph/memgraph/blob/784dd8520f65050d033aea8b29446e84e487d091/src/storage/v2/indices/vector_index.cpp), [announcement](https://memgraph.com/blog/simplify-data-retrieval-memgraph-vector-search).
|
|
578
|
-
- [x]
|
|
579
|
-
- [x]
|
|
580
|
-
- [x]
|
|
580
|
+
- [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
|
|
581
|
+
- [x] GreptimeDB: [Rust](https://github.com/GreptimeTeam/greptimedb/blob/main/src/index/src/vector.rs).
|
|
582
|
+
- [x] KurrentDB: [C#](https://github.com/kurrent-io/KurrentDB/blob/master/src/KurrentDB.Kontext/Indexing/USearch/USearchVectorStore.cs), [credits](https://github.com/kurrent-io/KurrentDB/blob/master/NOTICE.md).
|
|
583
|
+
- [x] Chroma: [Rust](https://github.com/chroma-core/chroma/blob/main/rust/index/src/usearch.rs), behind their RaBitQ-quantized SPANN index.
|
|
584
|
+
|
|
585
|
+
### AI Frameworks & Memory
|
|
586
|
+
|
|
587
|
+
- [x] Google: [Perch](https://github.com/google-research/perch-hoplite) bioacoustics DB, [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
|
|
588
|
+
- [x] Microsoft: [Semantic Kernel](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and [vcpkg](https://github.com/microsoft/vcpkg/tree/master/ports/usearch).
|
|
589
|
+
- [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.125).
|
|
590
|
+
- [x] Hugging Face: Sentence-Transformers [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch), [quantization benchmarks](https://huggingface.co/blog/embedding-quantization).
|
|
581
591
|
- [x] GPTCache: [Python](https://github.com/zilliztech/GPTCache/releases/tag/0.1.29).
|
|
582
|
-
- [x]
|
|
592
|
+
- [x] MemMachine: [Python](https://github.com/MemMachine/MemMachine/blob/main/packages/server/src/memmachine_server/common/vector_store/vector_search_engine/usearch_engine.py).
|
|
583
593
|
- [x] Pathway: [Rust](https://github.com/pathwaycom/pathway).
|
|
584
594
|
- [x] Vald: [GoLang](https://github.com/vdaas/vald).
|
|
585
|
-
|
|
595
|
+
|
|
596
|
+
### Applications & Products
|
|
597
|
+
|
|
598
|
+
- [x] Arm MCP: [Python](https://github.com/arm/mcp/blob/main/arm_kb_search/loaders.py).
|
|
599
|
+
- [x] GPT4All: [C++](https://github.com/nomic-ai/gpt4all/blob/main/gpt4all-chat/src/database.cpp).
|
|
600
|
+
- [x] Ente: [Rust](https://github.com/ente-io/ente/blob/main/rust/crates/photos/src/ml/vector_db.rs), [post](https://ente.com/blog/vector-db/).
|
|
601
|
+
- [x] Tracy profiler: [C++](https://github.com/wolfpld/tracy/blob/master/profiler/src/profiler/TracyLlmEmbeddings.cpp), behind the embeddings index of its LLM assistant.
|
|
602
|
+
- [x] Copilot for Xcode by Intitni: [Swift](https://github.com/intitni/CopilotForXcode/blob/main/Tool/Sources/USearchIndex/UsearchIndex.swift).
|
|
603
|
+
- [x] LLM for Unity: [C#](https://github.com/undreamai/LLMUnity/tree/main/Runtime/RAG/usearch), [docs](https://undream.ai/LLMUnity/).
|
|
604
|
+
- [x] Music Assistant: [Python](https://github.com/music-assistant/server/blob/dev/music_assistant/providers/sonic_similarity/vectors.py), [docs](https://www.music-assistant.io/plugins/sonic-similarity/).
|
|
586
605
|
|
|
587
606
|
|
|
588
607
|
## Citations
|
|
@@ -593,7 +612,7 @@ doi = {10.5281/zenodo.7949415},
|
|
|
593
612
|
author = {Vardanian, Ash},
|
|
594
613
|
title = {{USearch by Unum Cloud}},
|
|
595
614
|
url = {https://github.com/unum-cloud/USearch},
|
|
596
|
-
version = {2.26.
|
|
615
|
+
version = {2.26.4},
|
|
597
616
|
year = {2026},
|
|
598
617
|
}
|
|
599
618
|
```
|
usearch-2.26.2/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.26.2
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|