Commit Graph
587 Commits
Author SHA1 Message Date
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
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 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 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 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
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
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
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
Tim Visée 3b7616808c Enable migration from RocksDB to mutable ID tracker by default (#6872)
* Enable migration from RocksDB to mutable ID tracker by default

We planned to enable this by default in the Qdrant 1.15.0 release.

* Synchronize enable at version TODOs for other flags with planning

* Update OpenAPI spec
2025-07-17 14:00:30 +02:00
Tim Viséeandjojii b53f668f52 Naive migration of payload indices from RocksDB to Gridstore (#6810)
* Add function to detect if storage is using RocksDB

* Add feature flag to toggle payload index migration

* Add naive payload index migration, rebuild from scratch if RocksDB

* Adjust payload index rebuild logs

* When rebuilding payload indices, clean up existing storages

* Update OpenAPI spec

* Use weak references to Gridstore in mutable payload index flushers

* Rework payload index clear/wipe functions, make them consistent

* Naively migrate RocksDB before loading indices

* Fix mmap payload index load, staged like others (#6837)

* Add staged loading of mmap numeric payload index

* Add staged loading of mmap map payload index

* Add staged loading of mmap geo payload index

* Add staged loading of mmap full text payload index

* Add staged loading of mmap bool and null payload index

* Minor tweaks

* Don't fail clearing file cache if file does not exist

---------

Co-authored-by: jojii <jojii@gmx.net>
2025-07-17 13:58:04 +02:00
Luis Cossíoandgenerall e8daf9c79f [MMR] expose as query variant in rest and grpc (#6797)
* expose mmr in rest and grpc

* fix referenced vectors in mmr queries

* rename to MmrInput in grpc for consistency

* mmr is now an optional parameter of nearest query

* fix score_threshold at local shard

* fix conversion of rest -> collection

* fix and refactor planned query

* nits

* rename `lambda` to `diversity` in interface

* handle score_threshold within mmr calculation

* add openapi test

* fix candidate limit at collection level

* candidate_limit -> candidates_limit

* finish rename to candidates_limit

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-07-17 13:56:46 +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
Luis Cossío f0acd74dea rename snowball params in grpc (#6839) 2025-07-17 13:54:32 +02:00
Luis Cossío 0292da5b83 rename SnowballParameters to SnowballParams (#6838) 2025-07-17 13:54:27 +02:00
Andrey Vasnetsov d662e36af9 rename stemming -> stemmer (#6827)
* rename stemming -> stemmer

* docs
2025-07-17 13:52:14 +02:00
Ivan Pleshkov 0399f3e06f Merge pull request #6201
* bq encodings

* update docs

* fix after rebase

* fix gpu build

* fix build after rebase
2025-07-17 13:45:57 +02:00
Jojiiandgenerall 8fa3dd4478 Implement stemming (#6770)
* Implement stemming

* minor fix

* Add openapi specs

* Fix import

* Fix Test, rename API type

* update openapi

* fix rest models

* Review remarks

* Minor code cleanup

* make grpc naming aligned with Rest + use master branch for dependencies

* grpc docs

* use tagged version

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-07-17 13:38:36 +02:00
Tim Visée 50c43a35da Actively migrate payload storage from RocksDB to Gridstore (#6734)
* Migrate RocksDB based payload storage into Gridstore

* Add migrate_rocksdb_payload_storage feature flag

* Minor tweaks

* Use iter to migrate all payloads

* Fix clippy warning

* Update OpenAPI spec

* Track if mmap payload storage is populated, set memory/disk storage type

* Add test

* Log amount of bytes we migrate instead of point count

* Remove TODO

* Render storage size migrated in human human readable format, not bytes

* On migration failure, drop full payload storage directory

* Fix missing import
2025-07-17 13:36:07 +02:00
Jojii 3feecb5970 Add Japanese stopwords (#6683)
* Add Japanese stopwords

* Adjust list to be more close to source & update openapi
2025-07-17 13:27:40 +02:00
Tim Visée e8f3a282bf Add in-memory payload storage on Gridstore (#6722)
* Add in-ram-mmap payload storage type

* When RocksDB is not compiled, select in-ram mmap payload storage

* Enable payload storage on-disk check again in config mismatch optimizer

* Add feature flag to build in-ram-mmap payload storage

* Tweak is_on_disk condition

* Bump version estimates in runtime feature flags
2025-07-17 13:27:33 +02:00
xzfc 231567c31a Configurable HNSW healing threshold (#6756) 2025-07-17 13:26:25 +02:00
Kumar ShivenduandRoman Titov 2144926852 Partial snapshot is recovering telemetry (#6677)
* Tweak partial snaposhot `recover` and `recover_from` response...

...to return `status: already_in_progress` instead of error

* Tweak partial snapshot integration tests

* Add new telemetry field is_recovering for partial snapshots

* Update OpenAPI spec

---------

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2025-07-17 13:25:26 +02:00
Luis Cossíoandtimvisee ad936a463c [phrase matching] expose phrase condition (#6670)
* add `"match": { "phrase": ... }` condition

* gen grpc and openapi

* [phrase matching] expose `phrase_matching` flag in rest and grpc (#6620)

* expose setting in rest and grpc

* phrase matching openapi test

* regen openapi

* [phrase matching] Text index fixes (#6730)

* allow rocksdb-based immutable text index

* fix repeated-token phrases

* fmt

* Update OpenAPI spec

---------

Co-authored-by: timvisee <tim@visee.me>

* add repeated word case in openapi test

* [phrase match | strict mode] Allow phrase condition when enabled in index (#6749)

* allow phrase filter when index is present

* prettier error message

* clippppppy

---------

Co-authored-by: timvisee <tim@visee.me>
2025-07-17 13:25:12 +02:00
Tim Visée d7223bab13 Fix debug panic in issues API, specify integer index param defaults (#6753)
* Fix incorrect defaults for integer index params in issues API

* Specify default for integer index params in comment

* Update OpenAPI and gRPC spec
2025-07-17 13:24:58 +02:00
Ivan Pleshkov 3a916c5d69 Merge pull request #6663
* bq encodings

* are you happy clippy

* are you happy clippy

* are you happy clippy

* are you happy clippy

* gpu tests

* update models

* are you happy fmt

* move additional bits to the end

* fix tests

* Welford's Algorithm

* review remarks

* are you happy clippy

* remove debug println in test

* coderabit nitpicks

* remove unnecessary clone and partialeq

* Use f64 for Welford's Algorithm

* try fix ci

* revert cargo-nextest

* add debug assertions
2025-07-17 13:16:17 +02:00
n0x29aandgenerall 30713fb094 Add stopwords support (#6635)
* Add stopwords support

* Update codespell configuration and improve stopword assertion message

* Add stopwords schema to OpenAPI definition

* Rename StopwordsOption to StopwordsInterface

* Add stopwords support for multiple languages

* Update codespell configuration to skip all Rust files in stop_words directory

* Normalize stopwords to lowercase during insertion

* Add language aliases for stopwords

* + grpc

* Unspecified Language

* clippy fmt

* openapi

* Refactor to use BTreeSet

* update tokenizer test to include custom stopwords with contractions

* simplified grpc StopwordsInterface

* alias for languages

* use `lowercase` flag for stop word normalizing

* grpc: enum -> string

* consistent naming

* Remove UnspecifiedLanguage and use From for conversions

* fix conversions

* fmt

* use stopwords inside different tokenizer

* use ahash

* fix tests

* fix no-rocks-db feature

* simplify code and fix test

* update test

* fix clippy

* fmt

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2025-07-17 13:08:36 +02:00
Tim Visée abe23b7dd9 Expose runtime feature flags in telemetry (#6667)
* Expose runtime feature flags in telemetry

* Update OpenAPI spec
2025-07-17 13:06:05 +02:00
Tim Visée fd181648be Report usage of RocksDB feature flag in telemetry (#6666)
* Report usage of RocksDB feature flag in telemetry

* Update OpenAPI spec
2025-07-17 13:05:59 +02:00
Tim Visée 63ec4c136d Remove web feature flag (#6665)
* Remove web feature flag

* Update OpenAPI spec
2025-07-17 13:05:21 +02:00
fe62cc02be InferenceUsage in grpc (#6601)
* InferenceUsage in grpc

* Update documentation for InferenceUsage

* Update lib/api/src/grpc/ops.rs

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

* clearer inference usage tracking

* remove unused inference token from delete_points

* review

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
Co-authored-by: generall <andrey@vasnetsov.com>
2025-07-17 11:08:18 +02:00
n0x29aandAndrey Vasnetsov 273f53f1b7 Add inference usage tracking to REST API (#6563)
* Add inference usage tracking to REST API

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2025-07-17 11:04:50 +02:00
generall a546e0dda5 Revert "Update logo.svg"
This reverts commit ff8da874e0.
2025-07-12 14:01:14 +02:00