nidx-binding 6.9.1.post600__tar.gz → 6.9.1.post603__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 (263) hide show
  1. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/PKG-INFO +1 -1
  2. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/nidx.proto +15 -1
  3. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/nodewriter.proto +1 -0
  4. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/pyproject.toml +1 -1
  5. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/src/lib.rs +1 -0
  6. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v1.rs +1 -1
  7. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v2/paragraph_store.rs +1 -1
  8. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v2/quant_vector_store.rs +7 -3
  9. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v2/vector_store.rs +1 -1
  10. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store.rs +1 -1
  11. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/inverted_index/fst_index.rs +10 -5
  12. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/inverted_index/map.rs +9 -4
  13. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/inverted_index.rs +11 -4
  14. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/segment.rs +24 -9
  15. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/pyproject.toml +1 -1
  16. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/api/grpc.rs +6 -2
  17. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.config/nextest.toml +0 -0
  18. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
  19. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
  20. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
  21. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
  22. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
  23. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
  24. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
  25. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
  26. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
  27. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
  28. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
  29. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
  30. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
  31. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
  32. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
  33. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
  34. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
  35. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
  36. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
  37. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
  38. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
  39. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
  40. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
  41. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
  42. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
  43. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
  44. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-8d33717587c6ee8f5fc339a80b1212a73d6c03e45856b1d55457fc8074709dd0.json +0 -0
  45. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
  46. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
  47. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
  48. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
  49. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
  50. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
  51. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
  52. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-a60ec2f66f1e7b84189e5b089f2087a29ff6a64326a3743dea935bbc58ee77fa.json +0 -0
  53. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
  54. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
  55. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
  56. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
  57. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
  58. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
  59. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
  60. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
  61. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
  62. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
  63. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
  64. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
  65. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
  66. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
  67. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
  68. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
  69. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
  70. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
  71. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
  72. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
  73. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
  74. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
  75. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
  76. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
  77. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/Cargo.lock +0 -0
  78. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/Cargo.toml +0 -0
  79. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/README.md +0 -0
  80. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/migrations/20241007163501_initial.sql +0 -0
  81. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/migrations/20241211120039_merge_job_priority.sql +0 -0
  82. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/migrations/20241211121159_basic_indexes.sql +0 -0
  83. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/migrations/20241212151105_check_segment_records.sql +0 -0
  84. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/migrations/20250110145554_in_flight_messages.sql +0 -0
  85. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_binding/Cargo.toml +0 -0
  86. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_binding/src/lib.rs +0 -0
  87. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/Cargo.toml +0 -0
  88. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/fuzzy_query.rs +0 -0
  89. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/lib.rs +0 -0
  90. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_io.rs +0 -0
  91. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_parser/fuzzy_parser.rs +0 -0
  92. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_parser/keyword_parser.rs +0 -0
  93. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_parser/stop_words.rs +0 -0
  94. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_parser/tokenizer.rs +0 -0
  95. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/query_parser.rs +0 -0
  96. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/reader.rs +0 -0
  97. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/request_types.rs +0 -0
  98. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/resource_indexer.rs +0 -0
  99. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/schema.rs +0 -0
  100. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/search_query.rs +0 -0
  101. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/search_response.rs +0 -0
  102. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/src/set_query.rs +0 -0
  103. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/README.md +0 -0
  104. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ar.json +0 -0
  105. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/az.json +0 -0
  106. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/bn.json +0 -0
  107. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ca.json +0 -0
  108. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ch.json +0 -0
  109. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/da.json +0 -0
  110. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/de.json +0 -0
  111. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/el.json +0 -0
  112. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/en.json +0 -0
  113. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/es.json +0 -0
  114. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/eu.json +0 -0
  115. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/extract.py +0 -0
  116. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/fi.json +0 -0
  117. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/fr.json +0 -0
  118. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/he.json +0 -0
  119. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/hu.json +0 -0
  120. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/id.json +0 -0
  121. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/it.json +0 -0
  122. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/kk.json +0 -0
  123. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ne.json +0 -0
  124. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/nl.json +0 -0
  125. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/no.json +0 -0
  126. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/pt.json +0 -0
  127. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ro.json +0 -0
  128. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/ru.json +0 -0
  129. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/sl.json +0 -0
  130. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/sv.json +0 -0
  131. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/tg.json +0 -0
  132. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/stop_words/tr.json +0 -0
  133. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/tests/common/mod.rs +0 -0
  134. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_paragraph/tests/reader.rs +0 -0
  135. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/Cargo.toml +0 -0
  136. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/build.py +0 -0
  137. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/build.rs +0 -0
  138. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/nodereader.proto +0 -0
  139. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_protos/noderesources.proto +0 -0
  140. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/Cargo.toml +0 -0
  141. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/graph_collector.rs +0 -0
  142. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/graph_query_parser.rs +0 -0
  143. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/io_maps.rs +0 -0
  144. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/lib.rs +0 -0
  145. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/reader.rs +0 -0
  146. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/resource_indexer.rs +0 -0
  147. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/schema.rs +0 -0
  148. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/src/top_unique_n.rs +0 -0
  149. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/tests/common/mod.rs +0 -0
  150. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
  151. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/tests/test_graph_search.rs +0 -0
  152. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_relation/tests/test_writer.rs +0 -0
  153. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tantivy/Cargo.toml +0 -0
  154. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tantivy/src/index_reader.rs +0 -0
  155. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tantivy/src/lib.rs +0 -0
  156. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tantivy/src/utils.rs +0 -0
  157. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tests/Cargo.toml +0 -0
  158. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tests/src/graph.rs +0 -0
  159. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_tests/src/lib.rs +0 -0
  160. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/Cargo.toml +0 -0
  161. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/lib.rs +0 -0
  162. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/prefilter.rs +0 -0
  163. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/query_io.rs +0 -0
  164. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/reader.rs +0 -0
  165. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/request_types.rs +0 -0
  166. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/resource_indexer.rs +0 -0
  167. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/schema.rs +0 -0
  168. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/src/search_query.rs +0 -0
  169. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/tests/common/mod.rs +0 -0
  170. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/tests/test_deletions.rs +0 -0
  171. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/tests/test_flow.rs +0 -0
  172. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/tests/test_search.rs +0 -0
  173. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_text/tests/test_streaming.rs +0 -0
  174. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_types/Cargo.toml +0 -0
  175. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_types/src/lib.rs +0 -0
  176. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_types/src/prefilter.rs +0 -0
  177. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_types/src/query_language.rs +0 -0
  178. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/Cargo.toml +0 -0
  179. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/config.rs +0 -0
  180. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v1/node.rs +0 -0
  181. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v1/store.rs +0 -0
  182. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v1/trie.rs +0 -0
  183. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v1/trie_ram.rs +0 -0
  184. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_store/v2.rs +0 -0
  185. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/data_types.rs +0 -0
  186. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/formula.rs +0 -0
  187. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/hnsw/disk_hnsw.rs +0 -0
  188. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/hnsw/ops_hnsw.rs +0 -0
  189. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/hnsw/params.rs +0 -0
  190. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/hnsw/ram_hnsw.rs +0 -0
  191. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/hnsw.rs +0 -0
  192. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/indexer.rs +0 -0
  193. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/lib.rs +0 -0
  194. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/multivector.rs +0 -0
  195. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/query_io.rs +0 -0
  196. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/request_types.rs +0 -0
  197. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/searcher.rs +0 -0
  198. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/segment/tests.rs +0 -0
  199. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/utils.rs +0 -0
  200. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
  201. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/vector_types/mod.rs +0 -0
  202. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/src/vector_types/rabitq.rs +0 -0
  203. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/tests/common/mod.rs +0 -0
  204. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/tests/test_basic_search.rs +0 -0
  205. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/tests/test_hidden.rs +0 -0
  206. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/nidx_vector/tests/test_maxsim.rs +0 -0
  207. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/api/shards.rs +0 -0
  208. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/api.rs +0 -0
  209. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/control.rs +0 -0
  210. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/errors.rs +0 -0
  211. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/grpc_server.rs +0 -0
  212. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/import_export.rs +0 -0
  213. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/indexer.rs +0 -0
  214. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/lib.rs +0 -0
  215. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/main.rs +0 -0
  216. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/deletion.rs +0 -0
  217. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/index.rs +0 -0
  218. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/index_request.rs +0 -0
  219. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/merge_job.rs +0 -0
  220. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/segment.rs +0 -0
  221. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata/shard.rs +0 -0
  222. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metadata.rs +0 -0
  223. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/metrics.rs +0 -0
  224. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/audit_task.rs +0 -0
  225. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/log_merge.rs +0 -0
  226. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/merge_task.rs +0 -0
  227. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/metrics_task.rs +0 -0
  228. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/purge_tasks.rs +0 -0
  229. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler/vector_merge.rs +0 -0
  230. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/scheduler.rs +0 -0
  231. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/grpc.rs +0 -0
  232. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/index_cache.rs +0 -0
  233. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/query_language.rs +0 -0
  234. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/query_planner.rs +0 -0
  235. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/shard_search.rs +0 -0
  236. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/shard_selector.rs +0 -0
  237. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/shard_suggest.rs +0 -0
  238. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/streams.rs +0 -0
  239. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher/sync.rs +0 -0
  240. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/searcher.rs +0 -0
  241. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/segment_store.rs +0 -0
  242. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/settings.rs +0 -0
  243. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/telemetry/duration_layer.rs +0 -0
  244. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/telemetry/log_format.rs +0 -0
  245. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/telemetry/middleware.rs +0 -0
  246. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/telemetry.rs +0 -0
  247. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/tool.rs +0 -0
  248. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/utilization_tracker.rs +0 -0
  249. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/src/worker.rs +0 -0
  250. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/common/mod.rs +0 -0
  251. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/common/services.rs +0 -0
  252. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_date_range_search.rs +0 -0
  253. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_search_filtering.rs +0 -0
  254. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_search_relations.rs +0 -0
  255. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_search_sorting.rs +0 -0
  256. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_searcher_cluster.rs +0 -0
  257. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_security_search.rs +0 -0
  258. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_shards.rs +0 -0
  259. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_shards_api.rs +0 -0
  260. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_suggest.rs +0 -0
  261. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_synced_searcher.rs +0 -0
  262. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_vector_normalization.rs +0 -0
  263. {nidx_binding-6.9.1.post600 → nidx_binding-6.9.1.post603}/tests/test_vectorsets.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nidx_binding
3
- Version: 6.9.1.post600
3
+ Version: 6.9.1.post603
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -7,10 +7,10 @@ import "nidx_protos/nodewriter.proto";
7
7
 
8
8
  service NidxApi {
9
9
  rpc GetShard(nodereader.GetShardRequest) returns (noderesources.Shard) {}
10
-
11
10
  rpc NewShard(nodewriter.NewShardRequest) returns (noderesources.ShardCreated) {}
12
11
  rpc DeleteShard(noderesources.ShardId) returns (noderesources.ShardId) {}
13
12
  rpc ListShards(noderesources.EmptyQuery) returns (noderesources.ShardIds) {}
13
+ rpc ConfigureShards(ShardsConfig) returns (noderesources.EmptyQuery) {}
14
14
 
15
15
  rpc AddVectorSet(nodewriter.NewVectorSetRequest) returns (nodewriter.OpStatus) {}
16
16
  rpc RemoveVectorSet(noderesources.VectorSetID) returns (nodewriter.OpStatus) {}
@@ -43,3 +43,17 @@ message Notification {
43
43
  }
44
44
  Action action = 6;
45
45
  }
46
+
47
+
48
+ message ShardsConfig {
49
+ repeated ShardConfig configs = 1;
50
+ }
51
+
52
+ message ShardConfig {
53
+ string shard_id = 1;
54
+
55
+ // Pre-warm is a feature to minimize cold starts on searches. It'll keep
56
+ // disk data in memory to avoid IO latency, at expenses of RAM usage. Use
57
+ // with care.
58
+ bool prewarm_enabled = 2;
59
+ }
@@ -64,6 +64,7 @@ message NewShardRequest {
64
64
  bool normalize_vectors = 4 [deprecated = true];
65
65
  VectorIndexConfig config = 5 [deprecated = true];
66
66
  map<string, VectorIndexConfig> vectorsets_configs = 6;
67
+ bool prewarm_enabled = 7;
67
68
 
68
69
  }
69
70
 
@@ -10,7 +10,7 @@ build-backend = "pdm.backend"
10
10
 
11
11
  [project]
12
12
  name = "nidx_protos"
13
- version = "6.9.1.post600"
13
+ version = "6.9.1.post603"
14
14
  license = "AGPL-3.0-or-later"
15
15
  description = "Protobuf definitions for nucliadb/nidx"
16
16
  authors = [{ name = "Nuclia", email = "nucliadb@nuclia.com" }]
@@ -42,6 +42,7 @@ pub mod kb_usage {
42
42
  tonic::include_proto!("kb_usage");
43
43
  }
44
44
 
45
+ pub use nidx::*;
45
46
  pub use nodereader::*;
46
47
  pub use noderesources::*;
47
48
  pub use nodewriter::*;
@@ -98,7 +98,7 @@ impl DataStoreV1 {
98
98
  {
99
99
  let advice = match reason {
100
100
  OpenReason::Create => memmap2::Advice::Sequential,
101
- OpenReason::Search => memmap2::Advice::Random,
101
+ OpenReason::Search { .. } => memmap2::Advice::Random,
102
102
  };
103
103
  nodes.advise(advice)?;
104
104
  }
@@ -90,7 +90,7 @@ impl ParagraphStore {
90
90
  pos.advise(memmap2::Advice::WillNeed)?;
91
91
  let advice = match reason {
92
92
  OpenReason::Create => memmap2::Advice::Sequential,
93
- OpenReason::Search => memmap2::Advice::Random,
93
+ OpenReason::Search { .. } => memmap2::Advice::Random,
94
94
  };
95
95
  data.advise(advice)?;
96
96
  }
@@ -19,7 +19,7 @@
19
19
  //
20
20
 
21
21
  use lazy_static::lazy_static;
22
- use memmap2::Mmap;
22
+ use memmap2::{Mmap, MmapOptions};
23
23
  use std::{
24
24
  fs::File,
25
25
  io::{BufWriter, Write as _},
@@ -41,13 +41,17 @@ pub struct QuantVectorStore {
41
41
 
42
42
  impl QuantVectorStore {
43
43
  pub fn open(path: &Path, vector_len_bytes: usize, reason: &OpenReason) -> std::io::Result<Self> {
44
- let data = unsafe { Mmap::map(&File::open(path.join(FILENAME))?)? };
44
+ let mut options = MmapOptions::new();
45
+ if matches!(reason, OpenReason::Search { prewarm: true }) {
46
+ options.populate();
47
+ }
48
+ let data = unsafe { options.map(&File::open(path.join(FILENAME))?)? };
45
49
 
46
50
  #[cfg(not(target_os = "windows"))]
47
51
  {
48
52
  let advice = match reason {
49
53
  OpenReason::Create => memmap2::Advice::Sequential,
50
- OpenReason::Search => memmap2::Advice::Random,
54
+ OpenReason::Search { .. } => memmap2::Advice::Random,
51
55
  };
52
56
  data.advise(advice)?;
53
57
  }
@@ -60,7 +60,7 @@ impl VectorStore {
60
60
  {
61
61
  let advice = match reason {
62
62
  OpenReason::Create => memmap2::Advice::Sequential,
63
- OpenReason::Search => memmap2::Advice::Random,
63
+ OpenReason::Search { .. } => memmap2::Advice::Random,
64
64
  };
65
65
  data.advise(advice)?;
66
66
  }
@@ -31,7 +31,7 @@ use v2::StoredParagraph;
31
31
  use crate::{ParagraphAddr, VectorAddr, vector_types::rabitq};
32
32
 
33
33
  pub enum OpenReason {
34
- Search,
34
+ Search { prewarm: bool },
35
35
  Create,
36
36
  }
37
37
 
@@ -20,7 +20,7 @@
20
20
  use std::{collections::HashSet, fs::File, io::BufWriter, path::Path, sync::Arc};
21
21
 
22
22
  use fst::{Automaton, IntoStreamer, Map, Streamer};
23
- use memmap2::Mmap;
23
+ use memmap2::{Mmap, MmapOptions};
24
24
 
25
25
  use crate::VectorR;
26
26
 
@@ -59,9 +59,14 @@ pub struct FstIndexReader {
59
59
  }
60
60
 
61
61
  impl FstIndexReader {
62
- pub fn open(path: &Path, map_reader: Arc<InvertedMapReader>) -> VectorR<Self> {
62
+ pub fn open(path: &Path, map_reader: Arc<InvertedMapReader>, prewarm: bool) -> VectorR<Self> {
63
+ let mut options = MmapOptions::new();
64
+ if prewarm {
65
+ options.populate();
66
+ }
67
+
63
68
  Ok(Self {
64
- fst: Map::new(unsafe { Mmap::map(&File::open(path)?)? })?,
69
+ fst: Map::new(unsafe { options.map(&File::open(path)?)? })?,
65
70
  map_reader,
66
71
  })
67
72
  }
@@ -132,8 +137,8 @@ mod tests {
132
137
  map_writer.finish()?;
133
138
 
134
139
  // Check the map has the same contents we initialized
135
- let map_reader = Arc::new(InvertedMapReader::open(tmp_map.path())?);
136
- let reader = FstIndexReader::open(tmp.path(), map_reader)?;
140
+ let map_reader = Arc::new(InvertedMapReader::open(tmp_map.path(), false)?);
141
+ let reader = FstIndexReader::open(tmp.path(), map_reader, false)?;
137
142
 
138
143
  for (key, value) in entries {
139
144
  let indexed = reader.get(&key);
@@ -23,7 +23,7 @@ use std::{
23
23
  path::Path,
24
24
  };
25
25
 
26
- use memmap2::Mmap;
26
+ use memmap2::{Mmap, MmapOptions};
27
27
  use stream_vbyte::{decode::decode, encode::encode, scalar::Scalar};
28
28
 
29
29
  use crate::VectorR;
@@ -67,9 +67,14 @@ pub struct InvertedMapReader {
67
67
  }
68
68
 
69
69
  impl InvertedMapReader {
70
- pub fn open(path: &Path) -> VectorR<Self> {
70
+ pub fn open(path: &Path, prewarm: bool) -> VectorR<Self> {
71
+ let mut options = MmapOptions::new();
72
+ if prewarm {
73
+ options.populate();
74
+ }
75
+
71
76
  Ok(Self {
72
- data: unsafe { Mmap::map(&File::open(path)?)? },
77
+ data: unsafe { options.map(&File::open(path)?)? },
73
78
  })
74
79
  }
75
80
 
@@ -120,7 +125,7 @@ mod tests {
120
125
  writer.finish()?;
121
126
 
122
127
  // Check the map has the same contents we initialized
123
- let reader = InvertedMapReader::open(tmp.path())?;
128
+ let reader = InvertedMapReader::open(tmp.path(), false)?;
124
129
  for i in 0..20 {
125
130
  let indexed = reader.get(indexes[i]);
126
131
  assert_eq!(indexed, entries[i]);
@@ -151,6 +151,10 @@ pub fn build_indexes(work_path: &Path, data_store: &impl DataStore) -> VectorR<(
151
151
  Ok(())
152
152
  }
153
153
 
154
+ pub struct OpenOptions {
155
+ pub prewarm: bool,
156
+ }
157
+
154
158
  pub struct InvertedIndexes {
155
159
  field_index: FstIndexReader,
156
160
  label_index: FstIndexReader,
@@ -166,10 +170,13 @@ impl InvertedIndexes {
166
170
  path.join(file::INDEX_MAP).exists()
167
171
  }
168
172
 
169
- pub fn open(work_path: &Path, records: usize) -> VectorR<Self> {
170
- let map = Arc::new(InvertedMapReader::open(&work_path.join(file::INDEX_MAP))?);
171
- let field_index = FstIndexReader::open(&work_path.join(file::FIELD_INDEX), map.clone())?;
172
- let label_index = FstIndexReader::open(&work_path.join(file::LABEL_INDEX), map)?;
173
+ pub fn open(work_path: &Path, records: usize, options: OpenOptions) -> VectorR<Self> {
174
+ let map = Arc::new(InvertedMapReader::open(
175
+ &work_path.join(file::INDEX_MAP),
176
+ options.prewarm,
177
+ )?);
178
+ let field_index = FstIndexReader::open(&work_path.join(file::FIELD_INDEX), map.clone(), options.prewarm)?;
179
+ let label_index = FstIndexReader::open(&work_path.join(file::LABEL_INDEX), map, options.prewarm)?;
173
180
 
174
181
  Ok(Self {
175
182
  field_index,
@@ -24,13 +24,13 @@ mod tests;
24
24
  use crate::config::{VectorConfig, flags};
25
25
  use crate::data_store::{DataStore, DataStoreV1, DataStoreV2, OpenReason, ParagraphRef, VectorRef};
26
26
  use crate::formula::Formula;
27
- use crate::hnsw::*;
28
27
  use crate::inverted_index::{FilterBitSet, InvertedIndexes, build_indexes};
29
28
  use crate::vector_types::rabitq;
30
29
  use crate::{ParagraphAddr, VectorAddr, VectorErr, VectorR, VectorSegmentMeta, VectorSegmentMetadata};
30
+ use crate::{hnsw::*, inverted_index};
31
31
  use core::f32;
32
32
  use io::{BufWriter, Write};
33
- use memmap2::Mmap;
33
+ use memmap2::{Mmap, MmapOptions};
34
34
  use std::cmp::Reverse;
35
35
  use std::collections::HashSet;
36
36
  use std::fs::File;
@@ -48,9 +48,12 @@ mod file_names {
48
48
  }
49
49
 
50
50
  pub fn open(metadata: VectorSegmentMetadata, config: &VectorConfig) -> VectorR<OpenSegment> {
51
+ // TODO: we should get this flag from the VectorConfig or some other place
52
+ let prewarm = false;
53
+
51
54
  let path = &metadata.path;
52
55
  let data_store: Box<dyn DataStore> = if DataStoreV1::exists(path)? {
53
- let data_store = DataStoreV1::open(path, &config.vector_type, OpenReason::Search)?;
56
+ let data_store = DataStoreV1::open(path, &config.vector_type, OpenReason::Search { prewarm })?;
54
57
  // Build the index at runtime if they do not exist. This can
55
58
  // be removed once we have migrated all existing indexes
56
59
  if !InvertedIndexes::exists(path) {
@@ -58,7 +61,7 @@ pub fn open(metadata: VectorSegmentMetadata, config: &VectorConfig) -> VectorR<O
58
61
  }
59
62
  Box::new(data_store)
60
63
  } else {
61
- let data_store = DataStoreV2::open(path, &config.vector_type, OpenReason::Search)?;
64
+ let data_store = DataStoreV2::open(path, &config.vector_type, OpenReason::Search { prewarm })?;
62
65
  // Build the index at runtime if they do not exist. This can
63
66
  // be removed once we have migrated all existing indexes
64
67
  if !InvertedIndexes::exists(path) {
@@ -66,9 +69,13 @@ pub fn open(metadata: VectorSegmentMetadata, config: &VectorConfig) -> VectorR<O
66
69
  }
67
70
  Box::new(data_store)
68
71
  };
69
- let hnsw_file = File::open(path.join(file_names::HNSW))?;
70
72
 
71
- let index = unsafe { Mmap::map(&hnsw_file)? };
73
+ let hnsw_file = File::open(path.join(file_names::HNSW))?;
74
+ let mut index_options = MmapOptions::new();
75
+ if prewarm {
76
+ index_options.populate();
77
+ }
78
+ let index = unsafe { index_options.map(&hnsw_file)? };
72
79
 
73
80
  // Telling the OS our expected access pattern
74
81
  #[cfg(not(target_os = "windows"))]
@@ -77,7 +84,7 @@ pub fn open(metadata: VectorSegmentMetadata, config: &VectorConfig) -> VectorR<O
77
84
  index.advise(memmap2::Advice::WillNeed)?;
78
85
  }
79
86
 
80
- let inverted_indexes = InvertedIndexes::open(path, metadata.records)?;
87
+ let inverted_indexes = InvertedIndexes::open(path, metadata.records, inverted_index::OpenOptions { prewarm })?;
81
88
  let alive_bitset = FilterBitSet::new(metadata.records, true);
82
89
 
83
90
  Ok(OpenSegment {
@@ -189,7 +196,11 @@ fn merge_indexes<DS: DataStore + 'static>(
189
196
  };
190
197
 
191
198
  build_indexes(segment_path, &data_store)?;
192
- let inverted_indexes = InvertedIndexes::open(segment_path, merged_vectors_count as usize)?;
199
+ let inverted_indexes = InvertedIndexes::open(
200
+ segment_path,
201
+ merged_vectors_count as usize,
202
+ inverted_index::OpenOptions { prewarm: false },
203
+ )?;
193
204
  let alive_bitset = FilterBitSet::new(metadata.records, true);
194
205
 
195
206
  Ok(OpenSegment {
@@ -289,7 +300,11 @@ fn create_indexes<DS: DataStore + 'static>(
289
300
  };
290
301
 
291
302
  build_indexes(path, &data_store)?;
292
- let inverted_indexes = InvertedIndexes::open(path, vector_count as usize)?;
303
+ let inverted_indexes = InvertedIndexes::open(
304
+ path,
305
+ vector_count as usize,
306
+ inverted_index::OpenOptions { prewarm: false },
307
+ )?;
293
308
  let alive_bitset = FilterBitSet::new(metadata.records, true);
294
309
 
295
310
  Ok(OpenSegment {
@@ -13,7 +13,7 @@ classifiers = [
13
13
  "Programming Language :: Python :: Implementation :: CPython",
14
14
  "Programming Language :: Python :: Implementation :: PyPy",
15
15
  ]
16
- version = "6.9.1.post600"
16
+ version = "6.9.1.post603"
17
17
 
18
18
  [project.urls]
19
19
  Homepage = "https://nuclia.com"
@@ -23,8 +23,6 @@ use std::io::Write;
23
23
  use std::str::FromStr;
24
24
  use std::sync::Arc;
25
25
 
26
- use crate::errors::NidxError;
27
- use crate::metadata::{Index, IndexId, IndexKind, Shard};
28
26
  use axum::body::{Body, Bytes};
29
27
  use axum::extract::{Path, State};
30
28
  use axum::http::StatusCode;
@@ -41,6 +39,8 @@ use tracing::error;
41
39
  use uuid::Uuid;
42
40
 
43
41
  use crate::api::shards;
42
+ use crate::errors::NidxError;
43
+ use crate::metadata::{Index, IndexId, IndexKind, Shard};
44
44
  use crate::{NidxMetadata, Settings, import_export};
45
45
 
46
46
  #[derive(Clone)]
@@ -139,6 +139,10 @@ impl NidxApi for ApiServer {
139
139
  }))
140
140
  }
141
141
 
142
+ async fn configure_shards(&self, _request: Request<ShardsConfig>) -> Result<Response<EmptyQuery>> {
143
+ Ok(Response::new(EmptyQuery {}))
144
+ }
145
+
142
146
  async fn add_vector_set(&self, request: Request<NewVectorSetRequest>) -> Result<Response<OpStatus>> {
143
147
  let request = request.into_inner();
144
148
  let Some(VectorSetId {