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.
Files changed (253) hide show
  1. {usearch-2.26.2/usearch.egg-info → usearch-2.26.4}/PKG-INFO +27 -8
  2. {usearch-2.26.2 → usearch-2.26.4}/README.md +26 -7
  3. usearch-2.26.4/VERSION +1 -0
  4. {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index.hpp +1 -1
  5. {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index_dense.hpp +3 -0
  6. {usearch-2.26.2 → usearch-2.26.4}/include/usearch/index_plugins.hpp +55 -19
  7. {usearch-2.26.2 → usearch-2.26.4}/python/lib.cpp +3 -1
  8. {usearch-2.26.2 → usearch-2.26.4/usearch.egg-info}/PKG-INFO +27 -8
  9. usearch-2.26.2/VERSION +0 -1
  10. {usearch-2.26.2 → usearch-2.26.4}/LICENSE +0 -0
  11. {usearch-2.26.2 → usearch-2.26.4}/MANIFEST.in +0 -0
  12. {usearch-2.26.2 → usearch-2.26.4}/numkong/LICENSE +0 -0
  13. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention/sapphireamx.h +0 -0
  14. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention/sme.h +0 -0
  15. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/attention.h +0 -0
  16. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/capabilities.h +0 -0
  17. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/diamond.h +0 -0
  18. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/haswell.h +0 -0
  19. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/icelake.h +0 -0
  20. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/loongsonasx.h +0 -0
  21. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/neon.h +0 -0
  22. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/powervsx.h +0 -0
  23. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/rvv.h +0 -0
  24. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/sapphire.h +0 -0
  25. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/serial.h +0 -0
  26. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/skylake.h +0 -0
  27. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast/v128relaxed.h +0 -0
  28. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/cast.h +0 -0
  29. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/genoa.h +0 -0
  30. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/haswell.h +0 -0
  31. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/neon.h +0 -0
  32. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/neonbfdot.h +0 -0
  33. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/rvv.h +0 -0
  34. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/serial.h +0 -0
  35. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/skylake.h +0 -0
  36. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved/smef64.h +0 -0
  37. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/curved.h +0 -0
  38. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/alder.h +0 -0
  39. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/diamond.h +0 -0
  40. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/genoa.h +0 -0
  41. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/haswell.h +0 -0
  42. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/icelake.h +0 -0
  43. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/loongsonasx.h +0 -0
  44. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neon.h +0 -0
  45. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonbfdot.h +0 -0
  46. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonfhm.h +0 -0
  47. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonfp8.h +0 -0
  48. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/neonsdot.h +0 -0
  49. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/powervsx.h +0 -0
  50. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvv.h +0 -0
  51. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvbb.h +0 -0
  52. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvbf16.h +0 -0
  53. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/rvvhalf.h +0 -0
  54. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sapphire.h +0 -0
  55. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/serial.h +0 -0
  56. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sierra.h +0 -0
  57. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/skylake.h +0 -0
  58. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/sve.h +0 -0
  59. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svebfdot.h +0 -0
  60. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svehalf.h +0 -0
  61. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/svesdot.h +0 -0
  62. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot/v128relaxed.h +0 -0
  63. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dot.h +0 -0
  64. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/alder.h +0 -0
  65. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/diamond.h +0 -0
  66. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/genoa.h +0 -0
  67. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/graniteamx.h +0 -0
  68. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/haswell.h +0 -0
  69. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/icelake.h +0 -0
  70. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/loongsonasx.h +0 -0
  71. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neon.h +0 -0
  72. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonbfdot.h +0 -0
  73. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonfhm.h +0 -0
  74. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonfp8.h +0 -0
  75. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/neonsdot.h +0 -0
  76. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/powervsx.h +0 -0
  77. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/rvv.h +0 -0
  78. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sapphireamx.h +0 -0
  79. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/serial.h +0 -0
  80. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sierra.h +0 -0
  81. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/skylake.h +0 -0
  82. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/sme.h +0 -0
  83. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smebi32.h +0 -0
  84. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smef64.h +0 -0
  85. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/smehalf.h +0 -0
  86. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots/v128relaxed.h +0 -0
  87. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/dots.h +0 -0
  88. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/haswell.h +0 -0
  89. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/icelake.h +0 -0
  90. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neon.h +0 -0
  91. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neonbfdot.h +0 -0
  92. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/neonhalf.h +0 -0
  93. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/rvv.h +0 -0
  94. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/sapphire.h +0 -0
  95. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/serial.h +0 -0
  96. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/skylake.h +0 -0
  97. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each/v128relaxed.h +0 -0
  98. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/each.h +0 -0
  99. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/haswell.h +0 -0
  100. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/neon.h +0 -0
  101. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/rvv.h +0 -0
  102. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/serial.h +0 -0
  103. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/skylake.h +0 -0
  104. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial/v128relaxed.h +0 -0
  105. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/geospatial.h +0 -0
  106. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/alder.h +0 -0
  107. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/genoa.h +0 -0
  108. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/haswell.h +0 -0
  109. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/icelake.h +0 -0
  110. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/neonsdot.h +0 -0
  111. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/sapphireamx.h +0 -0
  112. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/serial.h +0 -0
  113. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/sme.h +0 -0
  114. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim/v128relaxed.h +0 -0
  115. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/maxsim.h +0 -0
  116. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/genoa.h +0 -0
  117. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/haswell.h +0 -0
  118. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neon.h +0 -0
  119. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neonbfdot.h +0 -0
  120. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/neonfhm.h +0 -0
  121. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/rvv.h +0 -0
  122. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/serial.h +0 -0
  123. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/skylake.h +0 -0
  124. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh/v128relaxed.h +0 -0
  125. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/mesh.h +0 -0
  126. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/numkong.h +0 -0
  127. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/haswell.h +0 -0
  128. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/neon.h +0 -0
  129. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/rvv.h +0 -0
  130. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/serial.h +0 -0
  131. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability/skylake.h +0 -0
  132. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/probability.h +0 -0
  133. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/random.h +0 -0
  134. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/alder.h +0 -0
  135. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/genoa.h +0 -0
  136. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/haswell.h +0 -0
  137. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/icelake.h +0 -0
  138. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neon.h +0 -0
  139. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonbfdot.h +0 -0
  140. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonfhm.h +0 -0
  141. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/neonsdot.h +0 -0
  142. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/rvv.h +0 -0
  143. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/serial.h +0 -0
  144. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/sierra.h +0 -0
  145. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/skylake.h +0 -0
  146. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/sve.h +0 -0
  147. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce/v128relaxed.h +0 -0
  148. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/reduce.h +0 -0
  149. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/haswell.h +0 -0
  150. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/loongsonasx.h +0 -0
  151. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/neon.h +0 -0
  152. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/neonhalf.h +0 -0
  153. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/powervsx.h +0 -0
  154. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/rvv.h +0 -0
  155. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/sapphire.h +0 -0
  156. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/serial.h +0 -0
  157. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar/v128relaxed.h +0 -0
  158. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/scalar.h +0 -0
  159. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/haswell.h +0 -0
  160. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/icelake.h +0 -0
  161. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/loongsonasx.h +0 -0
  162. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/neon.h +0 -0
  163. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/powervsx.h +0 -0
  164. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/rvv.h +0 -0
  165. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/rvvbb.h +0 -0
  166. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/serial.h +0 -0
  167. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/sve.h +0 -0
  168. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set/v128relaxed.h +0 -0
  169. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/set.h +0 -0
  170. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/haswell.h +0 -0
  171. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/icelake.h +0 -0
  172. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/loongsonasx.h +0 -0
  173. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/neon.h +0 -0
  174. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/powervsx.h +0 -0
  175. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/serial.h +0 -0
  176. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/smebi32.h +0 -0
  177. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets/v128relaxed.h +0 -0
  178. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sets.h +0 -0
  179. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/icelake.h +0 -0
  180. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/neon.h +0 -0
  181. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/serial.h +0 -0
  182. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/sve2.h +0 -0
  183. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse/turin.h +0 -0
  184. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/sparse.h +0 -0
  185. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/alder.h +0 -0
  186. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/diamond.h +0 -0
  187. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/genoa.h +0 -0
  188. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/haswell.h +0 -0
  189. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/icelake.h +0 -0
  190. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/loongsonasx.h +0 -0
  191. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neon.h +0 -0
  192. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonbfdot.h +0 -0
  193. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonfp8.h +0 -0
  194. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/neonsdot.h +0 -0
  195. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/powervsx.h +0 -0
  196. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvv.h +0 -0
  197. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvvbf16.h +0 -0
  198. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/rvvhalf.h +0 -0
  199. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/serial.h +0 -0
  200. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/sierra.h +0 -0
  201. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/skylake.h +0 -0
  202. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/sve.h +0 -0
  203. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svebfdot.h +0 -0
  204. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svehalf.h +0 -0
  205. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/svesdot.h +0 -0
  206. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial/v128relaxed.h +0 -0
  207. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatial.h +0 -0
  208. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/alder.h +0 -0
  209. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/diamond.h +0 -0
  210. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/genoa.h +0 -0
  211. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/graniteamx.h +0 -0
  212. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/haswell.h +0 -0
  213. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/icelake.h +0 -0
  214. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/loongsonasx.h +0 -0
  215. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neon.h +0 -0
  216. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonbfdot.h +0 -0
  217. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonfhm.h +0 -0
  218. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonfp8.h +0 -0
  219. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/neonsdot.h +0 -0
  220. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/powervsx.h +0 -0
  221. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/rvv.h +0 -0
  222. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sapphireamx.h +0 -0
  223. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/serial.h +0 -0
  224. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sierra.h +0 -0
  225. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/skylake.h +0 -0
  226. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/sme.h +0 -0
  227. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/smef64.h +0 -0
  228. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials/v128relaxed.h +0 -0
  229. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/spatials.h +0 -0
  230. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/haswell.h +0 -0
  231. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/neon.h +0 -0
  232. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/rvv.h +0 -0
  233. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/serial.h +0 -0
  234. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/skylake.h +0 -0
  235. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry/v128relaxed.h +0 -0
  236. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/trigonometry.h +0 -0
  237. {usearch-2.26.2 → usearch-2.26.4}/numkong/include/numkong/types.h +0 -0
  238. {usearch-2.26.2 → usearch-2.26.4}/pyproject.toml +0 -0
  239. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/__init__.py +0 -0
  240. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/client.py +0 -0
  241. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/compiled.pyi +0 -0
  242. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/eval.py +0 -0
  243. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/index.py +0 -0
  244. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/io.py +0 -0
  245. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/numba.py +0 -0
  246. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/py.typed +0 -0
  247. {usearch-2.26.2 → usearch-2.26.4}/python/usearch/server.py +0 -0
  248. {usearch-2.26.2 → usearch-2.26.4}/setup.cfg +0 -0
  249. {usearch-2.26.2 → usearch-2.26.4}/setup.py +0 -0
  250. {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/SOURCES.txt +0 -0
  251. {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/dependency_links.txt +0 -0
  252. {usearch-2.26.2 → usearch-2.26.4}/usearch.egg-info/requires.txt +0 -0
  253. {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.2
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] Google: [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
579
- - [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/hwchase17/langchainjs/releases/tag/0.0.125).
580
- - [x] Microsoft Semantic Kernel: [Python](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and C#.
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] Sentence-Transformers: Python [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch).
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
- - [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
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.2},
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] Google: [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
535
- - [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/hwchase17/langchainjs/releases/tag/0.0.125).
536
- - [x] Microsoft Semantic Kernel: [Python](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and C#.
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] Sentence-Transformers: Python [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch).
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
- - [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
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.2},
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
@@ -9,7 +9,7 @@
9
9
 
10
10
  #define USEARCH_VERSION_MAJOR 2
11
11
  #define USEARCH_VERSION_MINOR 26
12
- #define USEARCH_VERSION_PATCH 2
12
+ #define USEARCH_VERSION_PATCH 4
13
13
 
14
14
  // Inferring C++ version
15
15
  // https://stackoverflow.com/a/61552074
@@ -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> // `std::atomic`
7
- #include <chrono> // `std::chrono`
8
- #include <cstring> // `std::strncmp`
9
- #include <thread> // `std::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(+ : ab, a2, b2)
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
- ab += ai * bi, a2 += square(ai), b2 += square(bi);
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
- result_t result_if_zero[2][2];
2297
- result_if_zero[0][0] = 1 - ab / (std::sqrt(a2) * std::sqrt(b2));
2298
- result_if_zero[0][1] = result_if_zero[1][0] = 1;
2299
- result_if_zero[1][1] = 0;
2300
- return result_if_zero[a2 == 0][b2 == 0];
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
- result_t a2f = std::sqrt(static_cast<result_t>(a2));
2548
- result_t b2f = std::sqrt(static_cast<result_t>(b2));
2549
- return (ab != 0) ? (1.f - ab / (a2f * b2f)) : 0;
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
- result_t a2f = std::sqrt(static_cast<result_t>(a2));
2600
- result_t b2f = std::sqrt(static_cast<result_t>(b2));
2601
- return (ab != 0) ? (1.f - ab / (a2f * b2f)) : 0;
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 = static_cast<std::size_t>(queries_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.2
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] Google: [UniSim](https://github.com/google/unisim), [RetSim](https://arxiv.org/abs/2311.17264) paper.
579
- - [x] LangChain: [Python](https://github.com/langchain-ai/langchain/releases/tag/v0.0.257) and [JavaScript](https://github.com/hwchase17/langchainjs/releases/tag/0.0.125).
580
- - [x] Microsoft Semantic Kernel: [Python](https://github.com/microsoft/semantic-kernel/releases/tag/python-0.3.9.dev) and C#.
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] Sentence-Transformers: Python [docs](https://www.sbert.net/docs/package_reference/quantization.html#sentence_transformers.quantization.semantic_search_usearch).
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
- - [x] MatrixOne: [GoLang](https://github.com/matrixorigin/matrixone).
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.2},
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