Commit Graph

611 Commits

Author SHA1 Message Date
Arnaud Gourlay
70b8623bb1 Add timeout to cancel metrics and telemetry calls (#7579)
* Add timeout to cancel metrics and telemetry calls

* relax constraints

* Configure timeout default in OpenAPI schema

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-25 12:56:45 +01:00
Tim Visée
4da01d375d Actively migrate away from RocksDB for vector/payload storage and index (#7551)
* Actively migrate away from RocksDB for vector/payload storage and index

* Update OpenAPI spec
2025-11-25 11:15:15 +01:00
Tim Visée
0d79528705 Bump version to 1.16.0 (#7535)
* Bump version to 1.16.0

* Update missed cherry picks

* Update redoc to 1.16.0
2025-11-17 12:10:37 +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
ca902efde3 allow initial_state in API (#7528) 2025-11-14 12:31:07 +01:00
Kyamran
931db002a5 Fix docs/DEVELOPMENT.md (#7518) 2025-11-14 12:31:07 +01:00
Andrey Vasnetsov
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
Jojii
0f191bfcf6 Metrics for snapshots (#7497)
* Add atomic counter for running snapshots

* Refactor collection telemetry + export prometheus metric

* Handle collection in ToC + current recovery measurements

* Fix openapi tests

* Fix tests

* Add snapshot metrics for streaming and partial snapshots.

* Fix typo in metrics name

* Adjust metrics names

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:31:06 +01:00
Tim Visée
6b39ff1353 Add ReadActive replica state, use in some stream records transfers (#7474)
* Add ReadActive replica state

* Add consensus function to switch from Partial to ReadActive and confirm

* On stream records to a different shard ID, switch to ReadActive first

* Update OpenAPI spec

* In stream records peer sync, require all peers to be up-to-date

* Review fixes

* Rename ReadActive to ActiveRead

* update openapi spec

* explicit state checking functions

* typo

* update fallback routing with usage of a new state

---------

Co-authored-by: KShivendu <kshivendu1@gmail.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2025-11-14 12:31:04 +01:00
Ivan Pleshkov
f8b607c2ab Enable appendable quantization by default (#7508)
* enable appendable quantization by default

* update openapi
2025-11-14 12:31:04 +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
Tim Visée
2e239d5b58 Skip RocksDB for mutable payload index and payload storage (#7433)
* For mutable payload index, don't create with RocksDB anymore

* For payload storage, don't create with RocksDB anymore

* Add missing dot

* Update OpenAPI spec
2025-11-14 12:30:16 +01:00
Jojii
df2b1c6232 Metrics vectors by name per collection (#7441)
* Add vector count per vector-name to metrics API

* Add to metrics API

* Improve TinyMap::get_or_insert_default and add tests

* Minor improvements

* Update openapi

* Review remarks

* Remove `collection_vectors` since it can be calculated manually
2025-11-14 12:30:15 +01:00
Jojii
40acac3c37 Add unindexed vectors to telemetry and metrics API (#7307)
* New metric for excluded vectors in indexed_only requests

* Make metric name align with prometheus naming convention

* Fix nit

* Fix tests

* Fix openapi

* Rename index_only into indexed_only

---------

Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:30:15 +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
Kumar Shivendu
cda75c7ea0 Introduce fallback shard key for read and write requests (#7356)
* Allow passing fallback shard key on request level

* clippy & fmt

* Check target shard key replica states for routing

* fmt

* clippy

* Add shard fallback in gRPC

* updates

* clippy fix

* Check for empty replicas

* review: validate grpc shard key selector with fallback

* write routing logic (doesnt work yet)

* Don't hold shard holder guard for too long

---------

Co-authored-by: generall <andrey@vasnetsov.com>
Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:30:13 +01:00
xzfc
c90d138902 Drop docs/grpc/docs.md (#7453) 2025-11-14 12:30:13 +01:00
xzfc
21329ca529 Add ACORN-1 search (#7414)
* GraphLayersBase::try_for_each_link

* Add FilteredScorer::score_points_unfiltered

* Add GraphLayersBase::search_on_level_acorn()

* Add SearchParams::acorn API parameter

* Integrate ACORN to HNSW search

* Add doc

* review fixes

* Misc fixes

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-11-14 12:30:12 +01:00
Kumar Shivendu
c31593bdab Introduce replicate points action (#7063)
* Introduce new replicate points action

* fmt

* Introduce filter in shard transfer and new transfer method

* clippy & fmt

* Update OpenAPI specs and gRPC API

* Update gRPC docs

* Take from/to shard key as input for replicate_points

* update gRPC docs

* Make filters optional

* fmt

* clippy

* drop FilteredStreamRecords

* Add validation

* update gRPC docs

* Drop FIlteredStreamRecords

* clippy

* update openapi spec

* review fixes

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-11-14 12:29:34 +01:00
Luis Cossío
62bea0d7b5 [relevance feedback] add variant to query enum and internal service (#7368)
* add feedback variant to query enum and internal service

remove internal service Feedback structs for QueryEnum

* rename Linear -> Simple

* follow refactor from base branch

* remove outdated validations

* remove reintroduced code

* use explicit From
2025-11-14 12:29:34 +01:00
eltu
d6d52d4b81 Full-Text Index ASCII Folding (Normalization) (#7408)
* Add ASCII folding to tokenization process

Introduced an optional ASCII folding feature within the `TokensProcessor` to normalize non-ASCII characters to their ASCII equivalents. Updated tests and documentation to reflect the changes.

* Refactor tokenization code for improved readability and maintainability

Reorganized and reformatted the tokenization module, including `TokensProcessor` initialization and ASCII folding mappings for better clarity. Updated tests to align with the changes.

* Update test cases to reflect optional tokenizer settings changes

Adjusted `ascii_folding`, `lowercase`, and `phrase_matching` settings in tests to `None` where applicable, aligning with updates in tokenizer configuration defaults.

* address review remarks

* fix codespell

* thx coderabbit

* Don't copy tokens that are already ASCII

* Shrink folded string to fit

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
Co-authored-by: timvisee <tim@visee.me>
2025-11-14 12:29:32 +01:00
xzfc
d2e47f54f5 Rename HnswConfig::{copy_vectors -> inline_storage} (#7389) 2025-11-14 12:28:14 +01:00
Ivan Boldyrev
494880b090 Docker build parameters (#7370)
* Add ARG `TARGET_CPU` to Dockerfile

* Add ARG `JEMALLOC_SYS_WITH_LG_PAGE` to Dockerfile

It allows redefining jemalloc's page size for image targeting specific
ARM machines.

Refs #3831.

* Document Docker build parameters
2025-11-14 12:28:14 +01:00
xzfc
59b8c886b3 Add CollectionInfo::warnings field (#7293)
* refactor: swap DiffConfig parmeters

was: diff.update(&config)
now: config.update(diff)

* refactor: introduce DiffConfig::update_opt

* feat: add CollectionInfo::configuration_status field

* rename ConfigurationStatus to CollectionWarning
2025-11-14 12:26:52 +01:00
Andrey Vasnetsov
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
xzfc
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
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
e1f1445af2 Remove vectors_count (#7244)
* Remove deprecated vectors count from collection info

* Remove vectors count from shard info

* Update OpenAPI and gRPC spec

* Remove vectors count from example
2025-09-29 11:29:36 +02:00
Tim Visée
2b2e72f425 Add timeout param remove peer API (#7235)
* Describe cluster peer remove timeout parameter in OpenAPI spec

* Remove trailing spaces
2025-09-29 11:28:56 +02:00
Arnaud Gourlay
3e3ffee7fa Fix missing REST API validations misc. (#7220)
* Fix missing REST API validations misc.

* add validation for deleted_threshold

* backport vacuum_min_vector_number validation from gRPC
2025-09-29 11:28:36 +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
tellet-q
faed7f3174 Add hw usage to Facet response (#7189)
* Add usage stats to Facet response
2025-09-29 11:26:00 +02:00
Andrey Vasnetsov
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
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
Luis Cossío
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
Andrey Vasnetsov
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
Luis Cossío
70f315d49e add consistency param for count api in openapi (#6905)
* add consistency param to openapi spec for count api

* reorder query params: collection_name -> consistency -> timeout
2025-08-26 13:15:44 +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
Kacper Łukawski
a8bb2b2d85 Improve description of full_scan_threshold (#7033)
* Improve description of full_scan_threshold in configuration

* Update OpenAPI spec

* edit in grpc

* coderabbit nit

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2025-08-14 14:30:25 +02:00
Kumar Shivendu
2b6256327b Allow retaining more closed segments (#6976)
* Retain more closed segments

* Add back rocksdb

* Update WalOptions/WalConfig across the code

* Use NonZeroUsize

* Expose via APIs

* Update gRPC docs

* Fix stoarge compat test

* recompile openapi.json with rocksdb

* default wal retain closed fn

* update openapi.json

* Use qdrant/wal latest commit and remove from config.yaml
2025-08-11 13:17:47 +02:00
Roman Titov
2938660e92 Fix test_create_shard_key_read_availability flakiness (#6902) 2025-08-11 13:17:11 +02:00
Luis Cossío
5113c7c0f2 [decay formula] allow [0,1] range for midpoint in lin_decay (#6959)
* allow [0,1] range for midpoint in lindecay

* clippyyyyy

* Better error message
2025-08-11 13:16:10 +02:00
Andrey Vasnetsov
92fdc5bd79 HardwareUsage -> Usage (#6967) 2025-08-11 13:16:00 +02:00
Tim Visée
8a08ab8f6d Update roadmap (#6947) 2025-08-11 13:15:17 +02:00
Tim Visée
137b6c1e4a Bump version to 1.15.0 (#6896)
* Bump version to 1.15.0

* Update missed cherry picks

* Update redoc to 1.15.0
2025-07-18 11:06:11 +02:00
Tim Visée
d6844b7f65 Deprecations for Qdrant 1.15.0 (#6892)
* Deprecate init_from

* Mark memmap_threshold as deprecated

* Mark locks API as deprecated

* Mark RBAC collection access payload filter as deprecated

* Allow deprecations in tests and benchmarks
2025-07-17 16:12:57 +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
Tim Visée
b110600233 Adjust feature flag descriptions (#6875) 2025-07-17 14:00:36 +02:00