Commit Graph
625 Commits
Author SHA1 Message Date
dependabot[bot] 0c6c4abf33 chore(deps-dev): bump mypy from 1.20.2 to 2.3.0
Bumps [mypy](https://github.com/python/mypy) from 1.20.2 to 2.3.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.20.2...v2.3.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 2.3.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 13:28:39 +00:00
dependabot[bot] 0c4975b19d chore(deps): bump actions/setup-python from 6.2.0 to 7.0.0 (#1318)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/a309ff8b426b58ec0e2a45f0f869d46889d02405...5fda3b95a4ea91299a34e894583c3862153e4b97)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-12 20:27:54 +07:00
dependabot[bot] 47decf8588 chore(deps-dev): bump coverage from 6.5.0 to 7.15.2 (#1320)
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 6.5.0 to 7.15.2.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/6.5.0...7.15.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.15.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-12 20:26:09 +07:00
nightcitybladeandGeorge Panchuk 703222e108 fix: reject empty collection names in existence checks (#1332)
* fix: reject empty collection names in existence checks

* tests: move tests to congruence

* fix: regen async client

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-08-12 19:45:58 +07:00
Nazrul AnsariandGeorge Panchuk 78d8bddd84 fix: local mode matches the wrong points on null and empty-should filters (#1333)
* fix: local mode matches wrong points on null and empty-should filters

* tests: move tests to complex filters

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-08-12 19:27:23 +07:00
dependabot[bot] 77be67bf12 chore(deps-dev): bump pytest-asyncio from 0.21.2 to 0.23.8 (#1323)
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.21.2 to 0.23.8.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.21.2...v0.23.8)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-version: 0.23.8
  dependency-type: direct:development
  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>
2026-08-05 00:23:41 +07:00
George 0aeaf787c9 new: add dependabot config (#1314) 2026-08-04 23:36:03 +07:00
George 9c71f9949b new: bump to 1.19.1-dev (#1313) 2026-08-04 23:06:27 +07:00
George 206273d9bb fix: fix nested payload local mode (#1312)
* fix: fix nested payload local mode

* test: update test data in complex filter
2026-08-04 19:58:52 +07:00
George 272d7a9e47 deprecate: remove max_disk_usage_percent, deprecate max_resident_memory_percent (#1311) 2026-08-04 17:38:02 +07:00
Nazrul Ansari 962d8f4943 fix: values_count bounds must be satisfied by a single value in local mode (#1293) 2026-08-04 01:25:28 +07:00
George 399449a6d9 new: 1.19.0 updates (#1298)
* new: 1.19.0 updates

* fix: fix search params as a dict in local mode

* fix: update qdrant backward compatibility version

* fix: add version check to the test

* fix: add version check to the test
2026-08-01 02:48:14 +07:00
George e7aecbd67a fix: add limit > 0 rules in local mode (#1281) 2026-07-24 02:22:28 +07:00
Madan kumarandGeorge Panchuk 69a5c22e48 Preserve proto3 field presence for falsy values in REST/gRPC conversion (#1260)
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-07-24 02:01:15 +07:00
ErenAta16 b50caeb0cd fix: do not drop falsy shard keys in convert_points_update_operation (#1279) 2026-07-23 23:32:31 +07:00
George ff30799c6d fix: fix embed paths (#1278)
* fix: fix embed paths

* tests: add local inference test for complex prefetch
2026-07-23 22:22:29 +07:00
Madhan Kumar ReddyandGeorge Panchuk f326784879 Warn that search_params is ignored in local mode instead of silently dropping it (#1083) (#1247)
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-07-22 22:33:21 +07:00
Madan kumarandGeorge Panchuk 532997a781 Fix local mode filters cross-matching booleans and integers (#1259)
* Fix local mode filters cross-matching booleans and integers

Python treats bool as a subclass of int (True == 1, False == 0), but Qdrant
keeps booleans and integers as distinct payload value types. Local mode
compared them with a plain `==` / `in` / `isinstance(value, (int, float))`, so:

- MatchValue(value=1) matched a payload of True, and MatchValue(value=True)
  matched a payload of 1 (same for 0 / False)
- MatchAny / MatchExcept cross-matched the same way
- Range matched booleans as if they were 0 / 1

The server never cross-matches these (its ValueVariants keeps Integer and Bool
distinct, and booleans are not numeric for range conditions). Add a type-aware
equality helper used by the value-match conditions, and exclude booleans from
range checks. Adds an in-memory regression test.

* Cover MatchExcept in the bool/int cross-match test

MatchExcept also routes through values_match, so assert that except=[1]
keeps the True payload (bool is not the integer 1).

* Add isolated MatchAny and range asserts to the bool/int cross-match test

Lock the single-value MatchAny path and the check_range bool guard against
regressions, in addition to the existing combined-condition coverage.

* fix: handle floats in cross-match local mode filters, add congruence tests

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-07-22 02:17:20 +07:00
GeorgeandHassan Zafar e59d0fd58e fix: do not include local test files into the distribution (#1277)
Co-authored-by: Hassan Zafar <hassanzafar619@gmail.com>
2026-07-22 00:51:41 +07:00
GeorgeandEren Ata 6f5bff3ed6 fix: fix local mode set payload shared nested object #1271 (#1276)
Co-authored-by: Eren Ata <erena6466@gmail.com>
2026-07-22 00:29:39 +07:00
George b4713cd874 Fix env installation (#1255)
* fix: update poetry lock

* fix: add type annotations, update poetry.lock

* fix: fix local persistence tests

* fix: replace del client with client.close in local mode persistence tests

* new: update local mode values count filter behaviour
2026-07-08 17:06:02 +07:00
Charles DuffyandGeorge Panchuk 4dc996a2fe fix: spurious async client tests failures (#1181)
* fix: spurious async client tests failures

* skip cluster-only test when server is standalone

* increase timeout for unit test performing multiple snapshot operations

* clean up stale snapshots left by previous runs

* fix: remove deleted methods, add/update cluster checks

* fix: remove unused import

* fix: remove redundant indent

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-06-26 16:45:37 +09:00
George 90913f8816 fix: fix persistence test in test query (#1245) 2026-06-26 16:33:08 +09:00
George e95b94487b fix: fix update vectors in local mode (#1244) 2026-06-26 14:52:30 +09:00
George 2cd064f2df fix: fix persistence in local mode multivector tests (#1243) 2026-06-26 14:27:28 +09:00
Alok TripathiandGeorge Panchuk 390c284ad6 fix: check_match() raises TypeError when MatchText applied to non-string field (#1224)
* fix: check_match() raises TypeError when MatchText applied to non-string field

* tests: move non-string match test to test_nested_filter, cover MatchText and MatchTextAny

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-06-26 14:07:20 +09:00
George fe0415384c fix: update poetry lock (#1242)
* fix: update poetry lock

* fix: add type annotations, update poetry.lock

* fix: fix local persistence tests

* fix: replace del client with client.close in local mode persistence tests
2026-06-26 13:41:15 +09:00
Esteban Yusunguaira 3ce30426e0 ci: update all actions to node 24 (#1216) 2026-05-25 09:52:54 -05:00
George 60ab32e2aa bump version to v1.18.1-dev (#1214) 2026-05-22 20:00:22 +07:00
George 790328b1aa new: remove add and query methods (#1210)
* new: deprecate add and query methods

* fix: update async client generator
2026-05-20 22:48:47 +07:00
Esteban Yusunguaira d71e1c04e4 ci: update github actions to node 24 (#1212) 2026-05-20 16:32:26 +07:00
George 5b73dbb755 new: check the package is importable before publish (#1207) 2026-05-19 17:23:42 +07:00
Mohamed Arbi d2196df5cd docs: Add docstring for ParallelWorkerPool class (#1199) 2026-05-18 19:18:26 +07:00
Mohamed Arbi 7a18316a3b fix: use HasVectorCondition in local search_distance_matrix (#1197) 2026-05-18 18:36:51 +07:00
George d72554e640 new: update models to 1.18, add create_named_vector and delete_named_vector (#1201)
* new: update models to 1.18, add create_named_vector and delete_named_vector

* fix: add missing strict mode config updates

* fix: fix local mode create and delete vector name

* new: update turbo quant fields

* fix: persist vector deletion
2026-05-09 01:09:54 +07:00
Andrey VasnetsovandGeorge Panchuk ddfdcf4cf0 Per-request custom headers for tracing (#1173)
* implement thread-local header overwrite for setting headers for individual requests

* mypy

* fix: remove redundant import in init, remove redundant import in qdrant remote

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-05-08 00:37:59 +07:00
George 7974c06de6 new: remove python docs in favour of qdrant.tech (#1174)
* new: remove python docs in favour of qdrant.tech

* fix: docs redirect

* fix: fix netlify

* fix: fix netlify
2026-05-06 18:38:36 +07:00
George f6964b69bd fix: fix geo bounding box filters on edges (#1190)
* fix: fix geo bounding box filters on edges

* tests: add test
2026-04-14 18:06:14 +07:00
George 1c1e1c54fc fix: fix local mode values count (#1191) 2026-04-14 18:06:00 +07:00
estebany-qdandGeorge Panchuk df76e0b5d1 ci: Pin all gh actions to commit SHAs (#1179)
* ci: Pin all gh actions to commit SHAs

* new: update checkout to v2 in type check ci

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-03-31 10:11:39 -05:00
George c26c1e03fd new: bump fastembed to 0.8.0 (#1176) 2026-03-25 18:15:11 +07:00
AnushandGeorge Panchuk c7a5bef84b feat: Add support for custom headers (#1162)
* feat: Add support for custom headers

Signed-off-by: Anush008 <mail@anush.sh>

* add warnings when user provides user-agent or api-key in headers or options

* fix: fix is none condition

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2026-03-13 22:04:39 +07:00
GeorgeandJiangNan 57e69522ea fix: do not modify payload filters in local mode in-place (#1169)
Co-authored-by: JiangNan <1394485448@qq.com>
2026-03-13 21:42:39 +07:00
George a8100882fb new: run server version check in a thread, don't check bm25 availabil… (#1168)
* new: run server version check in a thread, don't check bm25 availability as it was introduced in 1.15.3

* fix: fix tests for auth

* fix: fix test for auth again

* fix: update stacklevel for in-thread warnings

* fix: fix auth token test for sync client

* tests: remove outdated tests
2026-03-13 21:42:11 +07:00
George 0a69a4c9a2 deprecate: completely replace fastembed bm25 with qdrant core bm25 in hosted qdrant (#1166)
* deprecate: completely replace fastembed bm25 with qdrant core bm25

* fix: fix param name in embedder, accept lower case bm25 model name

* tests: enable skipped tests, add bm25 core usage tests

* fix: fix ci, run fastembed tests in integration tests

* fix: fix pip uninstall prompt

* tests: log message when running tests wo fastembed
2026-03-13 01:23:44 +07:00
George ee813f71e7 fix: fix type hint union with grpc enum with old protobuf (#1157)
* fix: fix type hint union with grpc enum with old protobuf

* fix: add type ignore
2026-03-10 13:44:54 +07:00
George e84db54f98 bump version to v1.17.1-dev (#1158) 2026-03-05 17:35:24 +07:00
63f69540a6 Update models 1.17 (#1154)
* new: update models, add conversions, add conversion tests

* new: add list shard keys, add get_optimizations

* new: add weights to rrf

* new: add cluster telemetry

* new: add update_mode usage

* fix: fix mypy

* fix: populate inspection cache

* use RRF ranking as in the core

* timeouts propagation

* gen async clients

* implement score threshold for formular

* new: add tests for update mode

* fix: fix test skip comment

* Relevance feedback local mode (#1152)

* AI: implement local computation

prompt: Considering the implementation in the server, make the local
python implementation of the same scores calculation in this file:
[@distances.py](...), consider that the local mode calculates for all
points at once, while the server does it point by point.

Server impl:
```
...
```

* use constant for MARGIN

* relevance feedback integration and test

* do not exclude relevance context from result

* Revert "do not exclude relevance context from result"

This reverts commit 9c2a5cedc0.

---------

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

* fix: fix conversion test

---------

Co-authored-by: generall <andrey@vasnetsov.com>
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
2026-02-19 22:32:01 +07:00
George 286ae82b06 bump version to 1.16.3-dev (#1135) 2026-01-20 15:58:55 +08:00
Chris CoutinhoandGeorge Panchuk be220858cb fix: apply score_threshold filtering after fusion queries in local mode (#1138)
* fix: apply score_threshold filtering after fusion queries in local mode

The local/memory client was not applying score_threshold filtering after
RRF and DBSF fusion operations. This caused query_points with prefetch
and fusion queries to return results below the specified score_threshold.

This fix adds score_threshold filtering after fusion results are computed,
matching the behavior of the remote Qdrant server.

* tests: simplify score threshold tests, add formula threshold test

---------

Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
2025-12-16 22:10:54 +07:00