Commit Graph

3618 Commits

Author SHA1 Message Date
Andrey Vasnetsov
949376f240 universal io mmap (#8196)
* [manunal] WIP: universal mmap interface

* [AI + manual]  implement proper error handelling, with `thiserror` instead of `pub type
  UniversalIoError = std::io::Error;` and implement all `todo!()` in MmapUniversal

* [AI]  implement UniversalWrite for MmapUniversal

* review fix: error wording

* review nits

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2026-02-24 11:54:57 +01:00
Ivan Boldyrev
9bf8369a6a Use IdTrackerEnum type instead of dyn IdTracker (#8168)
* Use `IdTrackerEnum` type instead of `dyn IdTracker`

It would allow to be more flexible on the IdTracker trait, making it
dyn-incompatible eventually.

Coauthored with Claude Code.

* Review fixes
2026-02-24 10:53:23 +01:00
dependabot[bot]
9e5a5f8f8a build(deps): bump serial_test from 3.3.1 to 3.4.0 (#8204)
Bumps [serial_test](https://github.com/palfrey/serial_test) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v3.3.1...v3.4.0)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-24 09:31:36 +01:00
dependabot[bot]
f848bf627a build(deps): bump pyo3 from 0.28.1 to 0.28.2 (#8208)
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.28.1 to 0.28.2.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyo3/pyo3/compare/v0.28.1...v0.28.2)

---
updated-dependencies:
- dependency-name: pyo3
  dependency-version: 0.28.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-24 08:37:07 +01:00
Andrey Vasnetsov
e1b8c05786 [AI] do not extend file before write (#8195) 2026-02-23 16:50:14 +01:00
xzfc
488765007f Use qdrant-rust-stemmers from crates.io (#8199) 2026-02-23 15:22:59 +00:00
Ivan Pleshkov
9f1a6be223 Gridstore non-blocking flush (#8188)
* gridstore unblocked flush

* review remarks
2026-02-23 12:18:14 +01:00
krapcys1-maker
011b890e1e gpu: use c_char pointers for Vulkan names (#8177) 2026-02-23 12:05:56 +01:00
xzfc
e3021a9429 Move github.com/qdrant/wal into lib/wal (#8185)
* Copy github.com/qdrant/wal into lib/wal

Commit: c07fb56ebc8120ebe4e3c602d31ce98f356f4676 2026-02-18

* Clean cruft

* Integrate lib/wal into workspace

* Cargo fmt

* Fix clippy warnings

* Adhere to our conventions

* Fix codespell warnings
2026-02-20 18:02:20 +00:00
Roman Titov
9cad4a4381 Universal I/O (#8183)
* WIP: `UniversalRead`/`UniversalWrite` traits

* fixup! WIP: `UniversalRead`/`UniversalWrite` traits

Relax `Sized` requirement on `UniversalRead`
2026-02-20 18:15:01 +01:00
Roman Titov
05b6b8b9ff Expose field index operations in qdrant-edge-py (#8187) 2026-02-20 17:56:09 +01:00
Roman Titov
dca4ccc6d9 Use FsType::ExFat on non-Linux, so that Rust won't complain (#8186) 2026-02-20 11:43:29 +01:00
Daniel Boros
a52a6d91d5 refactor/opt (#8065)
* refactor: opt system

* feat: move tracker seperately

* feat: migrate opt logic to shards

* feat: add OptStrategy trait

* fix: missing drop

* fix: linter error

* fix: clippy errors

* fix: linter error

* fix: missing fns

* fix: linter

* fix: missing import

* fix: missing import

* fix: schema_gen imports

* chore: remove comment

* feat: add missing comments

* feat: restore optimize_segment_propagate_changes fn

* chore: move fs4 to workspace deps

* fix: compiler error

* chore: add import fixes

* feat: move optimzers to shard

* fix: clippy errors

* chore: restore tests and adjust them

* fix: linter issues

* fix: linter issue

* fix: remove CollectionResult where call is infallible

* fix: comment
2026-02-19 23:16:08 +01:00
Tim Visée
c73cf450e8 Bump dev version to 1.17.1-dev (#8161) 2026-02-19 13:36:14 +01:00
Arnaud Gourlay
6ea4e74f3d Optimize HNSW plain-search filtered allocation (#8175)
* Optimize HNSW plain-search filtered allocation

* keep comment
2026-02-19 10:58:37 +01:00
Andrey Vasnetsov
6e79f8bf02 Untagged Enum for FeedbackStrategy (#8171)
* [manual] make untagged enum for consistent API for FeedbackStrategy

* add #[validate(nested)]

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2026-02-18 16:55:47 +01:00
Tim Visée
e160308255 Don't lock Gridstore bitmask for full duration of flush (#8169) 2026-02-18 16:29:04 +01:00
Arnaud Gourlay
8970e7a560 Log peer version failing check (#8170)
* Log peer version failing check

* log peers without metadata

* please the rabbit
2026-02-18 14:36:56 +01:00
Leo Henon
b9f543dd4b Fix flaky test_cancel_optimization (#8159)
Co-authored-by: leohenon <77656081+lhenon999@users.noreply.github.com>
2026-02-18 14:07:58 +01:00
Andrey Vasnetsov
c7b63984ac Timeout for snapshot stream (#8166)
* [AI] Imeplement timeout for reading snapshot stream

* remove debug code

* [no-AI] fix error type and cancellation test(not the one which actually found the problem)
2026-02-18 11:04:42 +01:00
Tim Visée
efda48b0f7 Also bump prevent_unoptimized parameter in update handler (#8165) 2026-02-17 17:40:39 +01:00
Arnaud Gourlay
8813241975 Optimize process search results (#8163) 2026-02-17 15:42:18 +01:00
xzfc
4cabb7fd8e Merge io and memory into common (#8155)
* Unify parking_lot/arc_lock feature

* Move lib/common/{io,memory}/* -> lib/common/common/*

- Mmap-related items are grouped into `common::mmap` sub-module:
  - `memory/src/chunked_utils.rs`      -> `common/src/mmap/chunked.rs`
  - `memory/src/madvise.rs`            -> `common/src/mmap/advice.rs`
  - `memory/src/mmap_ops.rs`           -> `common/src/mmap/ops.rs`
  - `memory/src/mmap_type_readonly.rs` -> `common/src/mmap/mmap_readonly.rs`
  - `memory/src/mmap_type.rs`          -> `common/src/mmap/mmap_rw.rs`
- Filesystem-related items are grouped into `common::fs` sub-module:
  - `common/src/fs.rs`          -> `common/src/fs/sync.rs`
  - `io/src/file_operations.rs` -> `common/src/fs/ops.rs`
  - `io/src/move_files.rs`      -> `common/src/fs/move.rs`
  - `io/src/safe_delete.rs`     -> `common/src/fs/safe_delete.rs`
  - `memory/src/checkfs.rs`     -> `common/src/fs/check.rs`
  - `memory/src/fadvise.rs`     -> `common/src/fs/fadvise.rs`
- Rest is moved straight into `common`:
  - `io/src/storage_version.rs` -> `common/src/storage_version.rs`

The old `io` and `memory` are now hollow crates that re-export items
from `common`. These hollow crates will be removed in next commits.

* Replace uses of `io` and `memory` with new paths in `common`

Since `io` and `memory` are just re-exports of `common`, these
replacements are no-op.

* Remove `io` and `memory` crates
2026-02-17 10:58:59 +01:00
Arnaud Gourlay
cb533644c8 Optimize MmapPointToValues from_iter (#8158)
* Optimize MmapPointToValues from_iter

* fix const typo
2026-02-17 10:36:33 +01:00
dependabot[bot]
7bd1c8f339 build(deps): bump pyo3 from 0.28.0 to 0.28.1 (#8154)
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyo3/pyo3/compare/v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: pyo3
  dependency-version: 0.28.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 02:16:48 +00:00
dependabot[bot]
638d6c61a2 build(deps): bump arc-swap from 1.8.1 to 1.8.2 (#8146)
Bumps [arc-swap](https://github.com/vorner/arc-swap) from 1.8.1 to 1.8.2.
- [Changelog](https://github.com/vorner/arc-swap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vorner/arc-swap/compare/v1.8.1...v1.8.2)

---
updated-dependencies:
- dependency-name: arc-swap
  dependency-version: 1.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-17 02:15:15 +00:00
Andrey Vasnetsov
e9cd8f69a2 prevent proxy locking while snapshotting (#8131)
* [manual] do not lock proxy segmen while accessing wrapped segment

* fmt

* [manual] remove extra update lock
2026-02-16 10:16:00 +01:00
Leo Henon
d0e2f9471b Fix flaky test_rate_more_per_minute (#8135)
Co-authored-by: lhenon999 <77656081+lhenon999@users.noreply.github.com>
2026-02-15 16:49:42 +01:00
Tim Visée
b4a067e41f Relax resharding version check, don't require 1.16.4-dev or up (#8129) 2026-02-14 00:02:28 +01:00
Roman Titov
5bb06d9ec0 Fix too_many_internal_resets error (#8128)
Patch `tonic` and `hyper` crates to expose `max_local_error_reset_streams`,
and *disable* it when creating internal gRPC connections
2026-02-13 18:21:56 +01:00
Arnaud Gourlay
5ffc6a45a8 Remove update queue opnum from CollectionInfo (#8127) 2026-02-13 17:36:54 +01:00
Andrey Vasnetsov
0b68c7d0eb [manual] skip extra links indexing if vectors are deleted (#8125) 2026-02-13 13:58:42 +01:00
Andrey Vasnetsov
171b7cffba distributed optimization info (#8120)
* [AI] initial implementation

* [AI] review fixes

* [manaul] some small fix

* [AI] fix issue about serializing optional fields

* upd schema

* [manual] review fixes

* [manual] only ask updatable replicas about optimizations
2026-02-13 13:58:17 +01:00
Roman Titov
05011e81cd Ensure WAL and shard clocks consistency when creating shard snapshot (#8104) 2026-02-13 11:27:02 +01:00
Ivan Pleshkov
d8c8ba6b98 Dont lock WAL while serialization (#8093)
* dont lock WAL while serialization

* review remarks

* remove error log, its already logged in update worker
2026-02-12 16:34:22 +01:00
xzfc
bd9c87bbbe Add doc for #[pyclass_repr] (#8110) 2026-02-12 14:48:15 +00:00
tellet-q
3c5497e0d3 Add new stage in TransferStage (#8113)
* Add new stage to stream records transfers

* Report better names to users
2026-02-12 14:13:52 +01:00
Andrey Vasnetsov
e4bafb04f5 undeprecated vector conversions (#8114) 2026-02-12 13:34:55 +01:00
Arnaud Gourlay
a538a90de8 Fix update queue length aggregation (#8108) 2026-02-12 13:14:36 +01:00
Andrey Vasnetsov
538eb74a32 Limit number of Clocks (#8105)
* [manual] limit number of update clocks to 64 to prevent permanent overhead created by spikes

* explicit yield + fix tests

* Add explicit comment on why we yield async thread

* In resolve_wal_delta_randomized test fix clock cleanup and satisfy test

* Use tokio timeout

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2026-02-12 10:56:32 +01:00
Tim Visée
c63f9eef29 Fix stream records transfer data race, losing pending updates (#8103)
* Add integration test to assert all queued updates are also transferred

* Plunge update queue in stream records transfers

* Migrate existing plunger usages to new plunge helper

* Skip test if not compiled with staging flag

* Only send delay operation when staging feature is enabled

* Reformat

* Fix review remarks
2026-02-11 17:18:44 +01:00
Tim Visée
4822d1a3d9 Revert "Fix panic on startup with old storage, reenable old shard key format (#7564)" (#7565)
This reverts commit 84b2fb8793.

This reverts pull request <https://github.com/qdrant/qdrant/pull/7564>.
2026-02-11 17:18:28 +01:00
Luis Cossío
a43780941b [relevance feedback] add rest and grpc interfaces (#7399)
* add rest and grpc interfaces

Also handle inference for this query

* follow refactor from base branch

* renaming from Ms Cooper

* get started on validation testing

* more validations

* test equivalence with query when less than 2 feedback elements

* rename feedback query to relevance_feedback query

* fix extraction of context pairs

* rename feedback vector to example

* make coderabbit happier

* upd test

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2026-02-11 16:05:11 +01:00
Arnaud Gourlay
8222696f6c Add unused_async lint (#8102) 2026-02-11 14:50:33 +01:00
Andrey Vasnetsov
c1df532b45 non blocking reading from wal (#8101)
* move wal.lock.read into a spawn_blocking

* [AI] In the file with update_worker bloast the code, please try to move it out of the main function, so the function itself stay clean
2026-02-11 14:38:19 +01:00
Andrey Vasnetsov
688c65bf6f parse round floats as integers on payload indexing (#8100)
* parse round floats as integers on payload indexing

* use backward conversion to validate if float is actualy integerable

* fmt

* Use then_some

---------

Co-authored-by: timvisee <tim@visee.me>
2026-02-11 10:39:25 +01:00
Luis Cossío
a87c22f56b fix: handle score_threshold in Formula queries (#8097)
* handle `score_threshold` in Formula queries

* AI: add openapi test

prompt: Upload 4 points with a numeric payload, use the payload as the
score, and set a score threshold. We can assert which ids should be in
the result and which shouldn't
2026-02-10 17:28:27 -03:00
Andrey Vasnetsov
076aa13399 HTTPS snapshot links (#8095)
* [manual] generate snapshot download link with respect of enabled tls

* Simplify http(s) selection

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2026-02-10 18:13:15 +01:00
Andrey Vasnetsov
a610710e76 Avoid shards holder locks on snapshot (#8072)
* refactor shard.create_snapshot to own everything necessary in the future for snapshotting

* do not lock shards_holder and replica_set during snapshot

* separate locks and snapshot creation all the way down

* separate locks and snapshot creation even further on the local shard level

* final touches

* minor review fixes
2026-02-10 18:03:25 +01:00
dependabot[bot]
c418fb61b3 build(deps): bump flate2 from 1.1.8 to 1.1.9 (#8085)
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.8 to 1.1.9.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.8...1.1.9)

---
updated-dependencies:
- dependency-name: flate2
  dependency-version: 1.1.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 07:54:34 +01:00