nidx-binding 6.9.0.post580__tar.gz → 6.9.0.post585__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.
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/PKG-INFO +1 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/reader.rs +5 -26
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/request_types.rs +0 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/tests/reader.rs +0 -8
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/reader.rs +5 -7
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/request_types.rs +0 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/tests/test_search.rs +0 -10
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/hnsw/ops_hnsw.rs +17 -2
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/indexer.rs +5 -10
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/request_types.rs +0 -2
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/searcher.rs +5 -14
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/segment.rs +36 -14
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/vector_types/rabitq.rs +2 -2
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/pyproject.toml +1 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/query_planner.rs +0 -3
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/shard_search.rs +9 -13
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/telemetry/log_format.rs +1 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/telemetry.rs +1 -1
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.config/nextest.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-8d33717587c6ee8f5fc339a80b1212a73d6c03e45856b1d55457fc8074709dd0.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-a60ec2f66f1e7b84189e5b089f2087a29ff6a64326a3743dea935bbc58ee77fa.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/Cargo.lock +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/README.md +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_parser/fuzzy_parser.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_parser/keyword_parser.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_parser/stop_words.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_parser/tokenizer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/query_parser.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/build.py +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/nidx.proto +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/nodereader.proto +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/noderesources.proto +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/nodewriter.proto +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/graph_collector.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/reader.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/src/top_unique_n.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tantivy/src/utils.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/tests/test_deletions.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v1/node.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v1/store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v1/trie.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v1/trie_ram.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v1.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v2/paragraph_store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v2/quant_vector_store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v2/vector_store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store/v2.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/data_types.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/formula.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/hnsw/disk_hnsw.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/hnsw/params.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/hnsw/ram_hnsw.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/hnsw.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/multivector.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/segment/tests.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/tests/test_maxsim.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/api/grpc.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/api/shards.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/api.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/control.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/errors.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/grpc_server.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/import_export.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/indexer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/lib.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/main.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/index.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metadata.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/metrics.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/scheduler.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/searcher.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/segment_store.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/settings.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/tool.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/utilization_tracker.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/src/worker.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/common/mod.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/common/services.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_search_relations.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_shards.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/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.0.
|
|
3
|
+
Version: 6.9.0.post585
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -113,16 +113,11 @@ impl ParagraphReaderService {
|
|
|
113
113
|
) -> anyhow::Result<ParagraphSearchResponse> {
|
|
114
114
|
let mut time_tracker = TimeTracker::start();
|
|
115
115
|
|
|
116
|
-
let shard_id = &request.id;
|
|
117
116
|
let text = &request.body;
|
|
118
117
|
let results = request.result_per_page as usize;
|
|
119
118
|
let (keyword_query, termc, fuzzy_query) = search_query(request, prefilter, &self.index, &self.schema);
|
|
120
119
|
let facets = request.facets();
|
|
121
|
-
|
|
122
|
-
shard_id,
|
|
123
|
-
"Query parsing took {}µs",
|
|
124
|
-
time_tracker.checkpoint().as_micros()
|
|
125
|
-
);
|
|
120
|
+
debug!("Query parsing took {}µs", time_tracker.checkpoint().as_micros());
|
|
126
121
|
|
|
127
122
|
let searcher = Searcher {
|
|
128
123
|
request,
|
|
@@ -133,22 +128,14 @@ impl ParagraphReaderService {
|
|
|
133
128
|
};
|
|
134
129
|
// println!("Regular search with query: {:#?}", keyword_query);
|
|
135
130
|
let mut response = searcher.do_search(termc.clone(), keyword_query, self, request.min_score)?;
|
|
136
|
-
|
|
137
|
-
shard_id,
|
|
138
|
-
"Keyword search took {}µs",
|
|
139
|
-
time_tracker.checkpoint().as_micros()
|
|
140
|
-
);
|
|
131
|
+
debug!("Keyword search took {}µs", time_tracker.checkpoint().as_micros());
|
|
141
132
|
|
|
142
133
|
if response.results.is_empty() && request.result_per_page > 0 && request.min_score == 0 as f32 {
|
|
143
134
|
// println!("Fuzzy search with query: {:#?}", fuzzy_query);
|
|
144
135
|
let fuzzied = searcher.do_search(termc, fuzzy_query, self, request.min_score)?;
|
|
145
136
|
response = fuzzied;
|
|
146
137
|
response.fuzzy_distance = FUZZY_DISTANCE as i32;
|
|
147
|
-
|
|
148
|
-
shard_id,
|
|
149
|
-
"Fallback fuzzy query took {}µs",
|
|
150
|
-
time_tracker.checkpoint().as_micros()
|
|
151
|
-
);
|
|
138
|
+
debug!("Fallback fuzzy query took {}µs", time_tracker.checkpoint().as_micros());
|
|
152
139
|
}
|
|
153
140
|
|
|
154
141
|
let total = response.results.len() as f32;
|
|
@@ -175,16 +162,8 @@ impl ParagraphReaderService {
|
|
|
175
162
|
response.next_page = false;
|
|
176
163
|
}
|
|
177
164
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
"Result processing took {}µs",
|
|
181
|
-
time_tracker.checkpoint().as_micros()
|
|
182
|
-
);
|
|
183
|
-
trace!(
|
|
184
|
-
shard_id,
|
|
185
|
-
"Paragraph search took {}µs",
|
|
186
|
-
time_tracker.elapsed().as_micros()
|
|
187
|
-
);
|
|
165
|
+
debug!("Result processing took {}µs", time_tracker.checkpoint().as_micros());
|
|
166
|
+
debug!("Paragraph search took {}µs", time_tracker.elapsed().as_micros());
|
|
188
167
|
|
|
189
168
|
Ok(response)
|
|
190
169
|
}
|
|
@@ -175,7 +175,6 @@ fn test_total_number_of_results() -> anyhow::Result<()> {
|
|
|
175
175
|
let paragraph_reader_service = test_reader(&resource);
|
|
176
176
|
|
|
177
177
|
let mut request = ParagraphSearchRequest {
|
|
178
|
-
id: shard_id,
|
|
179
178
|
uuid: rid,
|
|
180
179
|
..Default::default()
|
|
181
180
|
};
|
|
@@ -205,7 +204,6 @@ fn test_filtering_formula() -> anyhow::Result<()> {
|
|
|
205
204
|
|
|
206
205
|
// Only one paragraph matches
|
|
207
206
|
let mut request = ParagraphSearchRequest {
|
|
208
|
-
id: shard_id,
|
|
209
207
|
uuid: rid,
|
|
210
208
|
body: "".to_string(),
|
|
211
209
|
faceted: None,
|
|
@@ -259,7 +257,6 @@ fn test_keyword_and_fuzzy_queries() -> anyhow::Result<()> {
|
|
|
259
257
|
|
|
260
258
|
let paragraph_search = |query: &str| {
|
|
261
259
|
let request = ParagraphSearchRequest {
|
|
262
|
-
id: shard_id.clone(),
|
|
263
260
|
uuid: rid.clone(),
|
|
264
261
|
body: query.to_string(),
|
|
265
262
|
faceted: None,
|
|
@@ -327,7 +324,6 @@ fn test_min_score_filter() -> anyhow::Result<()> {
|
|
|
327
324
|
let paragraph_reader_service = test_reader(&resource);
|
|
328
325
|
|
|
329
326
|
let mut request = ParagraphSearchRequest {
|
|
330
|
-
id: shard_id,
|
|
331
327
|
uuid: rid,
|
|
332
328
|
result_per_page: 20,
|
|
333
329
|
..Default::default()
|
|
@@ -361,7 +357,6 @@ fn test_faceted_search() -> anyhow::Result<()> {
|
|
|
361
357
|
|
|
362
358
|
// Filter with facets and order
|
|
363
359
|
let request = ParagraphSearchRequest {
|
|
364
|
-
id: shard_id,
|
|
365
360
|
uuid: rid,
|
|
366
361
|
faceted: Some(faceted.clone()),
|
|
367
362
|
result_per_page: 20,
|
|
@@ -395,7 +390,6 @@ fn test_order_by() -> anyhow::Result<()> {
|
|
|
395
390
|
|
|
396
391
|
// Use a sort order
|
|
397
392
|
let request = ParagraphSearchRequest {
|
|
398
|
-
id: "shard1".to_string(),
|
|
399
393
|
uuid: "".to_string(),
|
|
400
394
|
body: "this is the".to_string(),
|
|
401
395
|
order: Some(order),
|
|
@@ -440,7 +434,6 @@ fn test_query_parsing() -> anyhow::Result<()> {
|
|
|
440
434
|
|
|
441
435
|
// Only one paragraph matches
|
|
442
436
|
let mut search = ParagraphSearchRequest {
|
|
443
|
-
id: shard_id,
|
|
444
437
|
uuid: rid,
|
|
445
438
|
body: "".to_string(),
|
|
446
439
|
faceted: None,
|
|
@@ -468,7 +461,6 @@ fn test_query_parsing_weird_stuff() -> anyhow::Result<()> {
|
|
|
468
461
|
let paragraph_reader_service = test_reader(&resource);
|
|
469
462
|
|
|
470
463
|
let mut search = ParagraphSearchRequest {
|
|
471
|
-
id: shard_id,
|
|
472
464
|
uuid: rid,
|
|
473
465
|
body: "".to_string(),
|
|
474
466
|
faceted: None,
|
|
@@ -10,7 +10,7 @@ build-backend = "pdm.backend"
|
|
|
10
10
|
|
|
11
11
|
[project]
|
|
12
12
|
name = "nidx_protos"
|
|
13
|
-
version = "6.9.0.
|
|
13
|
+
version = "6.9.0.post585"
|
|
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" }]
|
|
@@ -219,12 +219,11 @@ impl TextReaderService {
|
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
fn count(&self) -> anyhow::Result<usize> {
|
|
222
|
-
let id: Option<String> = None;
|
|
223
222
|
let time = Instant::now();
|
|
224
223
|
let searcher = self.reader.searcher();
|
|
225
224
|
let count = searcher.search(&AllQuery, &Count)?;
|
|
226
225
|
let v = time.elapsed().as_millis();
|
|
227
|
-
debug!("
|
|
226
|
+
debug!("Ending at: {v} ms");
|
|
228
227
|
|
|
229
228
|
Ok(count)
|
|
230
229
|
}
|
|
@@ -393,11 +392,10 @@ impl TextReaderService {
|
|
|
393
392
|
|
|
394
393
|
fn do_search(&self, request: &DocumentSearchRequest) -> anyhow::Result<DocumentSearchResponse> {
|
|
395
394
|
use crate::search_query::create_query;
|
|
396
|
-
let id = Some(&request.id);
|
|
397
395
|
let time = Instant::now();
|
|
398
396
|
|
|
399
397
|
let v = time.elapsed().as_millis();
|
|
400
|
-
debug!("
|
|
398
|
+
debug!("Creating query: starts at {v} ms");
|
|
401
399
|
|
|
402
400
|
let query_parser = {
|
|
403
401
|
let mut query_parser = QueryParser::for_index(&self.index, vec![self.schema.text]);
|
|
@@ -428,14 +426,14 @@ impl TextReaderService {
|
|
|
428
426
|
facet_collector.add_facet(Facet::from(facet));
|
|
429
427
|
}
|
|
430
428
|
let v = time.elapsed().as_millis();
|
|
431
|
-
debug!("
|
|
429
|
+
debug!("Creating query: ends at {v} ms");
|
|
432
430
|
|
|
433
431
|
let v = time.elapsed().as_millis();
|
|
434
|
-
debug!("
|
|
432
|
+
debug!("Searching: starts at {v} ms");
|
|
435
433
|
|
|
436
434
|
let searcher = self.reader.searcher();
|
|
437
435
|
let v = time.elapsed().as_millis();
|
|
438
|
-
debug!("
|
|
436
|
+
debug!("Searching: ends at {v} ms");
|
|
439
437
|
|
|
440
438
|
match maybe_order {
|
|
441
439
|
_ if request.only_faceted => {
|
|
@@ -38,7 +38,6 @@ fn test_search_queries() {
|
|
|
38
38
|
fn query(reader: &TextSearcher, query: impl Into<String>, expected: i32) {
|
|
39
39
|
let query = query.into();
|
|
40
40
|
let request = DocumentSearchRequest {
|
|
41
|
-
id: "shard".to_string(),
|
|
42
41
|
body: query.clone(),
|
|
43
42
|
result_per_page: 20,
|
|
44
43
|
..Default::default()
|
|
@@ -192,7 +191,6 @@ fn test_filtered_search() {
|
|
|
192
191
|
fn query(reader: &TextSearcher, query: impl Into<String>, expression: FilterExpression, expected: i32) {
|
|
193
192
|
let query = query.into();
|
|
194
193
|
let request = DocumentSearchRequest {
|
|
195
|
-
id: "shard".to_string(),
|
|
196
194
|
body: query.clone(),
|
|
197
195
|
result_per_page: 20,
|
|
198
196
|
filter_expression: Some(expression),
|
|
@@ -245,7 +243,6 @@ fn test_search_by_field() {
|
|
|
245
243
|
let reader = common::test_reader();
|
|
246
244
|
|
|
247
245
|
let request = DocumentSearchRequest {
|
|
248
|
-
id: "shard".to_string(),
|
|
249
246
|
body: "".to_string(),
|
|
250
247
|
result_per_page: 20,
|
|
251
248
|
filter_expression: Some(FilterExpression {
|
|
@@ -268,7 +265,6 @@ fn test_faceted_search() {
|
|
|
268
265
|
fn query(reader: &TextSearcher, query: impl Into<String>, facets: Faceted, expected: i32) {
|
|
269
266
|
let query = query.into();
|
|
270
267
|
let request = DocumentSearchRequest {
|
|
271
|
-
id: "shard".to_string(),
|
|
272
268
|
body: "".to_string(),
|
|
273
269
|
result_per_page: 20,
|
|
274
270
|
faceted: Some(facets.clone()),
|
|
@@ -302,7 +298,6 @@ fn test_faceted_search() {
|
|
|
302
298
|
fn test_quote_fixing() {
|
|
303
299
|
fn query(reader: &TextSearcher, query: impl Into<String>) {
|
|
304
300
|
let request = DocumentSearchRequest {
|
|
305
|
-
id: "shard".to_string(),
|
|
306
301
|
body: query.into(),
|
|
307
302
|
result_per_page: 20,
|
|
308
303
|
..Default::default()
|
|
@@ -324,7 +319,6 @@ fn test_search_with_min_score() {
|
|
|
324
319
|
fn query(reader: &TextSearcher, query: impl Into<String>, min_score: f32, expected: i32) {
|
|
325
320
|
let query = query.into();
|
|
326
321
|
let request = DocumentSearchRequest {
|
|
327
|
-
id: "shard".to_string(),
|
|
328
322
|
body: query.clone(),
|
|
329
323
|
result_per_page: 20,
|
|
330
324
|
min_score,
|
|
@@ -348,7 +342,6 @@ fn test_int_order_pagination() {
|
|
|
348
342
|
let reader = common::test_reader();
|
|
349
343
|
|
|
350
344
|
let request = DocumentSearchRequest {
|
|
351
|
-
id: "shard".to_string(),
|
|
352
345
|
body: "".to_string(),
|
|
353
346
|
result_per_page: 1,
|
|
354
347
|
order: Some(OrderBy {
|
|
@@ -381,7 +374,6 @@ fn test_timestamp_filtering() {
|
|
|
381
374
|
|
|
382
375
|
let search = |date_range| {
|
|
383
376
|
let request = DocumentSearchRequest {
|
|
384
|
-
id: "shard".to_string(),
|
|
385
377
|
body: "".to_string(),
|
|
386
378
|
result_per_page: 10,
|
|
387
379
|
min_score: f32::MIN,
|
|
@@ -420,7 +412,6 @@ fn test_key_filtering() {
|
|
|
420
412
|
let reader = common::test_reader();
|
|
421
413
|
|
|
422
414
|
let request = DocumentSearchRequest {
|
|
423
|
-
id: "shard".to_string(),
|
|
424
415
|
body: "".to_string(),
|
|
425
416
|
result_per_page: 1,
|
|
426
417
|
min_score: f32::MIN,
|
|
@@ -431,7 +422,6 @@ fn test_key_filtering() {
|
|
|
431
422
|
|
|
432
423
|
let search = |resource| {
|
|
433
424
|
let request = DocumentSearchRequest {
|
|
434
|
-
id: "shard".to_string(),
|
|
435
425
|
body: "".to_string(),
|
|
436
426
|
result_per_page: 10,
|
|
437
427
|
min_score: f32::MIN,
|
|
@@ -26,6 +26,8 @@ use rand::rngs::SmallRng;
|
|
|
26
26
|
use rustc_hash::FxHashSet;
|
|
27
27
|
use std::cmp::{Ordering, Reverse};
|
|
28
28
|
use std::collections::{BinaryHeap, HashMap, HashSet, VecDeque};
|
|
29
|
+
use std::time::Instant;
|
|
30
|
+
use tracing::trace;
|
|
29
31
|
|
|
30
32
|
use crate::inverted_index::FilterBitSet;
|
|
31
33
|
use crate::vector_types::rabitq;
|
|
@@ -421,12 +423,15 @@ impl<'a, DR: DataRetriever> HnswOps<'a, DR> {
|
|
|
421
423
|
let mut entry_points = vec![entry_point.node];
|
|
422
424
|
|
|
423
425
|
// Traverse upper layer finding the best match on each one
|
|
426
|
+
let t = Instant::now();
|
|
424
427
|
while crnt_layer != 0 {
|
|
425
428
|
let layer = hnsw.get_layer(crnt_layer);
|
|
426
429
|
let layer_res = self.layer_search(query, layer, 1, &entry_points);
|
|
427
430
|
entry_points = layer_res.map(|(addr, _)| addr).collect();
|
|
428
431
|
crnt_layer -= 1;
|
|
429
432
|
}
|
|
433
|
+
let time = t.elapsed();
|
|
434
|
+
trace!(?time, "HNSW search: upper layers");
|
|
430
435
|
|
|
431
436
|
// If using RabitQ, request more vectors to rerank later
|
|
432
437
|
let original_query = if let SearchVector::RabitQ(rq) = query {
|
|
@@ -441,15 +446,22 @@ impl<'a, DR: DataRetriever> HnswOps<'a, DR> {
|
|
|
441
446
|
};
|
|
442
447
|
|
|
443
448
|
// Find the best k nodes in the last layer
|
|
449
|
+
let t = Instant::now();
|
|
444
450
|
let layer = hnsw.get_layer(crnt_layer);
|
|
445
451
|
let neighbours = self.layer_search(query, layer, last_layer_k, &entry_points);
|
|
452
|
+
let time = t.elapsed();
|
|
453
|
+
trace!(?time, "HNSW search: last layer");
|
|
446
454
|
|
|
447
455
|
let entry_points = if let Some(query) = original_query {
|
|
448
456
|
// If using RabitQ, rerank using the original vectors
|
|
449
|
-
|
|
457
|
+
let t = Instant::now();
|
|
458
|
+
let reranked = rabitq::rerank_top(neighbours.collect(), k_neighbours, self.retriever, query)
|
|
450
459
|
.into_iter()
|
|
451
460
|
.map(|Reverse(Cnx(addr, _))| addr)
|
|
452
|
-
.collect()
|
|
461
|
+
.collect();
|
|
462
|
+
let time = t.elapsed();
|
|
463
|
+
trace!(?time, "HNSW search: reranking");
|
|
464
|
+
reranked
|
|
453
465
|
} else {
|
|
454
466
|
neighbours.map(|(addr, _)| addr).collect()
|
|
455
467
|
};
|
|
@@ -463,6 +475,7 @@ impl<'a, DR: DataRetriever> HnswOps<'a, DR> {
|
|
|
463
475
|
let layer_zero = hnsw.get_layer(0);
|
|
464
476
|
|
|
465
477
|
// Find k nodes that match the filter in the last layer
|
|
478
|
+
let t = Instant::now();
|
|
466
479
|
let mut filtered_result = self.closest_up_nodes(
|
|
467
480
|
entry_points,
|
|
468
481
|
original_query.unwrap_or(query),
|
|
@@ -470,6 +483,8 @@ impl<'a, DR: DataRetriever> HnswOps<'a, DR> {
|
|
|
470
483
|
k_neighbours,
|
|
471
484
|
filter,
|
|
472
485
|
);
|
|
486
|
+
let time = t.elapsed();
|
|
487
|
+
trace!(?time, "HNSW search: closest nodes");
|
|
473
488
|
|
|
474
489
|
// order may be lost
|
|
475
490
|
filtered_result.sort_by(|a, b| b.1.total_cmp(&a.1));
|
|
@@ -58,10 +58,6 @@ impl<'a> ResourceWrapper<'a> {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
pub fn id(&self) -> &String {
|
|
62
|
-
&self.resource.shard_id
|
|
63
|
-
}
|
|
64
|
-
|
|
65
61
|
pub fn labels(&self) -> &[String] {
|
|
66
62
|
&self.resource.labels
|
|
67
63
|
}
|
|
@@ -108,10 +104,9 @@ pub fn index_resource(
|
|
|
108
104
|
) -> anyhow::Result<Option<VectorSegmentMetadata>> {
|
|
109
105
|
let time = Instant::now();
|
|
110
106
|
|
|
111
|
-
|
|
112
|
-
debug!("{id:?} - Updating main index");
|
|
107
|
+
debug!("Updating main index");
|
|
113
108
|
let v = time.elapsed().as_millis();
|
|
114
|
-
debug!("
|
|
109
|
+
debug!("Creating elements for the main index: starts {v} ms");
|
|
115
110
|
|
|
116
111
|
let mut elems = Vec::new();
|
|
117
112
|
let normalize_vectors = config.normalize_vectors;
|
|
@@ -142,10 +137,10 @@ pub fn index_resource(
|
|
|
142
137
|
}
|
|
143
138
|
}
|
|
144
139
|
let v = time.elapsed().as_millis();
|
|
145
|
-
debug!("
|
|
140
|
+
debug!("Creating elements for the main index: ends {v} ms");
|
|
146
141
|
|
|
147
142
|
let v = time.elapsed().as_millis();
|
|
148
|
-
debug!("
|
|
143
|
+
debug!("Main index set resource: starts {v} ms");
|
|
149
144
|
|
|
150
145
|
if elems.is_empty() {
|
|
151
146
|
return Ok(None);
|
|
@@ -160,7 +155,7 @@ pub fn index_resource(
|
|
|
160
155
|
let segment = segment::create(output_path, elems, config, tags)?;
|
|
161
156
|
|
|
162
157
|
let v = time.elapsed().as_millis();
|
|
163
|
-
debug!("
|
|
158
|
+
debug!("Main index set resource: ends {v} ms");
|
|
164
159
|
|
|
165
160
|
Ok(Some(segment.into_metadata()))
|
|
166
161
|
}
|
|
@@ -290,8 +290,6 @@ impl Searcher {
|
|
|
290
290
|
) -> anyhow::Result<VectorSearchResponse> {
|
|
291
291
|
let time = Instant::now();
|
|
292
292
|
|
|
293
|
-
let id = Some(&request.id);
|
|
294
|
-
|
|
295
293
|
let mut formula = Formula::new();
|
|
296
294
|
|
|
297
295
|
if let PrefilterResult::Some(valid_fields) = prefilter {
|
|
@@ -313,7 +311,7 @@ impl Searcher {
|
|
|
313
311
|
}
|
|
314
312
|
|
|
315
313
|
let v = time.elapsed().as_millis();
|
|
316
|
-
debug!("
|
|
314
|
+
debug!("Searching: starts at {v} ms");
|
|
317
315
|
let search_request = &SearchRequest { request, formula };
|
|
318
316
|
let result = match self.config.vector_cardinality {
|
|
319
317
|
VectorCardinality::Single => self._search(search_request, &request.segment_filtering_formula)?,
|
|
@@ -321,9 +319,9 @@ impl Searcher {
|
|
|
321
319
|
};
|
|
322
320
|
|
|
323
321
|
let v = time.elapsed().as_millis();
|
|
324
|
-
debug!("
|
|
322
|
+
debug!("Searching: ends at {v} ms");
|
|
325
323
|
|
|
326
|
-
debug!("
|
|
324
|
+
debug!("Creating results: starts at {v} ms");
|
|
327
325
|
|
|
328
326
|
let documents = result
|
|
329
327
|
.into_iter()
|
|
@@ -331,10 +329,10 @@ impl Searcher {
|
|
|
331
329
|
.collect::<Vec<_>>();
|
|
332
330
|
let v = time.elapsed().as_millis();
|
|
333
331
|
|
|
334
|
-
debug!("
|
|
332
|
+
debug!("Creating results: ends at {v} ms");
|
|
335
333
|
|
|
336
334
|
let took = time.elapsed().as_secs_f64();
|
|
337
|
-
debug!("
|
|
335
|
+
debug!("Ending at {took} ms");
|
|
338
336
|
|
|
339
337
|
Ok(VectorSearchResponse {
|
|
340
338
|
documents,
|
|
@@ -479,7 +477,6 @@ mod tests {
|
|
|
479
477
|
|
|
480
478
|
let searcher = Searcher::open(vec![segment::open(segment, &vsc)?], vsc).unwrap();
|
|
481
479
|
let request = VectorSearchRequest {
|
|
482
|
-
id: "".to_string(),
|
|
483
480
|
vector_set: "".to_string(),
|
|
484
481
|
vector: vec![4.0, 6.0, 7.0],
|
|
485
482
|
result_per_page: 20,
|
|
@@ -575,7 +572,6 @@ mod tests {
|
|
|
575
572
|
|
|
576
573
|
let searcher = Searcher::open(vec![segment::open(segment, &vsc)?], vsc).unwrap();
|
|
577
574
|
let request = VectorSearchRequest {
|
|
578
|
-
id: "".to_string(),
|
|
579
575
|
vector_set: "".to_string(),
|
|
580
576
|
vector: vec![4.0, 6.0, 7.0],
|
|
581
577
|
result_per_page: 20,
|
|
@@ -586,7 +582,6 @@ mod tests {
|
|
|
586
582
|
assert_eq!(result.documents.len(), 4);
|
|
587
583
|
|
|
588
584
|
let request = VectorSearchRequest {
|
|
589
|
-
id: "".to_string(),
|
|
590
585
|
vector_set: "".to_string(),
|
|
591
586
|
vector: vec![4.0, 6.0, 7.0],
|
|
592
587
|
result_per_page: 20,
|
|
@@ -598,7 +593,6 @@ mod tests {
|
|
|
598
593
|
|
|
599
594
|
// Check that min_score works
|
|
600
595
|
let request = VectorSearchRequest {
|
|
601
|
-
id: "".to_string(),
|
|
602
596
|
vector_set: "".to_string(),
|
|
603
597
|
vector: vec![4.0, 6.0, 7.0],
|
|
604
598
|
result_per_page: 20,
|
|
@@ -610,7 +604,6 @@ mod tests {
|
|
|
610
604
|
assert_eq!(result.documents.len(), 0);
|
|
611
605
|
|
|
612
606
|
let bad_request = VectorSearchRequest {
|
|
613
|
-
id: "".to_string(),
|
|
614
607
|
vector_set: "".to_string(),
|
|
615
608
|
vector: vec![4.0, 6.0],
|
|
616
609
|
result_per_page: 20,
|
|
@@ -685,7 +678,6 @@ mod tests {
|
|
|
685
678
|
|
|
686
679
|
let searcher = Searcher::open(vec![segment::open(segment, &vsc)?], vsc).unwrap();
|
|
687
680
|
let request = VectorSearchRequest {
|
|
688
|
-
id: "".to_string(),
|
|
689
681
|
vector_set: "".to_string(),
|
|
690
682
|
vector: vec![4.0, 6.0, 7.0],
|
|
691
683
|
result_per_page: 20,
|
|
@@ -696,7 +688,6 @@ mod tests {
|
|
|
696
688
|
assert_eq!(result.documents.len(), 2);
|
|
697
689
|
|
|
698
690
|
let request = VectorSearchRequest {
|
|
699
|
-
id: "".to_string(),
|
|
700
691
|
vector_set: "".to_string(),
|
|
701
692
|
vector: vec![4.0, 6.0, 7.0],
|
|
702
693
|
result_per_page: 20,
|
|
@@ -37,6 +37,8 @@ use std::fs::File;
|
|
|
37
37
|
use std::io;
|
|
38
38
|
use std::iter::empty;
|
|
39
39
|
use std::path::Path;
|
|
40
|
+
use std::time::Instant;
|
|
41
|
+
use tracing::{debug, trace};
|
|
40
42
|
|
|
41
43
|
/// How much expensive is to find a node via HNSW compared to a simple brute force scan
|
|
42
44
|
const HNSW_COST_FACTOR: usize = 100;
|
|
@@ -498,7 +500,7 @@ impl OpenSegment {
|
|
|
498
500
|
query: &[f32],
|
|
499
501
|
filter: &Formula,
|
|
500
502
|
with_duplicates: bool,
|
|
501
|
-
|
|
503
|
+
top_k: usize,
|
|
502
504
|
config: &VectorConfig,
|
|
503
505
|
min_score: f32,
|
|
504
506
|
) -> Box<dyn Iterator<Item = ScoredVector<'a>> + '_> {
|
|
@@ -519,35 +521,48 @@ impl OpenSegment {
|
|
|
519
521
|
// If we have no filters, just the deletions
|
|
520
522
|
let bitset = filter_bitset.as_ref().unwrap_or(&self.alive_bitset);
|
|
521
523
|
|
|
522
|
-
let
|
|
523
|
-
if
|
|
524
|
+
let matching = bitset.iter().count();
|
|
525
|
+
if matching == 0 {
|
|
524
526
|
return Box::new(empty());
|
|
525
527
|
}
|
|
526
|
-
let expected_traversal_scan =
|
|
528
|
+
let expected_traversal_scan = top_k * self.metadata.records / matching;
|
|
527
529
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
+
let t = Instant::now();
|
|
531
|
+
let method;
|
|
532
|
+
let results = if matching < expected_traversal_scan * HNSW_COST_FACTOR {
|
|
533
|
+
method = "brute force";
|
|
534
|
+
self.brute_force_search(bitset, top_k, retriever, encoded_query, &raw_query)
|
|
530
535
|
} else {
|
|
536
|
+
method = "hnsw";
|
|
531
537
|
let ops = HnswOps::new(&retriever, true);
|
|
532
|
-
let neighbours = ops.search(encoded_query, self.index.as_ref(),
|
|
538
|
+
let neighbours = ops.search(encoded_query, self.index.as_ref(), top_k, bitset, with_duplicates);
|
|
533
539
|
Box::new(
|
|
534
540
|
neighbours
|
|
535
541
|
.into_iter()
|
|
536
542
|
.map(|(address, dist)| ScoredVector::new(address, self.data_store.as_ref(), dist))
|
|
537
|
-
.take(
|
|
543
|
+
.take(top_k),
|
|
538
544
|
)
|
|
539
|
-
}
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
let time = t.elapsed();
|
|
548
|
+
let segment_path = &self.metadata.path;
|
|
549
|
+
let records = self.metadata.records;
|
|
550
|
+
debug!(?time, ?segment_path, records, matching, "Segment search using {method}");
|
|
551
|
+
|
|
552
|
+
results
|
|
540
553
|
}
|
|
541
554
|
|
|
542
555
|
fn brute_force_search<'a, DS: DataStore>(
|
|
543
556
|
&'a self,
|
|
544
557
|
bitset: &FilterBitSet,
|
|
545
|
-
|
|
558
|
+
top_k: usize,
|
|
546
559
|
retriever: Retriever<'a, DS>,
|
|
547
560
|
encoded_query: &SearchVector,
|
|
548
561
|
raw_query: &SearchVector,
|
|
549
562
|
) -> Box<dyn Iterator<Item = ScoredVector<'a>> + '_> {
|
|
550
563
|
let mut scored_results = Vec::new();
|
|
564
|
+
|
|
565
|
+
let t = Instant::now();
|
|
551
566
|
for paragraph_addr in bitset.iter() {
|
|
552
567
|
let paragraph = retriever.data_store.get_paragraph(paragraph_addr);
|
|
553
568
|
|
|
@@ -565,11 +580,14 @@ impl OpenSegment {
|
|
|
565
580
|
scored_results.push(best_vector_score);
|
|
566
581
|
}
|
|
567
582
|
}
|
|
583
|
+
let time = t.elapsed();
|
|
584
|
+
trace!(?time, "Brute force search: retrieve");
|
|
568
585
|
|
|
569
|
-
|
|
586
|
+
let t = Instant::now();
|
|
587
|
+
let results: Box<dyn Iterator<Item = _>> = if matches!(encoded_query, SearchVector::RabitQ(_)) {
|
|
570
588
|
// If using RabitQ, rerank top results using the raw vectors
|
|
571
589
|
Box::new(
|
|
572
|
-
rabitq::rerank_top(scored_results,
|
|
590
|
+
rabitq::rerank_top(scored_results, top_k, &retriever, raw_query)
|
|
573
591
|
.into_iter()
|
|
574
592
|
.map(|Reverse(Cnx(addr, score))| ScoredVector::new(addr, self.data_store.as_ref(), score)),
|
|
575
593
|
)
|
|
@@ -580,9 +598,13 @@ impl OpenSegment {
|
|
|
580
598
|
scored_results
|
|
581
599
|
.into_iter()
|
|
582
600
|
.map(|a| ScoredVector::new(a.0, self.data_store.as_ref(), a.1.score))
|
|
583
|
-
.take(
|
|
601
|
+
.take(top_k),
|
|
584
602
|
)
|
|
585
|
-
}
|
|
603
|
+
};
|
|
604
|
+
let time = t.elapsed();
|
|
605
|
+
trace!(?time, "Brute force search: rerank");
|
|
606
|
+
|
|
607
|
+
results
|
|
586
608
|
}
|
|
587
609
|
}
|
|
588
610
|
|
{nidx_binding-6.9.0.post580 → nidx_binding-6.9.0.post585}/nidx_vector/src/vector_types/rabitq.rs
RENAMED
|
@@ -229,7 +229,7 @@ pub fn rerank_top(
|
|
|
229
229
|
top_k: usize,
|
|
230
230
|
retriever: &impl DataRetriever,
|
|
231
231
|
query: &SearchVector,
|
|
232
|
-
) ->
|
|
232
|
+
) -> Vec<Reverse<Cnx>> {
|
|
233
233
|
let mut best = BinaryHeap::new();
|
|
234
234
|
let mut best_k = 0.0;
|
|
235
235
|
for (addr, EstimatedScore { upper_bound, .. }) in candidates {
|
|
@@ -245,7 +245,7 @@ pub fn rerank_top(
|
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
|
-
best
|
|
248
|
+
best.into_sorted_vec()
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
#[cfg(test)]
|
|
@@ -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.0.
|
|
16
|
+
version = "6.9.0.post585"
|
|
17
17
|
|
|
18
18
|
[project.urls]
|
|
19
19
|
Homepage = "https://nuclia.com"
|
|
@@ -112,7 +112,6 @@ fn compute_paragraphs_request(search_request: &SearchRequest) -> anyhow::Result<
|
|
|
112
112
|
with_duplicates: search_request.with_duplicates,
|
|
113
113
|
only_faceted: search_request.only_faceted,
|
|
114
114
|
advanced_query: search_request.advanced_query.clone(),
|
|
115
|
-
id: String::default(),
|
|
116
115
|
min_score: search_request.min_score_bm25,
|
|
117
116
|
security: search_request.security.clone(),
|
|
118
117
|
filtering_formula: search_request
|
|
@@ -130,7 +129,6 @@ fn compute_texts_request(search_request: &SearchRequest) -> Option<DocumentSearc
|
|
|
130
129
|
}
|
|
131
130
|
|
|
132
131
|
Some(DocumentSearchRequest {
|
|
133
|
-
id: search_request.shard.clone(),
|
|
134
132
|
body: search_request.body.clone(),
|
|
135
133
|
order: search_request.order.clone(),
|
|
136
134
|
faceted: search_request.faceted.clone(),
|
|
@@ -153,7 +151,6 @@ fn compute_vectors_request(search_request: &SearchRequest) -> anyhow::Result<Opt
|
|
|
153
151
|
.and_then(|f| extract_label_filters(f, SEGMENT_TAGS));
|
|
154
152
|
|
|
155
153
|
Ok(Some(VectorSearchRequest {
|
|
156
|
-
id: search_request.shard.clone(),
|
|
157
154
|
vector_set: search_request.vectorset.clone(),
|
|
158
155
|
vector: search_request.vector.clone(),
|
|
159
156
|
result_per_page: search_request.result_per_page,
|