nidx-binding 6.10.0.post725__tar.gz → 6.10.0.post732__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 (273) hide show
  1. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/Cargo.lock +23 -3
  2. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/Cargo.toml +1 -1
  3. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/PKG-INFO +1 -1
  4. nidx_binding-6.10.0.post732/migrations/20251218173017_vector_relation_index_kinds.sql +2 -0
  5. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/nodereader.proto +23 -7
  6. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/noderesources.proto +2 -2
  7. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/pyproject.toml +1 -1
  8. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/graph_query_parser.rs +109 -30
  9. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/lib.rs +5 -2
  10. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/reader.rs +40 -32
  11. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/tests/test_graph_query_parser_search.rs +14 -13
  12. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/tests/test_graph_search.rs +3 -0
  13. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/config.rs +23 -3
  14. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/indexer.rs +52 -1
  15. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/inverted_index.rs +14 -12
  16. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/lib.rs +9 -7
  17. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/searcher.rs +0 -1
  18. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/segment.rs +10 -14
  19. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/tests/test_relation.rs +81 -6
  20. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/pyproject.toml +1 -1
  21. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/api/grpc.rs +3 -4
  22. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/api/shards.rs +1 -4
  23. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/indexer.rs +4 -2
  24. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/index.rs +17 -3
  25. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metrics.rs +2 -0
  26. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/merge_task.rs +3 -1
  27. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/index_cache.rs +3 -1
  28. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/query_planner.rs +99 -2
  29. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/shard_search.rs +145 -6
  30. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/sync.rs +17 -1
  31. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/worker.rs +1 -1
  32. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/mod.rs +1 -0
  33. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/shards_api.rs +4 -4
  34. nidx_binding-6.10.0.post732/tests/integration/vector_relation_index.rs +334 -0
  35. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.config/nextest.toml +0 -0
  36. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
  37. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
  38. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
  39. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
  40. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
  41. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
  42. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
  43. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
  44. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
  45. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
  46. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
  47. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
  48. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
  49. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
  50. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
  51. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
  52. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
  53. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
  54. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
  55. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
  56. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
  57. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
  58. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
  59. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
  60. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
  61. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-8d33717587c6ee8f5fc339a80b1212a73d6c03e45856b1d55457fc8074709dd0.json +0 -0
  62. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
  63. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
  64. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
  65. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
  66. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
  67. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
  68. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-a60ec2f66f1e7b84189e5b089f2087a29ff6a64326a3743dea935bbc58ee77fa.json +0 -0
  69. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
  70. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
  71. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
  72. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
  73. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
  74. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
  75. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
  76. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
  77. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
  78. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
  79. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
  80. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
  81. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
  82. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
  83. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
  84. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
  85. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
  86. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
  87. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
  88. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
  89. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
  90. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
  91. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
  92. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
  93. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/.sqlx/query-fd97b359c7a7cdc573b2112efbafb9956ae71d8f875c38140cba1c04b7084b47.json +0 -0
  94. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/README.md +0 -0
  95. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/migrations/20241007163501_initial.sql +0 -0
  96. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/migrations/20241211120039_merge_job_priority.sql +0 -0
  97. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/migrations/20241211121159_basic_indexes.sql +0 -0
  98. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/migrations/20241212151105_check_segment_records.sql +0 -0
  99. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/migrations/20250110145554_in_flight_messages.sql +0 -0
  100. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_binding/Cargo.toml +0 -0
  101. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_binding/src/lib.rs +0 -0
  102. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/Cargo.toml +0 -0
  103. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/fuzzy_query.rs +0 -0
  104. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/lib.rs +0 -0
  105. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_io.rs +0 -0
  106. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_parser/fuzzy_parser.rs +0 -0
  107. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_parser/keyword_parser.rs +0 -0
  108. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_parser/stop_words.rs +0 -0
  109. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_parser/tokenizer.rs +0 -0
  110. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/query_parser.rs +0 -0
  111. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/reader.rs +0 -0
  112. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/request_types.rs +0 -0
  113. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/resource_indexer.rs +0 -0
  114. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/schema.rs +0 -0
  115. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/search_query.rs +0 -0
  116. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/search_response.rs +0 -0
  117. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/src/set_query.rs +0 -0
  118. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/README.md +0 -0
  119. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ar.json +0 -0
  120. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/az.json +0 -0
  121. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/bn.json +0 -0
  122. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ca.json +0 -0
  123. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ch.json +0 -0
  124. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/da.json +0 -0
  125. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/de.json +0 -0
  126. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/el.json +0 -0
  127. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/en.json +0 -0
  128. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/es.json +0 -0
  129. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/eu.json +0 -0
  130. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/extract.py +0 -0
  131. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/fi.json +0 -0
  132. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/fr.json +0 -0
  133. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/he.json +0 -0
  134. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/hu.json +0 -0
  135. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/id.json +0 -0
  136. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/it.json +0 -0
  137. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/kk.json +0 -0
  138. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ne.json +0 -0
  139. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/nl.json +0 -0
  140. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/no.json +0 -0
  141. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/pt.json +0 -0
  142. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ro.json +0 -0
  143. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/ru.json +0 -0
  144. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/sl.json +0 -0
  145. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/sv.json +0 -0
  146. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/tg.json +0 -0
  147. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/stop_words/tr.json +0 -0
  148. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/tests/common/mod.rs +0 -0
  149. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_paragraph/tests/reader.rs +0 -0
  150. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/Cargo.toml +0 -0
  151. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/build.py +0 -0
  152. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/build.rs +0 -0
  153. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/nidx.proto +0 -0
  154. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/nodewriter.proto +0 -0
  155. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_protos/src/lib.rs +0 -0
  156. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/Cargo.toml +0 -0
  157. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/graph_collector.rs +0 -0
  158. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/io_maps.rs +0 -0
  159. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/resource_indexer.rs +0 -0
  160. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/schema.rs +0 -0
  161. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/src/top_unique_n.rs +0 -0
  162. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/tests/common/mod.rs +0 -0
  163. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_relation/tests/test_writer.rs +0 -0
  164. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tantivy/Cargo.toml +0 -0
  165. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tantivy/src/index_reader.rs +0 -0
  166. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tantivy/src/lib.rs +0 -0
  167. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tantivy/src/utils.rs +0 -0
  168. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tests/Cargo.toml +0 -0
  169. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tests/src/graph.rs +0 -0
  170. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_tests/src/lib.rs +0 -0
  171. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/Cargo.toml +0 -0
  172. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/lib.rs +0 -0
  173. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/prefilter.rs +0 -0
  174. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/query_io.rs +0 -0
  175. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/reader.rs +0 -0
  176. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/request_types.rs +0 -0
  177. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/resource_indexer.rs +0 -0
  178. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/schema.rs +0 -0
  179. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/src/search_query.rs +0 -0
  180. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/tests/common/mod.rs +0 -0
  181. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/tests/test_deletions.rs +0 -0
  182. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/tests/test_flow.rs +0 -0
  183. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/tests/test_search.rs +0 -0
  184. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_text/tests/test_streaming.rs +0 -0
  185. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_types/Cargo.toml +0 -0
  186. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_types/src/lib.rs +0 -0
  187. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_types/src/prefilter.rs +0 -0
  188. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_types/src/query_language.rs +0 -0
  189. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/Cargo.toml +0 -0
  190. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v1/node.rs +0 -0
  191. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v1/store.rs +0 -0
  192. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v1/trie.rs +0 -0
  193. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v1/trie_ram.rs +0 -0
  194. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v1.rs +0 -0
  195. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v2/paragraph_store.rs +0 -0
  196. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v2/quant_vector_store.rs +0 -0
  197. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v2/vector_store.rs +0 -0
  198. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store/v2.rs +0 -0
  199. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_store.rs +0 -0
  200. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/data_types.rs +0 -0
  201. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/field_list_metadata.rs +0 -0
  202. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/formula.rs +0 -0
  203. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/build.rs +0 -0
  204. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/disk/v1.rs +0 -0
  205. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/disk/v2.rs +0 -0
  206. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/disk.rs +0 -0
  207. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/params.rs +0 -0
  208. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/ram_hnsw.rs +0 -0
  209. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw/search.rs +0 -0
  210. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/hnsw.rs +0 -0
  211. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
  212. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/inverted_index/map.rs +0 -0
  213. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/inverted_index/paragraph.rs +0 -0
  214. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/inverted_index/relation.rs +0 -0
  215. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/multivector.rs +0 -0
  216. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/query_io.rs +0 -0
  217. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/request_types.rs +0 -0
  218. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/segment/tests.rs +0 -0
  219. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/utils.rs +0 -0
  220. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
  221. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/vector_types/mod.rs +0 -0
  222. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/src/vector_types/rabitq.rs +0 -0
  223. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/tests/common/mod.rs +0 -0
  224. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/tests/test_basic_search.rs +0 -0
  225. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/tests/test_hidden.rs +0 -0
  226. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/nidx_vector/tests/test_maxsim.rs +0 -0
  227. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/api.rs +0 -0
  228. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/control.rs +0 -0
  229. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/errors.rs +0 -0
  230. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/grpc_server.rs +0 -0
  231. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/import_export.rs +0 -0
  232. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/lib.rs +0 -0
  233. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/main.rs +0 -0
  234. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/deletion.rs +0 -0
  235. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/index_request.rs +0 -0
  236. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/merge_job.rs +0 -0
  237. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/segment.rs +0 -0
  238. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata/shard.rs +0 -0
  239. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/metadata.rs +0 -0
  240. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/audit_task.rs +0 -0
  241. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/log_merge.rs +0 -0
  242. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/metrics_task.rs +0 -0
  243. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/purge_tasks.rs +0 -0
  244. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler/vector_merge.rs +0 -0
  245. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/scheduler.rs +0 -0
  246. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/grpc.rs +0 -0
  247. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/query_language.rs +0 -0
  248. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/shard_selector.rs +0 -0
  249. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/shard_suggest.rs +0 -0
  250. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher/streams.rs +0 -0
  251. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/searcher.rs +0 -0
  252. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/segment_store.rs +0 -0
  253. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/settings.rs +0 -0
  254. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/telemetry/duration_layer.rs +0 -0
  255. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/telemetry/log_format.rs +0 -0
  256. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/telemetry/middleware.rs +0 -0
  257. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/telemetry.rs +0 -0
  258. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/tool.rs +0 -0
  259. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/src/utilization_tracker.rs +0 -0
  260. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/common/mod.rs +0 -0
  261. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/common/services.rs +0 -0
  262. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/date_range_search.rs +0 -0
  263. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/search_filtering.rs +0 -0
  264. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/search_relations.rs +0 -0
  265. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/search_sorting.rs +0 -0
  266. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/searcher_cluster.rs +0 -0
  267. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/security_search.rs +0 -0
  268. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/shards.rs +0 -0
  269. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/suggest.rs +0 -0
  270. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/synced_searcher.rs +0 -0
  271. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/vector_normalization.rs +0 -0
  272. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/integration/vectorsets.rs +0 -0
  273. {nidx_binding-6.10.0.post725 → nidx_binding-6.10.0.post732}/tests/test_integration.rs +0 -0
@@ -1023,6 +1023,12 @@ version = "0.1.5"
1023
1023
  source = "registry+https://github.com/rust-lang/crates.io-index"
1024
1024
  checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
1025
1025
 
1026
+ [[package]]
1027
+ name = "foldhash"
1028
+ version = "0.2.0"
1029
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1030
+ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
1031
+
1026
1032
  [[package]]
1027
1033
  name = "foreign-types"
1028
1034
  version = "0.3.2"
@@ -1263,7 +1269,7 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
1263
1269
  dependencies = [
1264
1270
  "allocator-api2",
1265
1271
  "equivalent",
1266
- "foldhash",
1272
+ "foldhash 0.1.5",
1267
1273
  ]
1268
1274
 
1269
1275
  [[package]]
@@ -1271,6 +1277,11 @@ name = "hashbrown"
1271
1277
  version = "0.16.1"
1272
1278
  source = "registry+https://github.com/rust-lang/crates.io-index"
1273
1279
  checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
1280
+ dependencies = [
1281
+ "allocator-api2",
1282
+ "equivalent",
1283
+ "foldhash 0.2.0",
1284
+ ]
1274
1285
 
1275
1286
  [[package]]
1276
1287
  name = "hashlink"
@@ -2002,6 +2013,15 @@ dependencies = [
2002
2013
  "hashbrown 0.15.5",
2003
2014
  ]
2004
2015
 
2016
+ [[package]]
2017
+ name = "lru"
2018
+ version = "0.16.3"
2019
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2020
+ checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593"
2021
+ dependencies = [
2022
+ "hashbrown 0.16.1",
2023
+ ]
2024
+
2005
2025
  [[package]]
2006
2026
  name = "lru-slab"
2007
2027
  version = "0.1.2"
@@ -2158,7 +2178,7 @@ dependencies = [
2158
2178
  "k8s-openapi",
2159
2179
  "kube",
2160
2180
  "lazy_static",
2161
- "lru",
2181
+ "lru 0.16.3",
2162
2182
  "nidx_paragraph",
2163
2183
  "nidx_protos",
2164
2184
  "nidx_relation",
@@ -4409,7 +4429,7 @@ dependencies = [
4409
4429
  "itertools 0.14.0",
4410
4430
  "levenshtein_automata",
4411
4431
  "log",
4412
- "lru",
4432
+ "lru 0.12.5",
4413
4433
  "lz4_flex",
4414
4434
  "measure_time",
4415
4435
  "memmap2 0.9.9",
@@ -31,7 +31,7 @@ tracing = "0.1.40"
31
31
  tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json"] }
32
32
  nidx_protos = { version = "0.1.0", path = "nidx_protos" }
33
33
  tonic = "0.12.3"
34
- lru = "0.12.5"
34
+ lru = "0.16"
35
35
  nidx_text = { version = "0.1.0", path = "nidx_text" }
36
36
  nidx_paragraph = { version = "0.1.0", path = "nidx_paragraph" }
37
37
  nidx_relation = { version = "0.1.0", path = "nidx_relation" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nidx_binding
3
- Version: 6.10.0.post725
3
+ Version: 6.10.0.post732
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -0,0 +1,2 @@
1
+ ALTER TYPE index_kind ADD VALUE 'vector_relation_node';
2
+ ALTER TYPE index_kind ADD VALUE 'vector_relation_edge';
@@ -2,8 +2,8 @@ syntax = "proto3";
2
2
 
3
3
  package nodereader;
4
4
 
5
- import public "nidx_protos/noderesources.proto";
6
5
  import "google/protobuf/timestamp.proto";
6
+ import public "nidx_protos/noderesources.proto";
7
7
  import public "nucliadb_protos/utils.proto";
8
8
 
9
9
  message StreamFilter {
@@ -17,18 +17,16 @@ message StreamFilter {
17
17
  repeated string labels = 2;
18
18
  }
19
19
 
20
-
21
20
  message Faceted {
22
21
  repeated string labels = 1;
23
22
  }
24
23
 
25
-
26
24
  message OrderBy {
27
25
  reserved 1;
28
26
 
29
27
  enum OrderType {
30
- DESC = 0;
31
- ASC = 1;
28
+ DESC = 0;
29
+ ASC = 1;
32
30
  }
33
31
  enum OrderField {
34
32
  CREATED = 0;
@@ -179,15 +177,31 @@ message GraphQuery {
179
177
  uint32 distance = 2;
180
178
  }
181
179
 
180
+ message VectorMatch {
181
+ repeated float vector = 1;
182
+ }
183
+
182
184
  oneof match_kind {
183
185
  ExactMatch exact = 5;
184
186
  FuzzyMatch fuzzy = 6;
187
+ VectorMatch vector = 7;
185
188
  }
186
189
  }
187
190
 
188
191
  message Relation {
189
192
  optional string value = 1;
190
193
  optional utils.Relation.RelationType relation_type = 2;
194
+
195
+ message ExactMatch {}
196
+
197
+ message VectorMatch {
198
+ repeated float vector = 1;
199
+ }
200
+
201
+ oneof match_kind {
202
+ ExactMatch exact = 3;
203
+ VectorMatch vector = 4;
204
+ }
191
205
  }
192
206
 
193
207
  message Path {
@@ -237,6 +251,8 @@ message GraphSearchRequest {
237
251
 
238
252
  optional utils.Security security = 5;
239
253
  optional FilterExpression field_filter = 6;
254
+
255
+ optional string graph_vectorset = 7;
240
256
  }
241
257
 
242
258
  message GraphSearchResponse {
@@ -260,6 +276,7 @@ message GraphSearchResponse {
260
276
  repeated utils.RelationNode nodes = 1;
261
277
  repeated Relation relations = 2;
262
278
  repeated Path graph = 3;
279
+ repeated float scores = 4;
263
280
  }
264
281
 
265
282
  message FilterExpression {
@@ -324,6 +341,7 @@ message SearchRequest {
324
341
  repeated float vector = 10; // Embedded vector search.
325
342
 
326
343
  string vectorset = 15;
344
+ optional string graph_vectorset = 30;
327
345
 
328
346
  bool paragraph = 12;
329
347
  bool document = 13;
@@ -351,7 +369,6 @@ message SearchRequest {
351
369
  GraphSearch graph_search = 29;
352
370
  }
353
371
 
354
-
355
372
  enum SuggestFeatures {
356
373
  ENTITIES = 0;
357
374
  PARAGRAPHS = 1;
@@ -368,7 +385,6 @@ message SuggestRequest {
368
385
  FilterOperator filter_operator = 9;
369
386
  }
370
387
 
371
-
372
388
  message SuggestResponse {
373
389
  int32 total = 1;
374
390
  repeated ParagraphResult results = 2;
@@ -167,7 +167,7 @@ message Resource {
167
167
  bool skip_paragraphs = 19;
168
168
 
169
169
  repeated RelationNodeVector relation_node_vectors = 20;
170
- repeated RelationVector relation_vectors = 21;
170
+ repeated RelationEdgeVector relation_edge_vectors = 21;
171
171
  }
172
172
 
173
173
  message RelationNodeVector {
@@ -175,7 +175,7 @@ message RelationNodeVector {
175
175
  repeated float vector = 2;
176
176
  }
177
177
 
178
- message RelationVector {
178
+ message RelationEdgeVector {
179
179
  utils.Relation.RelationType relation_type = 1;
180
180
  string relation_label = 2;
181
181
  repeated float vector = 3;
@@ -10,7 +10,7 @@ build-backend = "pdm.backend"
10
10
 
11
11
  [project]
12
12
  name = "nidx_protos"
13
- version = "6.10.0.post725"
13
+ version = "6.10.0.post732"
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" }]
@@ -1,3 +1,5 @@
1
+ use std::collections::HashMap;
2
+
1
3
  // Copyright (C) 2021 Bosutech XXI S.L.
2
4
  //
3
5
  // nucliadb is offered under the AGPL v3.0 and as commercial software.
@@ -23,7 +25,9 @@ use nidx_protos::graph_query::node::MatchLocation;
23
25
  use nidx_protos::relation::RelationType;
24
26
  use nidx_protos::relation_node::NodeType;
25
27
  use nidx_types::query_language::{BooleanExpression, BooleanOperation, Operator};
26
- use tantivy::query::{AllQuery, BooleanQuery, FuzzyTermQuery, Occur, Query, TermQuery, TermSetQuery};
28
+ use tantivy::query::{
29
+ AllQuery, BooleanQuery, BoostQuery, EmptyQuery, FuzzyTermQuery, Occur, Query, TermQuery, TermSetQuery,
30
+ };
27
31
  use tantivy::schema::{Facet, Field, IndexRecordOption};
28
32
  use tantivy::tokenizer::TokenizerManager;
29
33
 
@@ -43,6 +47,13 @@ pub enum Term {
43
47
  ExactWord(String),
44
48
  Fuzzy(FuzzyTerm),
45
49
  FuzzyWord(FuzzyTerm),
50
+ FromVectorQuery(String),
51
+ }
52
+
53
+ #[derive(Clone)]
54
+ pub enum RelationTerm {
55
+ Exact(String),
56
+ FromVectorQuery(String),
46
57
  }
47
58
 
48
59
  #[derive(Default, Clone)]
@@ -54,7 +65,7 @@ pub struct Node {
54
65
 
55
66
  #[derive(Default, Clone)]
56
67
  pub struct Relation {
57
- pub value: Option<String>,
68
+ pub label: Option<RelationTerm>,
58
69
  pub relation_type: Option<RelationType>,
59
70
  }
60
71
 
@@ -138,13 +149,23 @@ struct NodeSchemaFields {
138
149
  node_subtype: Field,
139
150
  }
140
151
 
152
+ #[derive(Default)]
153
+ pub struct VectorQueryResults {
154
+ pub nodes: HashMap<String, Vec<(String, f32)>>,
155
+ pub edges: HashMap<String, Vec<(String, f32)>>,
156
+ }
157
+
141
158
  pub struct GraphQueryParser<'a> {
142
159
  schema: &'a Schema,
160
+ vector_results: VectorQueryResults,
143
161
  }
144
162
 
145
163
  impl<'a> GraphQueryParser<'a> {
146
- pub fn new(schema: &'a Schema) -> Self {
147
- Self { schema }
164
+ pub fn new(schema: &'a Schema, context: VectorQueryResults) -> Self {
165
+ Self {
166
+ schema,
167
+ vector_results: context,
168
+ }
148
169
  }
149
170
 
150
171
  pub fn parse_bool(&self, query: BoolGraphQuery) -> Box<dyn Query> {
@@ -422,11 +443,12 @@ impl<'a> GraphQueryParser<'a> {
422
443
  let mut subqueries = vec![];
423
444
 
424
445
  match expression {
425
- Expression::Value(Relation { value, relation_type }) => {
426
- if let Some(value) = value
427
- && !value.is_empty()
428
- {
429
- subqueries.push((Occur::Must, self.has_relation_label(value)));
446
+ Expression::Value(Relation {
447
+ label: term,
448
+ relation_type,
449
+ }) => {
450
+ if let Some(term) = term {
451
+ subqueries.push((Occur::Must, self.has_relation_label(term)));
430
452
  };
431
453
 
432
454
  relation_type.map(|relation_type| {
@@ -434,11 +456,12 @@ impl<'a> GraphQueryParser<'a> {
434
456
  });
435
457
  }
436
458
 
437
- Expression::Not(Relation { value, relation_type }) => {
438
- if let Some(value) = value
439
- && !value.is_empty()
440
- {
441
- subqueries.push((Occur::MustNot, self.has_relation_label(value)));
459
+ Expression::Not(Relation {
460
+ label: term,
461
+ relation_type,
462
+ }) => {
463
+ if let Some(term) = term {
464
+ subqueries.push((Occur::MustNot, self.has_relation_label(term)));
442
465
  };
443
466
 
444
467
  relation_type.map(|relation_type| {
@@ -448,15 +471,10 @@ impl<'a> GraphQueryParser<'a> {
448
471
 
449
472
  Expression::Or(relations) => {
450
473
  subqueries.extend(relations.iter().flat_map(|relation| {
451
- if let Some(label) = &relation.value {
452
- if label.is_empty() {
453
- None
454
- } else {
455
- Some((Occur::Should, self.has_relation_label(label)))
456
- }
457
- } else {
458
- None
459
- }
474
+ relation
475
+ .label
476
+ .as_ref()
477
+ .map(|term| (Occur::Should, self.has_relation_label(term)))
460
478
  }));
461
479
  }
462
480
  };
@@ -465,9 +483,31 @@ impl<'a> GraphQueryParser<'a> {
465
483
  }
466
484
 
467
485
  fn has_node_value(&self, value: &Term, exact_field: Field, tokenized_field: Field) -> Option<Box<dyn Query>> {
486
+ if let Term::FromVectorQuery(key) = value {
487
+ let Some(keys) = self.vector_results.nodes.get(key) else {
488
+ return Some(Box::new(EmptyQuery));
489
+ };
490
+
491
+ return Some(Box::new(BooleanQuery::union(
492
+ keys.iter()
493
+ .map(|(value, score)| {
494
+ let q: Box<dyn Query> = Box::new(BoostQuery::new(
495
+ Box::new(TermQuery::new(
496
+ tantivy::Term::from_field_text(exact_field, &self.schema.normalize(value)),
497
+ IndexRecordOption::Basic,
498
+ )),
499
+ *score,
500
+ ));
501
+ q
502
+ })
503
+ .collect(),
504
+ )));
505
+ }
506
+
468
507
  let text_value = match value {
469
508
  Term::Exact(value) | Term::ExactWord(value) => value,
470
509
  Term::Fuzzy(fuzzy) | Term::FuzzyWord(fuzzy) => &fuzzy.value,
510
+ Term::FromVectorQuery(_) => unreachable!(),
471
511
  };
472
512
  if text_value.is_empty() {
473
513
  return None;
@@ -513,6 +553,7 @@ impl<'a> GraphQueryParser<'a> {
513
553
  ))
514
554
  }
515
555
  }
556
+ Term::FromVectorQuery(_) => unreachable!(),
516
557
  };
517
558
 
518
559
  Some(query)
@@ -533,11 +574,33 @@ impl<'a> GraphQueryParser<'a> {
533
574
  ))
534
575
  }
535
576
 
536
- fn has_relation_label(&self, label: &str) -> Box<dyn Query> {
537
- Box::new(TermQuery::new(
538
- tantivy::Term::from_field_text(self.schema.label, label),
539
- IndexRecordOption::Basic,
540
- ))
577
+ fn has_relation_label(&self, term: &RelationTerm) -> Box<dyn Query> {
578
+ match term {
579
+ RelationTerm::Exact(label) => Box::new(TermQuery::new(
580
+ tantivy::Term::from_field_text(self.schema.label, label),
581
+ IndexRecordOption::Basic,
582
+ )),
583
+ RelationTerm::FromVectorQuery(key) => {
584
+ let Some(keys) = self.vector_results.edges.get(key) else {
585
+ return Box::new(EmptyQuery);
586
+ };
587
+
588
+ Box::new(BooleanQuery::union(
589
+ keys.iter()
590
+ .map(|(value, score)| {
591
+ let q: Box<dyn Query> = Box::new(BoostQuery::new(
592
+ Box::new(TermQuery::new(
593
+ tantivy::Term::from_field_text(self.schema.label, &self.schema.normalize(value)),
594
+ IndexRecordOption::Basic,
595
+ )),
596
+ *score,
597
+ ));
598
+ q
599
+ })
600
+ .collect(),
601
+ ))
602
+ }
603
+ }
541
604
  }
542
605
 
543
606
  fn has_relation_type(&self, relation_type: RelationType) -> Box<dyn Query> {
@@ -703,7 +766,8 @@ impl TryFrom<&nidx_protos::graph_query::Node> for Node {
703
766
  // Default to exact match to keep backwards compatibility
704
767
  let match_kind = node_pb
705
768
  .match_kind
706
- .unwrap_or(nidx_protos::graph_query::node::MatchKind::Exact(
769
+ .as_ref()
770
+ .unwrap_or(&nidx_protos::graph_query::node::MatchKind::Exact(
707
771
  nidx_protos::graph_query::node::ExactMatch {
708
772
  kind: MatchLocation::Full as i32,
709
773
  },
@@ -745,6 +809,7 @@ impl TryFrom<&nidx_protos::graph_query::Node> for Node {
745
809
  is_prefix: true,
746
810
  }),
747
811
  },
812
+ nidx_protos::graph_query::node::MatchKind::Vector(_) => Term::FromVectorQuery(value),
748
813
  }
749
814
  });
750
815
 
@@ -764,8 +829,22 @@ impl TryFrom<&nidx_protos::graph_query::Relation> for Relation {
764
829
 
765
830
  fn try_from(relation_pb: &nidx_protos::graph_query::Relation) -> Result<Self, Self::Error> {
766
831
  let value = relation_pb.value.clone();
832
+ let term = value.map(|value| {
833
+ match relation_pb
834
+ .match_kind
835
+ .as_ref()
836
+ .unwrap_or(&nidx_protos::graph_query::relation::MatchKind::Exact(
837
+ nidx_protos::graph_query::relation::ExactMatch {},
838
+ )) {
839
+ nidx_protos::graph_query::relation::MatchKind::Exact(_) => RelationTerm::Exact(value),
840
+ nidx_protos::graph_query::relation::MatchKind::Vector(_) => RelationTerm::FromVectorQuery(value),
841
+ }
842
+ });
767
843
  let relation_type = relation_pb.relation_type.map(RelationType::try_from).transpose()?;
768
844
 
769
- Ok(Relation { value, relation_type })
845
+ Ok(Relation {
846
+ label: term,
847
+ relation_type,
848
+ })
770
849
  }
771
850
  }
@@ -57,6 +57,8 @@ use tantivy::{
57
57
  use tracing::{error, instrument};
58
58
  use uuid::Uuid;
59
59
 
60
+ use crate::graph_query_parser::VectorQueryResults;
61
+
60
62
  /// Minimum length for a word to be accepted as a entity to search for
61
63
  /// suggestions. Low values can provide too much noise and higher ones can
62
64
  /// remove important words from suggestion
@@ -211,8 +213,9 @@ impl RelationSearcher {
211
213
  &self,
212
214
  request: &GraphSearchRequest,
213
215
  prefilter: &PrefilterResult,
216
+ context: VectorQueryResults,
214
217
  ) -> anyhow::Result<GraphSearchResponse> {
215
- self.reader.graph_search(request, prefilter)
218
+ self.reader.graph_search(request, prefilter, context)
216
219
  }
217
220
 
218
221
  #[instrument(name = "relation::suggest", skip_all)]
@@ -253,7 +256,7 @@ impl RelationSearcher {
253
256
  }),
254
257
  ..Default::default()
255
258
  };
256
- let response = self.graph_search(&request, &PrefilterResult::All)?;
259
+ let response = self.graph_search(&request, &PrefilterResult::All, VectorQueryResults::default())?;
257
260
  Ok(response.nodes)
258
261
  }
259
262
 
@@ -30,7 +30,7 @@ use tantivy::{Index, IndexReader};
30
30
  use uuid::Uuid;
31
31
 
32
32
  use crate::graph_collector::{Selector, TopUniqueCollector};
33
- use crate::graph_query_parser::{BoolGraphQuery, BoolNodeQuery, GraphQueryParser};
33
+ use crate::graph_query_parser::{BoolGraphQuery, BoolNodeQuery, GraphQueryParser, VectorQueryResults};
34
34
  use crate::schema::{Schema, decode_node, decode_relation, encode_field_id};
35
35
  use crate::top_unique_n::TopUniqueN;
36
36
  use crate::{RelationConfig, io_maps};
@@ -99,6 +99,7 @@ impl RelationsReaderService {
99
99
  &self,
100
100
  request: &GraphSearchRequest,
101
101
  prefilter: &PrefilterResult,
102
+ context: VectorQueryResults,
102
103
  ) -> anyhow::Result<GraphSearchResponse> {
103
104
  // No query? Empty graph
104
105
  let Some(query) = &request.query else {
@@ -110,21 +111,23 @@ impl RelationsReaderService {
110
111
 
111
112
  let top_k = request.top_k as usize;
112
113
 
114
+ let parser = GraphQueryParser::new(&self.schema, context);
115
+
113
116
  match request.kind() {
114
- QueryKind::Path => self.paths_graph_search(query, prefilter, top_k),
115
- QueryKind::Nodes => self.nodes_graph_search(query, prefilter, top_k),
116
- QueryKind::Relations => self.relations_graph_search(query, prefilter, top_k),
117
+ QueryKind::Path => self.paths_graph_search(parser, query, prefilter, top_k),
118
+ QueryKind::Nodes => self.nodes_graph_search(parser, query, prefilter, top_k),
119
+ QueryKind::Relations => self.relations_graph_search(parser, query, prefilter, top_k),
117
120
  }
118
121
  }
119
122
 
120
123
  fn paths_graph_search(
121
124
  &self,
125
+ parser: GraphQueryParser,
122
126
  query: &nidx_protos::graph_query::PathQuery,
123
127
  prefilter: &PrefilterResult,
124
128
  top_k: usize,
125
129
  ) -> anyhow::Result<GraphSearchResponse> {
126
130
  let query = BoolGraphQuery::try_from(query)?;
127
- let parser = GraphQueryParser::new(&self.schema);
128
131
  let index_query = parser.parse_bool(query);
129
132
  let index_query = self.apply_prefilter(index_query, prefilter);
130
133
 
@@ -135,8 +138,9 @@ impl RelationsReaderService {
135
138
  let mut nodes = Vec::new();
136
139
  let mut relations = Vec::new();
137
140
  let mut graph = Vec::new();
141
+ let mut scores = Vec::new();
138
142
 
139
- for (_score, doc_address) in matching_docs {
143
+ for (score, doc_address) in matching_docs {
140
144
  let doc = searcher.doc(doc_address)?;
141
145
 
142
146
  let source = io_maps::source_to_relation_node(&self.schema, &doc);
@@ -157,25 +161,28 @@ impl RelationsReaderService {
157
161
  metadata: io_maps::decode_metadata(&self.schema, &doc),
158
162
  resource_field_id: io_maps::doc_to_resource_field_id(&self.schema, &doc),
159
163
  facets: io_maps::doc_to_facets(&self.schema, &doc),
160
- })
164
+ });
165
+
166
+ scores.push(score);
161
167
  }
162
168
 
163
169
  let response = nidx_protos::GraphSearchResponse {
164
170
  nodes,
165
171
  relations,
166
172
  graph,
173
+ scores,
167
174
  };
168
175
  Ok(response)
169
176
  }
170
177
 
171
178
  fn nodes_graph_search(
172
179
  &self,
180
+ parser: GraphQueryParser,
173
181
  query: &nidx_protos::graph_query::PathQuery,
174
182
  prefilter: &PrefilterResult,
175
183
  top_k: usize,
176
184
  ) -> anyhow::Result<GraphSearchResponse> {
177
185
  let query = BoolNodeQuery::try_from(query)?;
178
- let parser = GraphQueryParser::new(&self.schema);
179
186
  let (source_query, destination_query) = parser.parse_bool_node(query);
180
187
  let source_query = self.apply_prefilter(source_query, prefilter);
181
188
  let destination_query = self.apply_prefilter(destination_query, prefilter);
@@ -192,21 +199,21 @@ impl RelationsReaderService {
192
199
  let destination_nodes = searcher.search(&destination_query, &collector)?;
193
200
  unique_nodes.merge(destination_nodes);
194
201
 
195
- let nodes = unique_nodes
196
- .into_sorted_vec()
197
- .into_iter()
198
- .map(|(encoded_node, _score)| {
199
- let (value, node_type, node_subtype) = decode_node(&encoded_node);
200
- RelationNode {
201
- value,
202
- ntype: io_maps::u64_to_node_type(node_type),
203
- subtype: node_subtype,
204
- }
205
- })
206
- .collect();
202
+ let mut scores = vec![];
203
+ let mut nodes = vec![];
204
+ for (encoded_node, score) in unique_nodes.into_sorted_vec() {
205
+ let (value, node_type, node_subtype) = decode_node(&encoded_node);
206
+ scores.push(score);
207
+ nodes.push(RelationNode {
208
+ value,
209
+ ntype: io_maps::u64_to_node_type(node_type),
210
+ subtype: node_subtype,
211
+ });
212
+ }
207
213
 
208
214
  let response = nidx_protos::GraphSearchResponse {
209
215
  nodes,
216
+ scores,
210
217
  ..Default::default()
211
218
  };
212
219
  Ok(response)
@@ -214,12 +221,12 @@ impl RelationsReaderService {
214
221
 
215
222
  fn relations_graph_search(
216
223
  &self,
224
+ parser: GraphQueryParser,
217
225
  query: &nidx_protos::graph_query::PathQuery,
218
226
  prefilter: &PrefilterResult,
219
227
  top_k: usize,
220
228
  ) -> anyhow::Result<GraphSearchResponse> {
221
229
  let query = BoolGraphQuery::try_from(query)?;
222
- let parser = GraphQueryParser::new(&self.schema);
223
230
  let index_query = parser.parse_bool(query);
224
231
  let index_query = self.apply_prefilter(index_query, prefilter);
225
232
 
@@ -228,20 +235,21 @@ impl RelationsReaderService {
228
235
  let collector = TopUniqueCollector::new(Selector::Relations, top_k);
229
236
  let top_relations = searcher.search(&index_query, &collector)?;
230
237
 
231
- let relations = top_relations
232
- .into_sorted_vec()
233
- .into_iter()
234
- .map(|(encoded_relation, _score)| {
235
- let (relation_type, relation_label) = decode_relation(&encoded_relation);
236
- nidx_protos::graph_search_response::Relation {
237
- relation_type: io_maps::u64_to_relation_type::<i32>(relation_type),
238
- label: relation_label,
239
- }
240
- })
241
- .collect();
238
+ let mut scores = vec![];
239
+ let mut relations = vec![];
240
+
241
+ for (encoded_relation, score) in top_relations.into_sorted_vec() {
242
+ let (relation_type, relation_label) = decode_relation(&encoded_relation);
243
+ scores.push(score);
244
+ relations.push(nidx_protos::graph_search_response::Relation {
245
+ relation_type: io_maps::u64_to_relation_type::<i32>(relation_type),
246
+ label: relation_label,
247
+ });
248
+ }
242
249
 
243
250
  let response = nidx_protos::GraphSearchResponse {
244
251
  relations,
252
+ scores,
245
253
  ..Default::default()
246
254
  };
247
255
  Ok(response)