Commit Graph
1624 Commits
Author SHA1 Message Date
Roman Titovandgenerall 7977dbf9e7 Python bindings for Qdrant on Edge (#7312)
* Qdrant Edge Python binding 🐍⛓️‍💥

* fixup! Qdrant Edge Python binding 🐍⛓️‍💥

Fix example + cleanup

* review: move QueryEnum + mark search as deprecated

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-11-14 12:27:28 +01:00
Arnaud Gourlay d5e04d15c7 Force flush when taking a snapshot to capture on-going batches (#7342) 2025-11-14 12:27:28 +01:00
xzfc 783c765d22 DiffConfig: replace serde-based impl with explicit impl (#7294)
* refactor: replace serde-based DiffConfig implementation with macro

* refactor: macroexpand impl_diff_config

* refactor: drop `merge` dependency as unused
2025-11-14 12:26:53 +01:00
Roman Titov 81834ec8a0 Qdrant on Edge prototype (#7170) 2025-11-14 12:26:52 +01:00
xzfc 6a2830db1c Use fs-err (#7319) 2025-11-14 12:26:51 +01:00
dependabot[bot]andtimvisee f940be4dd4 build(deps): bump anyhow from 1.0.99 to 1.0.100 (#7287)
* build(deps): bump anyhow from 1.0.99 to 1.0.100

Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.99 to 1.0.100.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.99...1.0.100)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-version: 1.0.100
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Inline formatting argument

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: timvisee <tim@visee.me>
2025-09-29 11:31:35 +02:00
1771696d55 slow requests log (#7188)
* wip: generalization trait for queries

* implement generalization for point operations

* fmt

* log priority queue

* wip: SlowRequestsListener

* fmt

* fix clippy

* simplify generalization

* fmt

* implement collection of requests profiles for update API

* implement API for viewing slow requests log

* add collection name to update worker

* add datetime to log

* fmt

* probabilistic counter of unique requests

* rename

* compute hash before converting into json value

* move logable out of generalizable

* fmt

* log query request

* fmt

* some fixes

* move measurement into local shard

* fmt

* upd openapi (not important)

* For enum variants, has discriminant

* Make SearchParams Copy

* Hash 0.0 and -0.0 the same

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Correctly hash enum variants and float values

* Hash through ordered float instead

* Fix priority queue not keeping longest request for hash

* SearchParams implements Copy

* Fix clippy warning

* Add unordered_hash_unique

* skip serialization if none

* Use OrderedFloat for hashing a float

* Use OrderedFloat for hashing a float

* only log updates if they are performed

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-09-29 11:31:11 +02:00
xzfcandgenerall 122430109d Integrate hnsw_with_vectors (#7232)
* StorageGraphLinksVectors::try_new, make GraphLinksVectorsLayout non-fallible

* Integrate hnsw_with_vectors

* remove unused function

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-09-29 11:30:43 +02:00
Arnaud Gourlay 6e26e1f4eb Fix phrase match to not match with unknown tokens (#7252)
* Fix phrase match to not match with unknown tokens

* add tests

* spelling
2025-09-29 11:30:25 +02:00
Andrey Vasnetsovandtimvisee 916703e1e5 Fix missing flush, flush before sync (#7263)
* add missed flush buffer

* For all BufWriters, wrap owned type and explicitly flush

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-29 11:30:25 +02:00
dependabot[bot] 350bf8a5f7 build(deps): bump serde-untagged from 0.1.8 to 0.1.9 (#7257)
Bumps [serde-untagged](https://github.com/dtolnay/serde-untagged) from 0.1.8 to 0.1.9.
- [Release notes](https://github.com/dtolnay/serde-untagged/releases)
- [Commits](https://github.com/dtolnay/serde-untagged/compare/0.1.8...0.1.9)

---
updated-dependencies:
- dependency-name: serde-untagged
  dependency-version: 0.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>
2025-09-29 11:30:24 +02:00
Arnaud Gourlay b8c567a20d Clippy 1.90 (#7253)
* Fix Clippy 1.90

* fmt
2025-09-29 11:29:50 +02:00
Arnaud Gourlay 57831a355c [strict-mode] Add max number of payload index count (#7222)
* [strict-mode] Add max number of payload index count

* improve docs and validation for StrictModeConfig

* fix from coderabbit

* test blocking access to payload indexes

* polish test
2025-09-29 11:29:50 +02:00
Tim Visée ff818fff52 Better immutable ID tracker load errors (#7240)
* Construct proper error when reading immutable ID tracker mapping fails

* Use new error builder for other use case too

* Even better error messages
2025-09-29 11:29:00 +02:00
Jojiiandtimvisee b737601a19 Bump segment version on {delete,update,upsert}-by-filter requests (#7157)
* Bump segment versions on *-by-filter operations to acknowledge WAL

* Assert exactly one segment with the new operation version

* Review remarks

* Separate segment version number to not affect partial snapshots

* Adjust unit test

* Remove old bump_segment_version implementations

* Clarify max_persisted_segment_version_overwrite in flush_all

* Move trait implementations - Clippy

* Apply segment bumping to all *-by-filter functions

* Remove AtomicOptionU64

* Update function name and comments

* Remove max condition, start with overwrite value

* Add assertion, can never have zero segments

* Make max_persisted_segment_version_overwrite monotonic with fetch_max

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-29 11:28:28 +02:00
Arnaud Gourlay 89cf6b282a Fix missing REST API Filter validations (#7218) 2025-09-29 11:28:28 +02:00
Arnaud Gourlay 338b683064 Fix missing API validation for MinShould (#7217) 2025-09-29 11:28:28 +02:00
Andrey VasnetsovandLuis Cossío db34245b54 make sure that grpc::Vector can always use new format (#7185)
* make sure that grpc::Vector can always use new format

* specify target version for ToDo

* Update lib/api/src/conversions/vectors.rs

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-09-29 11:28:28 +02:00
xzfc 111c1f8d76 HNSW: use new graph format during search (#7195)
* point_scorer: generic `Filters` -> non-generic `ScorerFilters`

point_scorer: rename FilteredQuantizedScorer -> FilteredBytesScorer

* Use ScorerFilters when appropriate

* {CustomQueryScorer,MetricQueryScorer}: SupportsBytes = True

* Add GraphLayersWithVectors::search_with_vectors

* Use GraphLayersWithVectors::search_with_vectors in HNSWIndex::search_with_graph

* Move `BoxCow` and `SimpleCow` to a common module

* Review remarks
2025-09-29 11:27:40 +02:00
xzfc c75bc7ca03 Fixup remaining PeerId anonymization (#7207) 2025-09-29 11:27:40 +02:00
Ivan Pleshkov a3d3da735d Enable BQ in appendable segments (#7145)
* Create and load for an appendable quantization

remove feature flag

more todo

review remarks

review remarks

* fix after rebase

* Enable BQ in appendable segments

* remove const placeholder

* fix after rebase

* fix after rebase

* fix config mismatch optimizer

* fix sq infinity loop

* add comment
2025-09-29 11:26:37 +02:00
xzfc a13f437607 CompressedWithVectors: include base/full vectors (#7171)
* Add VectorStorageEnum::{get_vector_bytes_opt, get_vector_layout}

* Update CompressedWithVectors format to include base vectors

* StorageGraphLinksVectors

* Clarify code
2025-09-29 11:26:37 +02:00
dependabot[bot] 808630b47b build(deps): bump procfs from 0.17.0 to 0.18.0 (#7200)
Bumps [procfs](https://github.com/eminence/procfs) from 0.17.0 to 0.18.0.
- [Release notes](https://github.com/eminence/procfs/releases)
- [Commits](https://github.com/eminence/procfs/compare/v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: procfs
  dependency-version: 0.18.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>
2025-09-29 11:26:16 +02:00
dependabot[bot] 5a9d3fd73b build(deps): bump geo from 0.30.0 to 0.31.0 (#7199)
Bumps [geo](https://github.com/georust/geo) from 0.30.0 to 0.31.0.
- [Changelog](https://github.com/georust/geo/blob/main/CHANGES.md)
- [Commits](https://github.com/georust/geo/compare/geo-0.30.0...geo-0.31.0)

---
updated-dependencies:
- dependency-name: geo
  dependency-version: 0.31.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>
2025-09-29 11:26:16 +02:00
Ivan Pleshkovandtimvisee 470c115334 Create and load for an appendable quantization (#7193)
* Create and load for an appendable quantization

remove feature flag

more todo

review remarks

review remarks

* fix after rebase

* Rename is_appendable to supports_appendable

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-29 11:26:01 +02:00
xzfc 4473d36834 Generic AccessPattern (#7166) 2025-09-29 11:26:00 +02:00
Ivan PleshkovandTim Visée de21202aa7 Quantization storage builder for chunked mmap (#7174)
* Quantization storage builder for chunked mmap

* fix after rebase

* Update lib/segment/src/vector_storage/quantized/quantized_chunked_mmap_storage.rs

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-09-29 11:25:31 +02:00
Ivan Pleshkov 64515043a9 Populate multivector quantization offsets (#7173) 2025-09-29 11:25:31 +02:00
Ivan Pleshkov 7426d57531 Dont use quantization in exact plain search (#7179) 2025-09-29 11:25:31 +02:00
Tim Visée 3ad5911634 Remove chunked mmap vectors mlock flag (#7165) 2025-09-29 11:24:57 +02:00
tellet-qandtimvisee 38c4d624f5 Add tests for immutable text index (#7153)
* Add unit test

* Flush text index deletes before reopening them

* Fix unused warning if compiling without RocksDB

* Add e2e test

---------

Co-authored-by: timvisee <tim@visee.me>
2025-09-29 11:24:40 +02:00
Andrey Vasnetsovandtimvisee f0b139f765 implement custom collection metadata (#7123)
* implement custom collection metadata

* persist metadata change

* Also unset a key in the test

---------

Co-authored-by: timvisee <tim@visee.me>
2025-08-26 13:20:08 +02:00
dependabot[bot] 860202203b build(deps): bump tinyvec from 1.9.0 to 1.10.0 (#7139)
Bumps [tinyvec](https://github.com/Lokathor/tinyvec) from 1.9.0 to 1.10.0.
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: tinyvec
  dependency-version: 1.10.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>
2025-08-26 13:20:07 +02:00
dependabot[bot] 58ecd46823 build(deps): bump io-uring from 0.7.9 to 0.7.10 (#7142)
Bumps [io-uring](https://github.com/tokio-rs/io-uring) from 0.7.9 to 0.7.10.
- [Commits](https://github.com/tokio-rs/io-uring/commits)

---
updated-dependencies:
- dependency-name: io-uring
  dependency-version: 0.7.10
  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>
2025-08-26 13:20:07 +02:00
dependabot[bot] 4b22051371 build(deps): bump charabia from 0.9.6 to 0.9.7 (#7140)
Bumps [charabia](https://github.com/meilisearch/charabia) from 0.9.6 to 0.9.7.
- [Release notes](https://github.com/meilisearch/charabia/releases)
- [Commits](https://github.com/meilisearch/charabia/compare/v0.9.6...v0.9.7)

---
updated-dependencies:
- dependency-name: charabia
  dependency-version: 0.9.7
  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>
2025-08-26 13:20:07 +02:00
Andrey Vasnetsov ee0fde72ce restore missed index laoding (#7133) 2025-08-26 13:20:06 +02:00
xzfc 008629b3f3 Misc fixes (#7134)
* PrimitiveVectorElement: use zerocopy

* PrimitiveVectorElement: also use zerocopy::FromBytes

* serialize_graph_links: back_index is Vec<PointOffsetType>

* for_each_link_with_vector: loosen lifetimes
2025-08-26 13:20:06 +02:00
xzfc 5e80d190ba Clean up GraphLayers::search_entry_on_level a bit (#6946)
review remarks

are you happy fmt

don't do unnecessary scoring
2025-08-26 13:19:38 +02:00
Ivan Pleshkov 9436e5456f chunked mmap as a quantization storage (#7116) 2025-08-26 13:19:36 +02:00
xzfc 55adf7fc3d Add memory::madvise::will_need_multiple_pages() (#7124) 2025-08-26 13:19:36 +02:00
xzfc 9e292a3d8e Remove unused GraphLinks::on_disk method (#7125) 2025-08-26 13:19:36 +02:00
Andrey VasnetsovandLuis Cossío 0ce667eee5 filter text any (#7100)
* internal implementation for filter any

* implement api for match `text_any`

* allow naive implementation of text match any

* dedup after kmerge + renames

* improve `expected_should_estimation`

* congruence test

* openapi test

* setup index in each test

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-08-26 13:18:36 +02:00
xzfc f040579646 Graph links serializer: avoid large intermediate allocations (#7118)
* Introduce io::file_operations::atomic_save

* Replace GraphLinksSerializer with serialize_graph_links
2025-08-26 13:18:36 +02:00
Ivan Pleshkov f12b17545e Remove quantization load from trait (#7113)
* remove quantization load

* refactor load

* fix fmt error

* fix clippy
2025-08-26 13:18:36 +02:00
Tim Visée c780d7557b In proxy segment, don't return deleted point versions (#7109)
* In proxy segment, don't return deleted point versions

More specifically, don't return a point version from the wrapped segment
if that point is already marked for deletion within the proxy.

* Do get wrapped segment point version if it's newer than soft delete

* Flatten function
2025-08-26 13:18:15 +02:00
Luis CossíoandAndrey Vasnetsov e379d78c3c Custom RRF k parameter (#7065)
* allow custom K parameter for RRF

* generate grpc docs and openapi

* use tagged type approach for parametrized fusions

* use params approach in grpc

* simplify api structure

* upd schema

* nits

* rest: parameterized rrf as query variant

* consistency in doc comments

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2025-08-26 13:18:02 +02:00
Ivan Pleshkov 9fca19f2dc Retrieve files list from quantization storage (#7095)
* Get files list from quantization

* fix ci
2025-08-26 13:17:46 +02:00
Ivan Pleshkov d379c476ed using quantization in plain segment (#7060) 2025-08-26 13:17:45 +02:00
dependabot[bot] 567a6b2b75 build(deps): bump anyhow from 1.0.98 to 1.0.99 (#7099) 2025-08-26 13:17:45 +02:00
Arnaud Gourlay ec38fa8039 bump test_get_storage_size value to accommodate MacOS change (#7103) 2025-08-26 13:17:44 +02:00