deglib 0.2.1__tar.gz → 0.2.2__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 (87) hide show
  1. {deglib-0.2.1/src/deglib.egg-info → deglib-0.2.2}/PKG-INFO +8 -6
  2. {deglib-0.2.1 → deglib-0.2.2}/README.md +7 -5
  3. deglib-0.2.2/lib/deglib/include/deglib/optimization/quantization/scalar_quantize.h +743 -0
  4. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization.h +77 -16
  5. {deglib-0.2.1 → deglib-0.2.2}/src/deg_cpp/deglib_cpp.cpp +389 -71
  6. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/__init__.py +1 -1
  7. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/optimization.py +17 -33
  8. {deglib-0.2.1 → deglib-0.2.2/src/deglib.egg-info}/PKG-INFO +8 -6
  9. {deglib-0.2.1 → deglib-0.2.2}/src/deglib.egg-info/SOURCES.txt +1 -0
  10. deglib-0.2.2/tests/test_scalar_quantizer.py +222 -0
  11. deglib-0.2.1/lib/deglib/include/deglib/optimization/quantization/scalar_quantize.h +0 -422
  12. {deglib-0.2.1 → deglib-0.2.2}/CMakeLists.txt +0 -0
  13. {deglib-0.2.1 → deglib-0.2.2}/LICENSE +0 -0
  14. {deglib-0.2.1 → deglib-0.2.2}/MANIFEST.in +0 -0
  15. {deglib-0.2.1 → deglib-0.2.2}/lib/CMakeLists.txt +0 -0
  16. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/CMakeLists.txt +0 -0
  17. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/benchmark.h +0 -0
  18. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/build.h +0 -0
  19. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/dataset.h +0 -0
  20. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/file_io.h +0 -0
  21. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/logging.h +0 -0
  22. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/repository.h +0 -0
  23. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/stats.h +0 -0
  24. {deglib-0.2.1 → deglib-0.2.2}/lib/bench/include/stopwatch.h +0 -0
  25. {deglib-0.2.1 → deglib-0.2.2}/lib/cmake_modules/DetectCPUFeatures.cmake +0 -0
  26. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/CMakeLists.txt +0 -0
  27. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/analysis.h +0 -0
  28. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/builder.h +0 -0
  29. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/concurrent.h +0 -0
  30. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/config.h +0 -0
  31. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/deglib.h +0 -0
  32. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/evp_ip.h +0 -0
  33. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp16.h +0 -0
  34. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp16_ip.h +0 -0
  35. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp16_l2.h +0 -0
  36. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp32.h +0 -0
  37. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp32_ip.h +0 -0
  38. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/fp32_l2.h +0 -0
  39. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/int8.h +0 -0
  40. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/int8_ip.h +0 -0
  41. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/int8_l2.h +0 -0
  42. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/residual_mode.h +0 -0
  43. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/uint8.h +0 -0
  44. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/uint8_ip.h +0 -0
  45. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distance/uint8_l2.h +0 -0
  46. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/distances.h +0 -0
  47. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/filter.h +0 -0
  48. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/dynamic_graph.h +0 -0
  49. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/internal_graph.h +0 -0
  50. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/intrusive_list.h +0 -0
  51. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/mutable_graph.h +0 -0
  52. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/readonly_graph.h +0 -0
  53. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/sizebounded_graph.h +0 -0
  54. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph/visited_list_pool.h +0 -0
  55. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/graph.h +0 -0
  56. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/flas/fast_linear_assignment_sorter.h +0 -0
  57. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/flas/fast_linear_assignment_sorter_mt.h +0 -0
  58. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/flas/junker_volgenant_solver.h +0 -0
  59. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/pruning.h +0 -0
  60. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/quantization/evp_quantize.h +0 -0
  61. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/optimization/transform.h +0 -0
  62. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/search.h +0 -0
  63. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/utils/cpu.h +0 -0
  64. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/utils/memory.h +0 -0
  65. {deglib-0.2.1 → deglib-0.2.2}/lib/deglib/include/deglib/utils/random.h +0 -0
  66. {deglib-0.2.1 → deglib-0.2.2}/lib/test/CMakeLists.txt +0 -0
  67. {deglib-0.2.1 → deglib-0.2.2}/lib/test/src/common/test_helpers.h +0 -0
  68. {deglib-0.2.1 → deglib-0.2.2}/pyproject.toml +0 -0
  69. {deglib-0.2.1 → deglib-0.2.2}/setup.cfg +0 -0
  70. {deglib-0.2.1 → deglib-0.2.2}/setup.py +0 -0
  71. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/analysis.py +0 -0
  72. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/builder.py +0 -0
  73. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/cpu.py +0 -0
  74. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/distances.py +0 -0
  75. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/graph.py +0 -0
  76. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/search.py +0 -0
  77. {deglib-0.2.1 → deglib-0.2.2}/src/deglib/utils.py +0 -0
  78. {deglib-0.2.1 → deglib-0.2.2}/src/deglib.egg-info/dependency_links.txt +0 -0
  79. {deglib-0.2.1 → deglib-0.2.2}/src/deglib.egg-info/requires.txt +0 -0
  80. {deglib-0.2.1 → deglib-0.2.2}/src/deglib.egg-info/top_level.txt +0 -0
  81. {deglib-0.2.1 → deglib-0.2.2}/tests/test_analysis.py +0 -0
  82. {deglib-0.2.1 → deglib-0.2.2}/tests/test_builder.py +0 -0
  83. {deglib-0.2.1 → deglib-0.2.2}/tests/test_filter.py +0 -0
  84. {deglib-0.2.1 → deglib-0.2.2}/tests/test_graph.py +0 -0
  85. {deglib-0.2.1 → deglib-0.2.2}/tests/test_presort.py +0 -0
  86. {deglib-0.2.1 → deglib-0.2.2}/tests/test_rerank.py +0 -0
  87. {deglib-0.2.1 → deglib-0.2.2}/tests/test_transform.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deglib
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Python bindings for the Dynamic Exploration Graph library by Nico Hezel
5
5
  Author: Nico Hezel
6
6
  Author-email: Bruno Schilling <bruno.schilling@htw-berlin.de>
@@ -221,7 +221,7 @@ A complete end-to-end pipeline demonstrating **FLAS pre-sorting**, **multithread
221
221
  ```python
222
222
  import numpy as np
223
223
  import deglib
224
- from deglib.optimization import presort, prune_non_rng_edges, quantize_int8
224
+ from deglib.optimization import presort, prune_non_rng_edges, ScalarQuantizerInt8
225
225
  from deglib.search import rerank
226
226
 
227
227
  num_vectors, dims = 10_000, 128
@@ -244,15 +244,17 @@ graph = deglib.builder.build_from_data(
244
244
  pruned_count = prune_non_rng_edges(graph)
245
245
  print(f"Pruned {pruned_count} redundant edges.")
246
246
 
247
- # 4. Quantize dataset to Int8 for memory reduction and ultra-fast quantized graph search
248
- quant_int8_data = quantize_int8(sorted_data)
247
+ # 4. Fit Int8 quantizer on base dataset and quantize features for memory reduction and ultra-fast search
248
+ quantizer = ScalarQuantizerInt8()
249
+ quantizer.fit(sorted_data)
250
+ quant_int8_data = quantizer.quantize(sorted_data)
249
251
  int8_space = deglib.FloatSpace.create(dims, deglib.Metric.Int8_InnerProduct)
250
252
 
251
253
  # 5. Convert mutable graph to a compact ReadOnlyGraph equipped with the quantized features
252
254
  readonly_graph = graph.to_readonly(feature_space=int8_space, custom_features=quant_int8_data)
253
255
 
254
- # 6. Search candidates on the quantized ReadOnlyGraph (fetch 2x candidates for reranking)
255
- quant_query = quantize_int8(query)
256
+ # 6. Quantize query using the EXACT SAME calibrated scale, then search
257
+ quant_query = quantizer.quantize(query)
256
258
  candidate_indices = readonly_graph.search(quant_query, k=20, eps=0.1, return_distances=False)
257
259
 
258
260
  # 7. Exact distance reranking of top candidates on original float32 data
@@ -193,7 +193,7 @@ A complete end-to-end pipeline demonstrating **FLAS pre-sorting**, **multithread
193
193
  ```python
194
194
  import numpy as np
195
195
  import deglib
196
- from deglib.optimization import presort, prune_non_rng_edges, quantize_int8
196
+ from deglib.optimization import presort, prune_non_rng_edges, ScalarQuantizerInt8
197
197
  from deglib.search import rerank
198
198
 
199
199
  num_vectors, dims = 10_000, 128
@@ -216,15 +216,17 @@ graph = deglib.builder.build_from_data(
216
216
  pruned_count = prune_non_rng_edges(graph)
217
217
  print(f"Pruned {pruned_count} redundant edges.")
218
218
 
219
- # 4. Quantize dataset to Int8 for memory reduction and ultra-fast quantized graph search
220
- quant_int8_data = quantize_int8(sorted_data)
219
+ # 4. Fit Int8 quantizer on base dataset and quantize features for memory reduction and ultra-fast search
220
+ quantizer = ScalarQuantizerInt8()
221
+ quantizer.fit(sorted_data)
222
+ quant_int8_data = quantizer.quantize(sorted_data)
221
223
  int8_space = deglib.FloatSpace.create(dims, deglib.Metric.Int8_InnerProduct)
222
224
 
223
225
  # 5. Convert mutable graph to a compact ReadOnlyGraph equipped with the quantized features
224
226
  readonly_graph = graph.to_readonly(feature_space=int8_space, custom_features=quant_int8_data)
225
227
 
226
- # 6. Search candidates on the quantized ReadOnlyGraph (fetch 2x candidates for reranking)
227
- quant_query = quantize_int8(query)
228
+ # 6. Quantize query using the EXACT SAME calibrated scale, then search
229
+ quant_query = quantizer.quantize(query)
228
230
  candidate_indices = readonly_graph.search(quant_query, k=20, eps=0.1, return_distances=False)
229
231
 
230
232
  # 7. Exact distance reranking of top candidates on original float32 data