124 Commits

Author SHA1 Message Date
Tim Visée
44ad62f8cd Bump version to 1.18.2 (#9290)
* Bump version to 1.18.2

* Update missed cherry picks
2026-06-03 17:09:21 +02:00
qdrant-cloud-bot
e01c207f40 Bump version to 1.18.1 (#9134)
* Bump version to 1.18.1

Co-authored-by: Cursor <cursoragent@cursor.com>

* Update missed cherry picks

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 11:56:30 +02:00
Tim Visée
fd6746ea95 Bump version to 1.18.0 (#8959)
* Bump version to 1.18.0

* Update missed cherry picks

* Add OpenAPI spec for v1.18.x
2026-05-08 17:26:56 +02:00
Ivan Pleshkov
541bb8baf3 TQ SIMD (#8749)
* TQ 4 bit SIMD

* more optimizations

* unroll test

* remove tries

* revert avx 512

* final simd

* use precomputed codebooks

* close to finish

* split to files

* are you happy fmt

* score internal

* 1bit

* 1bit tails

* score_1bit_internal_avx2 tail

* 1bit simd

* 2bit case

* fix 2bit

* fix features

* tails

* fix tests

* less benches

* 1bit tails

* 4bit tails simd

* 64k overflow test

* reuse packing and constants from dev after rebase

* are yoy happy fmt

* fix x64 build

* integration

* symmetric score SIMD

* fix codespell

* better docs

* are you happy clippy

* review remarks

* review remarks
2026-05-08 13:47:36 +02:00
xzfc
a8024b8c4b shell.nix: update pinned dependencies (#8623)
Problems:
- The pinned `uv` version sometimes pulls broken python interpreter.
- The pinned `just` is too old to read `lib/edge/Justfile`.

Solution: update everything.

    nix-shell --run 'cd tools/nix && npins update' # for default.nix
    nix-shell --run 'cd tools/nix && npins upgrade' # for sources.json

Also, in this nixpkgs version, renames `nixfmt-rfc-style` into `nixfmt`.
2026-05-08 13:46:36 +02:00
xzfc
5638d1799c Drop RocksDB (#8529)
* Skip broken tests

* Add rocksdb dropper

This is a temporary tool. It will be removed later in this PR.

* [automated] Drop rocksdb

This commit is made by running tools/rocksdb/drop.sh

* Touch-up after ast-grep

The previous automated commit removed items, but not their comments.
Also, some blocks are left with only one item.
Also, ast-grep can't handle macros like `vec![]`.

This commit completes the job.

* Remove RocksDB dropper

* Remove mentions of rocksdb feature in CI

* Fix clippy warnings

These `FIXME` comments added previously in this PR by ast-grep by
"peeling" cfg_attr like this:

    -#[cfg_attr(not(feature = "rocksdb"), expect(...))]
    +#[expect(...)] // FIXME(rocksdb): ...

This commit removes these allow/expect attributes and fixes clippy
lints.

* Remove leftover rocksdb-related code

Removed:
- Cargo.toml: rocksdb cargo feature flag and dependencies.
- code: rocksdb-related items that was not under feature flag.
- flags.rs: rocksdb-related qdrant feature flags.

Disabled:
- Some benchmarks because these do not compile now.

* Print warning if rocksdb leftovers found in snapshots

* Remove Clone from tokenizer

* Regenerate openapi.json
2026-05-08 13:45:44 +02:00
Andrey Vasnetsov
a09d588c14 bump version to v1.17.1 (#8517)
* bump version to v1.17.1

* Update missed cherry picks [skip ci]

Made-with: Cursor
2026-03-26 20:06:34 +01:00
Luis Cossío
9bcef50544 Use UniversalIo for MmapBitSlice (#8339)
* feat(universal_io): add storage-agnostic BitSliceStorage with read/write support`

Add BitSliceStorage<S> generic over
UniversalRead<u64>/UniversalWrite<u64>,
providing bit-level read and write operations over u64-element storage.

Read operations (S: UniversalRead<u64>):
- read_all: returns Cow<BitSlice> (zero-copy for mmap, owned for others)
- get_bit: single bit read via u64 element fetch
- read_bit_range: arbitrary bit range read

Write operations (S: UniversalWrite<u64>):
- set_bit / replace_bit: single bit write (skips write if unchanged)
- write_bit_range: arbitrary bit range write from BitSlice source
- fill_bit_range: fill range with a value
- set_bits_batch: batch individual bit updates coalesced by element
- flusher: flush underlying storage

* refactor: replace MmapBitSlice with BitSliceStorage in MmapBitSliceBufferedUpdateWrapper

Migrate all deleted-flag bitslice storage from the legacy MmapBitSlice
(Deref-based mmap wrapper) to BitSliceStorage<MmapUniversal<u64>>
(storage-agnostic universal IO backend).

Updated consumers:
- MmapMapIndex
- MmapNumericIndex
- MmapGeoMapIndex
- MmapInvertedIndex (fulltext)
- ImmutableIdTracker
- Benchmark

Additionally:
- Add BitSliceStorage::create(path, num_bits) to encapsulate
  file creation + sizing + open (eliminates duplicated size math
  across 5 call sites)
- Add MmapBitSliceStorage type alias for
BitSliceStorage<MmapUniversal<u64>>
- Add count_ones() convenience method
- Use set_bits_batch() in wrapper flusher and all build paths
  instead of per-bit set_bit() loops (coalesces u64 read-modify-writes)
- Fix silent error swallowing in wrapper get(): log + debug_assert
  on I/O errors instead of .ok().flatten()
- Remove dead bitmap_mmap_size function from immutable_id_tracker

* use bitvec's approach for offset

* less api

* misc improvements

* refactor write method

* move to segment crate

* handle creation of file outside of StoredBitSlice logic

* fix codespell

* document bitwise calculations

* coalesce more updates into a single write, batch all writes

* use native `extend_from_bitslice` instead of iterating.

* clarity refactor

* clippyyy

* use `u64` as BitStore everywhere

* assume iterator is sorted

* only use chunk_by for generating runs

* fix update wrapper flusher

* review fixes

* larger set bits batch test

* remove reintroduced file

* oops, fix new test

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2026-03-26 18:25:42 +01:00
Tim Visée
4ab6d2ee0f Bump version to 1.17.0 (#8160)
* Bump version to 1.17.0

* Update missed cherry picks

* Add OpenAPI spec for v1.17.x
2026-02-19 13:35:11 +01:00
Tim Visée
7b5b54a4e7 build(deps): bump lodash in /tools/schema2openapi (#7968)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 23:21:45 +01:00
Tim Visée
bd49f45a8a Bump version to 1.16.3 (#7806)
* Bump version to 1.16.3

* Update missed cherry picks
2025-12-19 13:23:30 +01:00
tellet-q
f1d54ca889 Move test dependencies to tests (#7793)
* Move pyproject and uv.lock to tests folder

* Make tests working-dir agnostic

* Fix test

* Address review
2025-12-18 17:29:18 +01:00
Tim Visée
b234b55a4c Migrate Python to uv (#7790)
* Move pyproject.toml to root

* Migrate pyproject.toml from Poetry to uv

* Update GH workflows

* Update test script, doc and nix to use uv

* Use latest uv

* Fix uv.lock

* Cleanup shell.nix

* Cleanup

- Explicit `uv sync` is not required, `uv run` will install deps
  automatically.
- We don't provide a python package, so the `[build-system]` section
  is not needed.

* Fix UV_VERSION inconsistency

---------

Co-authored-by: tellet-q <elena.dubrovina@qdrant.com>
Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-12-18 17:28:50 +01:00
Tim Visée
eaa9f4cc82 Bump version to 1.16.2 (#7680)
* Bump version to 1.16.2

* Update missed cherry picks
2025-12-03 11:34:59 +01:00
Tim Visée
b0202cd4b3 Disable RocksDB features in local development builds (#7552)
* Disable rocksdb compile time feature by default

* Also disable RocksDB feature in segment crate

* Enable RocksDB feature in all CI builds

* Remove extra job for testing non-RocksDB build, it's the default now

* Keep RocksDB structures in generated OpenAPI schema

* Fix obsolete --workspace flag breaking builds with explicit features

* Also build including RocksDB in e2e tests on CI
2025-12-03 10:17:54 +01:00
Tim Visée
4a66b7cf2b Bump version to 1.16.1 (#7603)
* Bump version to 1.16.1

* Update missed cherry picks
2025-11-25 14:59:57 +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
xzfc
c90d138902 Drop docs/grpc/docs.md (#7453) 2025-11-14 12:30:13 +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
Tim Visée
64d63cc050 Bump version to 1.15.5 (#7323)
* Bump version to 1.15.5

* Update missed cherry picks
2025-09-29 17:05:49 +02: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
Tim Visée
338cf704c4 Bump version to 1.15.4 (#7150)
* Bump version to 1.15.4

* Update missed cherry picks
2025-08-26 17:07:38 +02:00
Tim Visée
a7d21f1680 Bump version to 1.15.3 (#7061)
* Bump version to 1.15.3

* Update missed cherry picks
2025-08-14 15:57:28 +02:00
xzfc
27a45246b9 shell.nix: switch to rustup (#7049)
* shell.nix: npins upgrade

* shell.nix: bump to rust 1.89

* shell.nix: use rustup instead of fenix
2025-08-14 14:30:26 +02:00
Tim Visée
5ee3044272 Bump version to 1.15.2 (#7012)
* Bump version to 1.15.2

* Update missed cherry picks
2025-08-11 17:02:06 +02:00
tellet-q
f86d8af210 Refactor bash tests: tls (#6995)
* Refactor tls bash test

* Update codespell

* Address review
2025-08-11 13:18:04 +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
tellet-q
b33e741229 Hardcode the link (#6985)
* Hardcode the link

* Fix image build
2025-08-11 13:16:52 +02:00
Kumar Shivendu
bcbc462de1 Fix coverage failure after recent changes (#6948) 2025-08-11 13:15:43 +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
Andrey Vasnetsov
66a6a61418 add retries to curl (#6820) 2025-07-17 13:49:12 +02:00
xzfc
e365ddca69 Move codespell config to tools/codespell.toml (#6707) 2025-07-17 13:12:49 +02:00
Andrey Vasnetsov
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
xzfc
bf4363d786 shell.nix: bump to rust 1.87 (#6547)
* shell.nix: bump to rust 1.87

* shell.nix: workaround for jemalloc
2025-05-22 23:18:21 +02:00
n0x29a
5393fc8a6b Refactor: move HardwareUsage to the Usage map (#6532)
---------

Co-authored-by: jojii <jojii@gmx.net>
2025-05-22 23:15:15 +02:00
Kumar Shivendu
0389060955 Introduce coverage reports for integration tests (#6414)
* Introduce coverage reports for integration tests

* Install cargo-llvm-cov

* Use multiline script

* Explicityl setup COVERAGE env var

* fix integration tests and log generated data

* fix ls path

* upload lcov file to GH artifacts

* integration profraw dynamic filename

* Fix llvm profile filename template

* Use interrupt instead of kill and merge consensus test results into same file

* Drop upload artifact stage

* install llvm-cov

* upload as artifact and export coverage files

* try simplifying workflow

* Migrate coverage generation to existing dedicated gh workflow

* trigger on coverage related branches

* Build only if qdrant binary with cov doesnt exist

* Use valid yaml

* include mode in profraw filename

* split coverage workflow into parallel jobs

* add poetry version to env

* log poetry version to install

* clean up integration test workflow

* Simplify comments
2025-05-13 11:16:09 +02:00
Andrey Vasnetsov
feac5a4cee Add a tool to view percentage of mmaps cache (#6310)
* Add a tool to view percentage of mmaps cache

* review fixes
2025-04-20 23:49:58 +02:00
Tim Visée
e282ed91e1 Bump version to 1.13.5 (#6223)
* Bump version to 1.13.5

* Update missed cherry picks
2025-03-21 14:01:57 +01:00
xzfc
dc9c809741 shell.nix: bump to rust 1.85 (#6060) 2025-03-21 11:39:24 +01:00
Tim Visée
7abc684361 Bump version to 1.13.4 (#5995)
* Bump version to 1.13.4

* Update missed cherry picks
2025-02-17 11:00:26 +01:00
Tim Visée
c2faaf90da Bump version to 1.13.3 (#5970)
* Bump version to 1.13.3

* Update missed cherry picks
2025-02-11 15:22:04 +01:00
Kumar Shivendu
222b25150a Fix coverage test OOD on CI (#5927)
* Fix coverage test OOD on CI

* Temporarily run coverage CI on PR

* Clean artifacts per package and store in tmp dir

* fix typo in gh workflow

* Add monitoring script again for debugging

* trigger script

* Fix monitor script path

* dont checkout dev branch

* Merge .info file only if test passed

* Try merging .info file only if it exists

* trigger ci

* fix workflow

* trigger ci

* Customize branch to check out

* Remove monitor.sh script

* remove unused env var
2025-02-11 14:41:12 +01:00
Kumar Shivendu
5e7d644c4c Setup code coverage reports (#5751)
* Setup code coverage for Rust tests

* Add API key env var for codecov

* Save code coverage report for upload

* Trigger CI

* Try without explicit build step

* Run coverage job on self hosted runner

* Fix mistake because of which is was running fewer tests

* Run coverage on ubuntu latest

* Trigger CI

* fix name

* run coverage on all os

* Adjust after rebase to dev

* Avoid running coverage in other jobs

* fix test job

* reset test workflow

* Trigger CI

* run coverage after tests

* Add script to monitor resources

* fix indentation

* remove coverage dependency on test job

* fix needs field

* add monitoring script

* Run tail -f to monitor resources concurrently with tests

* Split commands

* Use --jobs=1 to possibly minimize RAM

* Try generating coverage one by one

* Dont clean coverage artifacts

* Merge .lcov files with lcov command

* Upload merged lcov.info file

* Run coverage for fewer packages

* Improve coverage script

* Move coverage.sh to tools dir

* Prepare for review

* Improve CI output and failure handling

* Generate HTML report if running locally

* Cleanup

* Run coverage on schedule and only for dev branch
2025-02-11 14:36:44 +01:00
Tim Visée
80bfc03aa0 Bump version to 1.13.2 (#5893)
* Bump version to 1.13.2

* Update missed cherry picks
2025-01-28 11:44:22 +01:00
Tim Visée
a72a5f43e8 Bump version to v1.13.1 (#5864)
* Bump version to 1.13.1

* Update missed cherry picks
2025-01-23 15:22:55 +01:00
Tim Visée
ffda0b90c8 Bump version to v1.13.0 (#5814)
* Bump version to 1.13

* Update OpenAPI specification

* Update missed cherry picks
2025-01-16 15:06:38 +01:00
Tim Visée
e545b6964b Bump version to 1.12.6 (#5759)
* Bump version to 1.12.6

* Update missed cherry picks
2025-01-08 15:43:27 +01:00
Tim Visée
27260abda7 Bump version to v1.12.5 (#5611)
* Bump version to 1.12.5

* Update missed cherry picks
2024-12-09 14:38:58 +01:00
xzfc
0834981efd shell.nix: bump to rust 1.83 (#5578)
* shell.nix: bump to rust 1.83

* shell.nix: add cmake (required by gpu deps)
2024-12-09 11:17:56 +01:00
Arnaud Gourlay
a325c8e3b9 Do not build schema_generator by default (#5482) 2024-12-09 10:48:46 +01:00