* 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>
* Fix: Lazy load QdrantLocal to support read-only envs
* Fix: Lazy load QdrantLocal to support read-only envs
* Fix: Regenerate async client using Python 3.10 to match CI
* chore: add comments to portalocker import
---------
Co-authored-by: Kirstin <kirstin.taufertshoefer@qdrant.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* new: remove vectors_count, update http and grpc models
* fix: update inspection cache
* new: add conversions and update interface
* fix: fix some conversions
* fix: fix typo
* fix: fix isinstance
* fix: regen async
* fix: fix update_filter usage, fix isinstance
* tests: collection metadata test
* fix: address backward compatibility in test
* new: update models, add max payload index count and copy vectors
* fix; update _inspection_cache
* new: add read consistency to count points
* Allow uuids in interface (#1085)
* new: direct uuid support
* tests: add uuid tests
* fix: update inspection cache
* new: add collection metadata and tests to local mode (#1089)
* new: add collection metadata and tests to local mode
* fix: regen async client
* new: implement parametrized rrf in local mode (#1087)
* new: implement parametrized rrf in local mode
* refactoring: use a variable for a magic value
* fix: adjust conversion according to AI
* Update filter (#1090)
* new: add missing update_filter, implement it in local mode
* fix: fix type hint, fix update operation, fix rest uploader, add tests
* fix: fix update filter is None case
* fix: mypy was not a good boy
* Text any filter (#1091)
* new: add match text any local mode
* tests: add match text any tests
* new: update models, remove init_from and locks (#1100)
* new: update models, remove init_from and locks
* deprecate: remove init from tests
* deprecate: remove lock tests
* new: convert ascii_folding
* fix: fix type stub
* new: convert acorn
* new: convert shard key with fallback
* new: update grpcio and grpcio tools in generator (#1106)
* new: update grpcio and grpcio tools in generator
* fix: bind grpcio and tools versions to 1.62.0 in generator
* Remove deprecated methods (#1103)
* deprecate: remove old api methods
* deprecate: remove type stub for removed methods
* deprecate: remove old api methods from test_qdrant_client
* deprecate: replace search with query points in test_in_memory
* deprecate: replace search methods in fastembed mixin with query points
* deprecate: replace old api methods in test async qdrant client
* deprecate: replace search with query points in test delete points
* deprecate: replace discover and context with query points in test_discovery
* deprecate: replace recommend_groups with query_points_groups in test_group_recommend
* deprecate: replace search_groups in test_group_search
* deprecate: replace recommend with query points in test_recommendation
* deprecate: replace search with query points in test search
* deprecate: replace context and discover with query points in test sparse discovery
* deprecate: replace search with query points in test sparse idf search
* deprecate: replace recommend with query points in test sparse recommend
* deprecate: replace search with query points in test sparse search
* deprecate: replace missing search request with query request in qdrant_fastembed
* deprecate: replace search with query points in test multivector search queries
* deprecate: replace upload records with upload points in test_updates
* deprecate: remove redundant structs (#1104)
* deprecate: remove redundant structs
* fix: do not use removed conversions in local mode
* fix: remove redundant conversions, simplify types.QueryRequest
* deprecate: replace old style grpc vector conversion to a new one (#1105)
* deprecate: replace old style grpc vector conversion to a new one
* fix: ignore union attr in conversion
* review fixes
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* new: deprecate add, query, query_batch in fastembed mixin (#1102)
* new: deprecate add, query, query_batch in fastembed mixin
* 1.16 -> 1.17
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* new: yet another update
* new: add initial_state to create shard key (#1109)
* new: drop python3.9, replace union and optional with | where possible
* fix: fix missing type hints, regen async
* fix: remove redundant optional
* fix: fix ai comments
* fix: update type hints from merge
* new: update pyproject and lock
* new: replace optional and union with |
* new: remove optional and union from qdrant local
* new: replace union with | in client classes
* fix: replace remaining union, optional, etc, address review comments
* new: adjust numpy versioning
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* new: remove vectors_count, update http and grpc models
* fix: update inspection cache
* new: add conversions and update interface
* fix: fix some conversions
* fix: fix typo
* fix: fix isinstance
* fix: regen async
* fix: fix update_filter usage, fix isinstance
* tests: collection metadata test
* fix: address backward compatibility in test
* new: update models, add max payload index count and copy vectors
* fix; update _inspection_cache
* new: add read consistency to count points
* Allow uuids in interface (#1085)
* new: direct uuid support
* tests: add uuid tests
* fix: update inspection cache
* new: add collection metadata and tests to local mode (#1089)
* new: add collection metadata and tests to local mode
* fix: regen async client
* new: implement parametrized rrf in local mode (#1087)
* new: implement parametrized rrf in local mode
* refactoring: use a variable for a magic value
* fix: adjust conversion according to AI
* Update filter (#1090)
* new: add missing update_filter, implement it in local mode
* fix: fix type hint, fix update operation, fix rest uploader, add tests
* fix: fix update filter is None case
* fix: mypy was not a good boy
* Text any filter (#1091)
* new: add match text any local mode
* tests: add match text any tests
* new: update models, remove init_from and locks (#1100)
* new: update models, remove init_from and locks
* deprecate: remove init from tests
* deprecate: remove lock tests
* new: convert ascii_folding
* fix: fix type stub
* new: convert acorn
* new: convert shard key with fallback
* new: update grpcio and grpcio tools in generator (#1106)
* new: update grpcio and grpcio tools in generator
* fix: bind grpcio and tools versions to 1.62.0 in generator
* Remove deprecated methods (#1103)
* deprecate: remove old api methods
* deprecate: remove type stub for removed methods
* deprecate: remove old api methods from test_qdrant_client
* deprecate: replace search with query points in test_in_memory
* deprecate: replace search methods in fastembed mixin with query points
* deprecate: replace old api methods in test async qdrant client
* deprecate: replace search with query points in test delete points
* deprecate: replace discover and context with query points in test_discovery
* deprecate: replace recommend_groups with query_points_groups in test_group_recommend
* deprecate: replace search_groups in test_group_search
* deprecate: replace recommend with query points in test_recommendation
* deprecate: replace search with query points in test search
* deprecate: replace context and discover with query points in test sparse discovery
* deprecate: replace search with query points in test sparse idf search
* deprecate: replace recommend with query points in test sparse recommend
* deprecate: replace search with query points in test sparse search
* deprecate: replace missing search request with query request in qdrant_fastembed
* deprecate: replace search with query points in test multivector search queries
* deprecate: replace upload records with upload points in test_updates
* deprecate: remove redundant structs (#1104)
* deprecate: remove redundant structs
* fix: do not use removed conversions in local mode
* fix: remove redundant conversions, simplify types.QueryRequest
* deprecate: replace old style grpc vector conversion to a new one (#1105)
* deprecate: replace old style grpc vector conversion to a new one
* fix: ignore union attr in conversion
* review fixes
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* new: deprecate add, query, query_batch in fastembed mixin (#1102)
* new: deprecate add, query, query_batch in fastembed mixin
* 1.16 -> 1.17
---------
Co-authored-by: generall <andrey@vasnetsov.com>
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* new: yet another update
* new: add initial_state to create shard key (#1109)
* chore: remove obsolete imports
* fix: add metadata parameter to recreate collection in local
* fix: fix metadata handling in local more
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* fix: fix set payload in batch update points, fix operation conversions, add tests
* new: add some checks
* add comments to test cases
* fix: return comment
* tests: uncomment test due to a fix in core
* dedup order_by by value and id
* fix: fill order_value when order_by is used
* tests: add tests for duplicated values, fix payload value comparison
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* fix: fix local mode offset in sample random
* fix: fix random sampling, do not propagate offset into prefetches
* fix: ignore offset in random sampling
* new: add sum_scores strategy, fix lookup from in query_batch_points, fix euclid between multivectors local mode
* new: recommend average multivectors, fix tests, add new tests for multivectors
* fix: address review comments
* fix: regen async
* tests: uncomment tests
* new: update poetry lock, require pydantic >=2.11 for populate inspection cache
* fix: tmp disable euclidean multivec search tests, fix multivec with nan test
* fix: align euclid and manhattan with core, add tests
* fix: fix type hints
* tests: use atol in comparison
* tests: remove manhattan tests
* tests: reduce number of multivectors
* remove float comparison relaxation
* explain why it is different for euclid and manhattan
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
* add local mode of formula scoring
* grpc<->rest conversions
* fixes for formula evaluation
* add mixed payload type to fixture payload
* update tests
* ignore math warnings (invalid operations raise an error anyway)
* fix conversions
* use same haversine distance as in core
* upd tests
* add fixtures for expressions
* fix import
* temporary hack for tests
* evaluation fixes
* satisfy mypy
* gen async client
* reduce flakiness
..by nesting less equations, so that floating point differences affect
less
* get_args_subscribed
* retriever match multivalue behavior
* review remarks
* more review remarks
* review nit
* no type ignore
* fix imports
* chore: Added warning messages when working with large points in local mode
* chore: Added deprecation message
* chore: Add default to idx
* Fix: Updated local mode user warning for large volume of points
* chore: Added cloud
* chore: Updated async client
* improve: Improved how we handle warning messages
* chore: Changed warning stack level
refactor: Refactored user warnings in local mode when large upload
* fix: Fix ci
* refactor: update warning messages
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* new: drop python 3.8 support, update type hints
* fix: remove 3.8 from ci
* fix: update type hints
* fix: make netlify use python3.10
* fix: try python3.9 for sphinx
* debug: try updating sphinx
* new: bump ffastembed to 0.4.2
* fix: install numpy<2 for mypy
* fix: install numpy via poetry
* Fix nested prefetches in qdrant_local.py
Local qdrant client with nested prefetches raised the exception: none type has no attribute query. This little change fixes it
* chore: Added the check for prefetch to async
* fix: Fix nested prefetch in async local mode by generating the async client
* chore: Added a test case for query using nested prefetch in congruence tests
* remove redundant version check
---------
Co-authored-by: hh-space-invader <h.hagag.ali@gmail.com>
Co-authored-by: George <panchuk.george@outlook.com>
* Add support for tuple in payload for grpc
* chore: delete health_check_pb2_grpc.py
* chore: Modify payload test case to test tuple datatype
* chore: Removed test case for tuple
We cannot test tuple as the return value is listvalue, so i only kept the list
* chore: Remove excess prints in info endpoint
* chore: Added tuple in random payload generator
* feat: convert the tuple payload of local mode to list for congruence
* universal-search: Query Group API and local mode
* requires different logic for gRPC error assertion
* you come to me at runtime for a compile time issue
* suddenly throwing a different error
* test more group key types
* extend limit of prefetches during group_by
* rescoring is the issue
* one problem at a time please
* code review
* regen clients
* code review
* add lookup_from to query_points_groups
* test with_lookup
* test and fix gRPC
* drop dedicated conversion
* Update qdrant_client/qdrant_client.py
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
* regen async
* Distribution-based score fusion in local mode (#703)
* pre-implement dbsf
* add dbsf congruence tests
* mypy lints
* add conversions
* tests: add test for dbsf conversion
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* Random sample in local mode (#705)
* pre-implement random sampling
* generate models
* add conversions and tests
* fix mypy lints
* tests: add test for sample random conversion
* use camelcase Sample.Random
* review fixes
* fix mypy
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* fix: add type ignore for mypy
* fix: fix type hints for 3.8
* fix: do not run mypy on async client generator in CI, simplify condition
* Grpc comparison in tests (#726)
* add parametrized fixture for using grpc too
* compare grpc and http without running each setup twice
* fix: fix exception types in invalid types test
* fix: remove random seed which led to a erroneous sequence
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* added new to type stub + fixed type hinting
* unlocked pyright + updated type_stub
* updated poetry lock
* fix: fix local collection upsert type hint
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>