Commit Graph
100 Commits
Author SHA1 Message Date
Andrey Vasnetsov 2101fbdcec ignore shards with no active replicas (#7707) 2025-12-18 17:27:20 +01:00
Andrey Vasnetsov e7e8cd2b08 refactor replica set (#7706)
* peer-id change on snapshot recovery

* move peer state management into a dedicated file
2025-12-18 17:27:20 +01:00
Andrey Vasnetsovandcoderabbitai[bot] 2b27b19014 refactor update workers (#7642)
* refactor: move flush workers into a dedicated file

fmt

* move optimizer worker into a dedicated file

* move update worker into a dedicated file

* Update lib/collection/src/update_workers/optimization_worker.rs

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

* Update lib/collection/src/update_workers/optimization_worker.rs

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

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-18 17:26:55 +01:00
Andrey Vasnetsovandtimvisee e5290431e0 Explicit gracefull stop for LocalShard (#7640)
* sync function to ask to stop workers

fmt

update blocking_ask_workers_to_stop

* graceful shard stop on ShardReplicaSet changes

* make stop consuming

* implement graceful stop for replica set

* graceful shard stop in start_resharding_unchecked

* stop_gracefully fn on shard_holder

* collection graceful stop on delete

* explain when it is ok to shutdown

* fix tests and ensure blocking callsa are not called from async runtime

* fmt

* Annotate cancel safety for do_recover_from_snapshot function

* Minor comment nit

* make drop not wait on stop thread

* graceful stop in more tests

* graceful stop in more tests

* avoid background thread is shard was stopped gracefully

* annotate cancel safety

* fmt

* More cancel safety annotations

* Add two spawns to ensure cancel safety

---------

Co-authored-by: timvisee <tim@visee.me>
2025-12-03 10:23:25 +01:00
Andrey Vasnetsov e85329e94a remove unused function (#7586) 2025-11-25 11:16:01 +01:00
Andrey Vasnetsov f852aac448 rename common -> qdrant_common to avoid name with other python packages (#7571) 2025-11-25 11:15:50 +01:00
Andrey Vasnetsov 7d9ffe4553 fix default rescoring param choice for quantization rescoring (#7570) 2025-11-25 11:15:36 +01:00
Andrey Vasnetsov 90a4a1f422 await for consensus before unproxifying (#7558) 2025-11-25 11:15:22 +01:00
Andrey Vasnetsov adcda00405 avoid docstring comments for enum fields to make openapi nicer (#7538)
* avoid docstring comments for enum fields to make openapi nicer

* add more spaces
2025-11-14 20:45:33 +01:00
Andrey Vasnetsov 85852faeb4 remove java_outer_classname (#7539) 2025-11-14 20:45:28 +01:00
Andrey Vasnetsov fbcdc0cf13 Implement ReplicatePoints in grpc (#7536)
* implement ReplicatePoints in grpc

* move filter into a separate file
2025-11-14 16:21:05 +01:00
Andrey Vasnetsov 20826e0dc7 wal_pop: binary to remove latest entry of WAL (#7526)
* binary to remove latest entry of WAL

* fix clippy
2025-11-14 12:31:08 +01:00
217875dd61 more stop flags (#7531)
* add stopflag check into query_points of payload index

* propagate stopflag more

* fmt

* bench: compare better against no atomic

* use stoppable iter with IteratorExt

* clippy

* Add cancelled error helper

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:08 +01:00
Andrey Vasnetsov ca902efde3 allow initial_state in API (#7528) 2025-11-14 12:31:07 +01:00
Andrey Vasnetsovandtimvisee 17995c073f Mark legacy output vector fields deprecated (#7183)
* mark legacy output vector fields deprecated

* grpc docs

* Also mark legacy vector input fields as deprecated

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:07 +01:00
Andrey VasnetsovandTim Visée a7ce948275 implement shard key init state in grpc (#7522)
* implement shard key init state in grpc

* Update lib/api/src/grpc/proto/collections.proto

Co-authored-by: Tim Visée <tim+github@visee.me>

* sync grpc autogen

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-11-14 12:31:06 +01:00
Andrey Vasnetsovandtimvisee 749cf3b16c promotion integration test (#7511)
* test with background update process

* fmt

* remove unused imports

* Remove unused import

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:05 +01:00
Andrey Vasnetsov 536fbd0399 Fusion & MMR support in Edge (#7491)
* introduce rescore stage to handle fusion in shard properly

* make shard-stage and collection-stage rescoring explicit

* review fixes
2025-11-14 12:31:05 +01:00
Andrey Vasnetsovandtimvisee c8975ca64c simple integration test for tenant promotion (#7503)
* simple integration test for tenant promotion

* add cleanup after promotion

* When switching to ReadActive state, set it for the correct peer ID

* fix test

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:05 +01:00
Andrey Vasnetsovandtimvisee 3556f7b52a remove filter level jwt (#7450)
* make jwt with payload filter fail

* remove `whole` access requirement

* remove unnecessary mut

* fmt

* adjust test

* fix test

* remove more tests

* fix test

* fix test again

* fix test again

* Replace deprecated PayloadConstraint with JSON Value placeholder

* Fix expect message

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:03 +01:00
Andrey Vasnetsov 6257371413 remove init_from (#7454)
* wip: remove init_from

* remove init_from tests

* upd schema

* rm test
2025-11-14 12:30:16 +01:00
Andrey Vasnetsov 2a423d1f11 remove lock api (#7449)
* remove lock api

* fix api count + remove tests

* remove another test

* remove more tests
2025-11-14 12:30:16 +01:00
Andrey Vasnetsov fa7bd8677f Move Query Context into shard crate (#7459)
* Move modifier to segment level

* write idf modifier into segment config

* fmt

* use proper query context in edge

* simplify init_query_context
2025-11-14 12:30:13 +01:00
Andrey VasnetsovandTim Visée 1d42b091b5 Implement logging of slow requests for scroll, facet, count, and retrieve (#7291)
* reorder arguments of scroll_by

* add slow request log for scroll request

* add slow request log for facet request

* add slow request log for count request

* add slow request log for retrieve request

* Remove obsolete clone

* generic implementation of Loggable for Arc

* Refactor scroll by arguments (#7296)

* separate internal scroll operation from the one used by user

* fmt

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-11-14 12:30:12 +01:00
Andrey Vasnetsovandcoderabbitai[bot] c74609c0c8 rate limit slow request warning queue (#7434)
* rate limit slow request warning queue

* Update lib/collection/src/profiling/slow_requests_collector.rs

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

* fmt

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-14 12:29:35 +01:00
Andrey VasnetsovandLuis Cossío b219a61119 derive Eq for Filter (and underlying types) (#7419)
* derive Eq for Filter (and underlying types)

* fix tests

* use ptr to compare and hash CustomIdChecker

* fix gpu test

* fmt

* use OrderedFloat directly

* post-rebase fixes

* fmt

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-11-14 12:29:34 +01:00
Andrey Vasnetsov 6b1c0557b8 implement all point update operation constructors (#7424) 2025-11-14 12:29:34 +01:00
Andrey Vasnetsov 3cd1d00b4b edge filter conversions (#7423)
* initial filter conversion structure

* implement match conditions

* implement range condition

* implement filter condition

* implement geo conditions

* fmt

* finish field conditions

* implement more conditions

* implement nested + expose python exports

* fix spelling
2025-11-14 12:29:33 +01:00
Andrey Vasnetsov 0c030543b8 rollback pyvector implementation (#7422) 2025-11-14 12:29:33 +01:00
Andrey Vasnetsov e0036e4fcc use mutex to ensure sequential segment flushed + await on drop (#7416) 2025-11-14 12:29:33 +01:00
Andrey Vasnetsov a219ff83e2 bump WAL commit (#7413) 2025-11-14 12:29:33 +01:00
Andrey Vasnetsovandtimvisee 065da9060b async update operation (#7407)
* make update worker async

* fix missing async signal send

* Simplify and flatten update worker internals

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:32 +01:00
Andrey Vasnetsovandtimvisee 2aecef294f make flush worker loop async (#7405)
* make flush worker loop async

* await flush worker properly finishes

* simplify flush await

* Improved future select, inline return

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:31 +01:00
Andrey Vasnetsov c3dca29ba3 address parallel flushing problem in snapshot creation (#7404)
* address parallel flushing problem in snapshot creation

* explicit flush in test
2025-11-14 12:29:31 +01:00
Andrey Vasnetsovandtimvisee 01de0a3a7b single thread flush (#7388)
* flush all segments in one thread sequentially

* bonus: move flush-related functions into dedicated file

* Minor comment tweaks

* await for flush on segment holder level

* fmt

* Minor improvement, preallocate vector for payload index flushers

* Remove invalid comment

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:31 +01:00
Andrey Vasnetsovandtimvisee aa37a52a54 add test for shard recovery after partial flush (#7402)
* add test for shard recovery after partial flush

* force flush with explicit fucntion

* Stop flush worker before explicitly flushing again

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:31 +01:00
Andrey Vasnetsovandtimvisee 18dcfaa5a9 fix segment repair on load (#7400)
* fix segment repair on load

* workaround for rocksdb

* Minor comment tweaks

* In in memory ID tracker, unset version first before dropping mapping

* rename cleanup_versions into fix inconsistencies

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:31 +01:00
Andrey Vasnetsovandtimvisee 88060abb82 remove default explicit config for strict mode (#7369)
* remove default explicit config for strict mode

* Don't prefix commented out properties with space to remain consistent

* Don't crash test if strict mode config is not set at all

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:28:13 +01:00
226cf78236 non appendable proxies (#7345)
* WIP: make proxy segment non-appendable

* make deleted points and index changes private to Proxy Segment

* consistently remove empty unused segment from holder on unproxifying and the end of optimization

* remove/fix obsolete test

* Fix comment, some general adjustments

* Also don't remove non-original segments

* Use ahash for map of proxy index changes

* Inline format arguments

* Simplify has point branching

* Assert that proxy flushes to latest wrapped segment version

* make vector deletetion a CoW operation

* relax debug assertions

* Update lib/shard/src/proxy_segment/mod.rs

* fix test_partial_snapshot_empty

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
2025-11-14 12:28:13 +01:00
Andrey Vasnetsov 51b3a62977 edge retrieve api (#7344)
* refactor: move RecordInternal into Shard crate

* refactor: move retrieve_blocking into Shard crate

* implement retrieve method + move some structures into dedicated files
2025-11-14 12:27:29 +01:00
Andrey VasnetsovandTim Visée 6614972d69 smaller update batch size (#7320)
* make update batch smaller to prevent long blocks

* limit vector update operations as well

* limit update chunk for point upsertion

* Fix typo

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-09-29 14:30:59 +02:00
Andrey Vasnetsov f94b248914 Use former scroll_lock to prevent parallel updates during snapshot (#7306)
* separate snapshot-related functions into a new file

* move out snapshot-related function in local shard

* move snapshot test to local shard level

* move snapshot_all_segments and proxy_all_segments_and_apply to local shard

* use former scroll update lock to prevent snapshot operations overlapping with updates

* review fixes: rename all scroll_lock, use write lock for unproxy instead of read
2025-09-29 11:32:10 +02:00
Andrey Vasnetsov 5b84dbdae0 log requests by type (#7292)
* store slow request log per request type

* filter by request name in API

* review fixes
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
Andrey Vasnetsov 4695549910 fix strict mode validation for nested filters (#7264)
* fix strict mode validation for nested filters

* fix test
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
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
Andrey Vasnetsov ae4ab0f63f refactor matrix api to use query instead of deprecated search (#7215) 2025-09-29 11:28:28 +02:00
Andrey Vasnetsov d406d83f57 do not anonymize peer id (#7177) 2025-09-29 11:25:32 +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
Andrey Vasnetsov ee0fde72ce restore missed index laoding (#7133) 2025-08-26 13:20:06 +02:00
Andrey Vasnetsovandxzfc 80ff2879ff measure disk size of directories if available (#7120)
* measure disk size of directories if available

* review suggestions

* Update comment

---------

Co-authored-by: xzfc <xzfcpw@gmail.com>
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
Andrey Vasnetsov a923174603 do not skip empty histogram values + remove too small buckets (#7073)
* do not skip empty histogram values + remove too small buckets

* fix tests and remove some more values from the histogram

* remove redundant test
2025-08-26 13:16:38 +02:00
9c8ef5574f Update if (#7006)
* implement condition parameter for upsert operation

* fmt

* update api schema

* implement conditional update for update-vectors op

* rename to update_filter for consistency

* add tests

* explicilty ignore strict mode for conditional updates

* rabbit review fix

* Also assert vector element before, confirm we don't normalize

* Simplify filter creation using new helper

* Rename merge_with_ids to with_point_ids

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
2025-08-26 13:16:18 +02:00
Andrey Vasnetsov fe946f4ac9 Fix bm25 params (#7056)
* make bm25 parameters compatible with default fastembed params

* bm25 params in openapi schema

* fmt

* improve bm25 config deserialization

* more explicit docstring for disabling english
2025-08-14 14:30:39 +02:00
Andrey Vasnetsov d70ba74b97 add example of multi-node docker-compose file for easier experiemnting (#6953)
* add example of multi-node docker-compose file for easier experiemnting

* rename peers and add healthcheck
2025-08-11 13:17:27 +02:00
Andrey Vasnetsov 92fdc5bd79 HardwareUsage -> Usage (#6967) 2025-08-11 13:16:00 +02:00
Andrey Vasnetsov af7ab5b192 bump version to v1.15.1 (#6934) 2025-07-24 09:34:36 +02:00
Andrey Vasnetsov b279aefde6 wait-for instead of validate (#6899) 2025-07-24 08:46:44 +02:00
Andrey Vasnetsov 82508fd34a Fix PointId Hash (#6932)
* fmt

* clippy
2025-07-24 08:46:40 +02:00
Andrey Vasnetsov 6c9e12f948 UUID index bug (#6916)
* reproduce bug as unit test

* reproduce in even faster unit test

* fix alignment in mmap_hashmap

* clippy

* review fixes
2025-07-24 08:46:26 +02:00
Andrey Vasnetsov 75ac92b75a check for empty collection data (#6910) 2025-07-24 08:45:11 +02:00
Andrey Vasnetsov f7120b01cd upd logs (#6894)
* upd logs

* upd
2025-07-17 14:33:22 +02:00
Andrey Vasnetsov d22debcaf3 lowercase stemmer language for consistency (#6889) 2025-07-17 14:02:14 +02:00
Andrey Vasnetsov 585034c270 fix cardinality estimation for has id (#6854)
* fix segment-specific cardinality estimation

* fmt
2025-07-17 13:56:15 +02:00
Andrey Vasnetsov 40cdaeaa5a Adjust default values for better performance (#6844)
* adjsut default values for better performance

* upd openapi
2025-07-17 13:54:50 +02:00
Andrey VasnetsovandArnaud Gourlay 6bc7f9c650 fix check for pure primary condition filter (#6840)
* fix check for pure primary condition filter

* avoid cloning has_id for primary condition

* fix test

* add test

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2025-07-17 13:54:43 +02:00
Andrey Vasnetsov d662e36af9 rename stemming -> stemmer (#6827)
* rename stemming -> stemmer

* docs
2025-07-17 13:52:14 +02:00
Andrey Vasnetsov 66a6a61418 add retries to curl (#6820) 2025-07-17 13:49:12 +02:00
Andrey Vasnetsov 679b53a776 add flag to break optimization loop on panic (#6787)
* WIP: add flag to break optimization loop on panic

* notification on manual budget change only

* move check for disk size before creting a temp segment
2025-07-17 13:47:20 +02:00
Andrey VasnetsovandArnaud Gourlay b858cc54b3 Optimize detect when primary condition is sufficient review (#6794)
* Optimize payload filtering to avoid redundant matching

* No boxing

* review suggestions

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2025-07-17 13:43:46 +02:00
Andrey VasnetsovandTim Visée 310c717d95 use sequential reads for building quantized vectors (#6796)
* use sequential reads for building quantized vectors

* populate vector storages before indexing

* consistent naming

* Update lib/segment/src/fixtures/index_fixtures.rs

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-07-17 13:42:35 +02:00
Andrey VasnetsovandTim Visée 226e03d668 inference errors (#6759)
* fix error handling in inference

* fmt

* Update src/common/inference/service.rs

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-07-17 13:33:34 +02:00
Andrey Vasnetsov 7d2fbb0d4c remove max indexing threads from config (#6760)
* remove max_optimization_threads from config.yaml

* fmt
2025-07-17 13:29:24 +02:00
Andrey VasnetsovandTim Visée 907da3409e check if we try to deactivate last initializing replica (#6755)
* check if we try to deactivate last initializing replica

* consider more cases

* Update lib/collection/src/shards/replica_set/mod.rs

Co-authored-by: Tim Visée <tim+github@visee.me>

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2025-07-17 13:26:51 +02:00
Andrey Vasnetsov b466b7f193 use indexed vectors instead of available points for IDF computation (#6739) 2025-07-17 13:20:55 +02:00
Andrey Vasnetsovandxzfc 8b5f2a3316 check if the quantization config changed in order to evaluate if we can re-use HNSW index (#6726)
* check if the quantization config changed in order to evaluate if we can re-use HNSW index

* Touch up

---------

Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-07-17 13:16:35 +02:00
20e58d50e9 check filesystem on start (#6682)
* check filesystem on start and do some simple mmap test to make sure it is persisted

* fmt

* fix fs type read on non-linux

* feature-flag for fs-check supported platforms + fs check with sub-folder

* fmt

* try larger magic file

* minor fixes

* fix compile on windows

* Add FAT, exFAT and APFS file systems

* Update lib/common/memory/src/checkfs.rs

Co-authored-by: Tim Visée <tim+github@visee.me>

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Tim Visée <tim+github@visee.me>
2025-07-17 13:10:15 +02:00
Andrey Vasnetsov 52ca4fffc5 Merge pull request #6479
* refactor build_filtered_graph

* utils

* fmt

* implement connectivity estimation

* Improve connectivity check in HNSW index (#6571)

* Use BitVec::fill instead of our custom function
2025-07-17 11:22:33 +02:00
Andrey Vasnetsov 3f6c909057 Fix default replication factor (#6632) 2025-07-17 11:22:12 +02:00
Andrey Vasnetsov 9054a872ac use id-tracker to estimate internal points range (#6593) 2025-07-17 11:02:39 +02:00
generall a546e0dda5 Revert "Update logo.svg"
This reverts commit ff8da874e0.
2025-07-12 14:01:14 +02:00
Andrey Vasnetsovandtimvisee 530430fac2 Bump version to v1.14.1 (#6584)
* bump v1.14.1

* Update missed cherry picks

---------

Co-authored-by: timvisee <tim@visee.me>
2025-05-23 12:02:04 +02:00
Andrey Vasnetsov ab3bf7bb24 register payload index fields on recovering snapshot (#6582) 2025-05-22 23:27:34 +02:00
Andrey Vasnetsov 1cce749daf do not lock payload schema for too long (#6574)
* do not lock payload schema for too long

* fix tests
2025-05-22 23:25:38 +02:00
Andrey Vasnetsov 7872c182f1 Strict mode error is now 400 instead of 403 (#6560)
* strcit mode error is now 400 instead of 403

* fix test
2025-05-22 23:22:16 +02:00
Andrey Vasnetsovandtimvisee 3501e4b7fe Add setting to limit max number of collections (#6548)
* add setting to limit max number of colelctions

* upd openapi

* Add max_collections to config

---------

Co-authored-by: timvisee <tim@visee.me>
2025-05-22 23:21:00 +02:00
Andrey Vasnetsov e7eff59e49 Use single-file mmap for non-appendable segments with vectors on-disk (#6506)
* Use single-file mmap for non-appendable segments with vectors on-disk

* remove useless comment
2025-05-22 23:11:21 +02:00
Andrey VasnetsovandJojii 2fe62d4b7e Batched reader for segment construction (#6487)
* naive implementation of batched reader for segment construction

* Make reads sequential in BatchedVectorReader (#6508)

* Add sequential reads and improve BatchedVectorReader

* implement get_many_sequential

---------

Co-authored-by: generall <andrey@vasnetsov.com>

* implement get_many_sequential

---------

Co-authored-by: Jojii <15957865+JojiiOfficial@users.noreply.github.com>
2025-05-22 23:07:39 +02:00
Andrey Vasnetsov e32deb4d5c Update points_internal_api.rs (#6457) 2025-05-22 22:55:55 +02:00
Andrey Vasnetsov f1884161cc Faster wal-delta transfer (#6458)
* implement internal batch-update api

* use batch update in wal-delta

* fix ci
2025-05-22 22:53:56 +02:00
Andrey Vasnetsov 492bf0387b careful index creation (#6403)
* make sure to delete existing index, if it is not compatible with a new one

* fmt

* fix tests

* review fixes
2025-05-22 22:48:39 +02:00
Andrey Vasnetsov ebdb26841e fill ready-list after initial CPU build (#6410) 2025-04-22 10:18:46 +02:00
Andrey Vasnetsov 9eab25fc75 bump v1.14.0 (#6404) 2025-04-21 12:17:44 +02:00
Andrey Vasnetsov 83b106eedb rollback disabling of debug symbols (#6402) 2025-04-21 00:12:50 +02:00
bbea80e7d4 Telemetry improvements (#6390)
* allow shard states in anonymize telemetry (with hashed peer ids)

* introduce level3 and level4 for telemetry, where level4 = everything, incl. segments info

* upd openapi

* fix tests

* expose vector count & size stats on shard level to avoid reading of segments

* fix spelling

* upd schema

* fix tests

* Use unwrap_or_default

* [#6390] skip serializing shard details in Level2 (#6398)

* skip serializing shard details in Level2

* upd openapi

---------

Co-authored-by: generall <andrey@vasnetsov.com>

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
2025-04-21 00:10:28 +02:00
a9795f7ce4 faster mmap numeric index (#6381)
* wip: attempt to investigate slow mmap numeric index

* fmt

* Improve performance of ConditionedCounter (#6384)

* Improve Performance of ConditionedCounter

* Remove unneeded hw_counter from signatures

* Clippy

* Fix Clippy II

* Fix Clippy III

* Fix Clippy IV

* Use static string, don't allocate string

* Remove allow dead code attribute

---------

Co-authored-by: Jojii <15957865+JojiiOfficial@users.noreply.github.com>
Co-authored-by: timvisee <tim@visee.me>
2025-04-21 00:07:08 +02:00
Andrey Vasnetsovandtimvisee 2b86a4b020 Fix update wrapper (#6383)
* fix flush routine for persistent wrappers

* fmt

* rollback changes for write-only wrappers

* Use retain to drop flushed items

* Rename function

---------

Co-authored-by: timvisee <tim@visee.me>
2025-04-21 00:05:56 +02:00
Andrey Vasnetsov 6e0ddbafa9 disk cache hygiene (#6323)
* wip: implement explicit populate and clear_cache functions for all components

* fmt

* implement clear and populate for vector storages

* fmt

* implement clear and populate for payload storage

* wip: implement explicit populate and clear_cache functions payload indexes

* implement explicit populate and clear_cache functions payload indexes

* fix clippy on CI

* only compile posix_fadvise on linux

* only compile posix_fadvise on linux

* implement explicit populate and clear_cache functions for quantized vectors

* fmt

* remove post-load prefault

* fix typo

* implement is-on-disk for payload indexes, implement clear on drop for segment, implement clear after segment build

* fmt

* also evict quantized vectors after optimization

* re-use and replace advise_dontneed
2025-04-20 23:54:40 +02:00