* 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>
* 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
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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
* 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>
* 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>