Align with the latest public-api collections.proto: paginated
ListCollections (limit/offset_token/next_offset_token) plus keyword
prefix and text analysis fields (stopwords, stemmer, ascii_folding).
Same approach as the regular client: the sync client is the source of
truth and tools/async_client_generator produces the async version.
The serverless generator delegates to AsyncQdrantRemote, awaits the
CollectionsService stub RPCs (awaitable on the aio channel the async
remote already builds), and drops the sync context manager. The file is
covered by the async-client-consistency-check like the other generated
clients.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R25zh9xS78xMHgPcoFaUdw
Serverless exposes the same point-level API as a regular cluster (minus
read consistency, shard selection, write ordering and filtered updates),
but a simplified tenant-facing collection management API.
- qdrant_client/serverless: dedicated module, nothing added to the
top-level package
- gRPC stubs generated from qdrant-cloud-public-api's
serverless/collections.proto (renamed to serverless_collections.proto
to avoid a descriptor-pool filename clash with the regular client's
collections.proto), kept internal
- hand-written pydantic models for the serverless collection config,
reusing the existing Distance/TokenizerType enums
- point operations delegate to an internal QdrantRemote(prefer_grpc=True)
with trimmed signatures; collection operations talk to the serverless
CollectionsService on the same channel
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R25zh9xS78xMHgPcoFaUdw
* 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>
* 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>
* Connection pooling in GRPC
* Undo auto formattings
* Make next_grpc_client() protected
* Prevent partial initialization of grpc clients on channel creation error
* also apply pool_size to rest client
* Fix using non clamped pool_size in httpx
* Review remarks
* fix: fix minor things (#1075)
---------
Co-authored-by: George <george.panchuk@qdrant.tech>
* generate grpc client with pyi files
* poetry lock
* new: do not include pyi files into the package
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* 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>
* rest client in separate env generation
* rest client in separate env generation
* GRPC generation
Two options for it to work:
Manually switch to python 3.10 using poetry env use python3.10 or just have python3.10 available in PATH explicitly
* Rebuild to venv management
* Create new env using venv & install & clean up
* nit: some generators improvements (#941)
* nit: some generators improvements
* fix: check which python is available in generators
* fix: address AI comments
* fix: address ai comments
---------
Co-authored-by: d.rudenko <dimitriyrudenk@gmail.com>
Co-authored-by: George <george.panchuk@qdrant.tech>
* wip: add draft implementation of batch processing
* fix: embed dict and list of docs, remove redundant code
* new: regen async, small refactor
* refactor: add docstrings, rename methods
* Upload points local inference (#881)
* new: separate single and plural model embeddings
* fix: fix lazy embed models
* new: add inference object inspections to upload methods
* wip: local inference upload parallel
* new: add local inference to upload points and upload collection, refactor mixin
* fix: remove redundant code
* redundant import
* tests: check is query for query points batch
* refactor: refactor semi ordered map
* tests: add test for local inference with batches with docs and vectors
* tests: check the order of dict processing
* new: distinguish models by options
* fix: fix typing
* fix: fix types
* new: embed batches with different options
* tests: add tests for batch with different options
* fix: ignore ide incorrect type inspection
* tests: wait for points to be inserted
* fix: set threads to 1 in parallel inference
* new: adjust max internal batch size
* fix: fix type hints
* function to get embeddings size (#892)
* function to get embeddings size
* async client
* keep sync
* new: extend embedding size to support image and late interaction models
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* new: add local inference batch size (#894)
---------
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
* 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: handle type_params for Python 3.12+
Refs: #725
* refactor: use kwargs in visit_FunctionDef while handling type_params for Python 3.12+
- Refactored visit_FunctionDef to utilize **kwargs for argument handling.
* refactor: pass positional arguments for AsyncFunctionDef with conditional type_params handling
- Refactored visit_FunctionDef to pass parameters as positional arguments to AsyncFunctionDef.
* expose grpc channel-level compression settings in base functions
* expose grpc channel-level compression settings in remote classes
* expose grpc channel-level compression settings in client
* raise TypeError for compression
* added test cases for grcp channel-level compression
* move grpc_compression parameter from client's signature to **kwargs
* use grpc.Compression instead of creating new enum qdrant.grpc.Compression in qdrant/grpc/__init__.py
* refactor grpc_compression type hint
* fix: Compression instead of grpc.Compression in type hint
* tests: move and update tests
* chore: remove magic method
* fix: fix async client generator, update precommit dependencies
* fix: update isort options
* fix: update dev dependencies
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* draft
* thread sparse_vectors_config through
* test ingest sparse data
* make async_client consistent for create collection
* regen async
* align client hierarchy
* do not give up
* disable async consistency check for now
* regen
* workaround async client breakage
* generate gRPC
* new healtcheck proto files
* fix gen branch
* fix grpc generation - had to reinstall to downgrade grpcio
* bump test docker image
* wait for update when migrating
* regen REST + update config
* add sparse search congruence
* congruence scroll sparse vectors
* congruence test retrieve sparse
* more sparse tests and waiting on remote
* remove healthcheck service
* misc
* reinstate len check
* fix scoring if no overlap
* sparse distance as numpy float without rounding
* fix payload selector
* fix payload exclude
* dedicated collection name to not collide with openapi engine tests
* fix with_vector, scoring no overlap, closeness assetion
* convert float only once
* regen gRPC to exclude health_check
* code review cleanup
* validate and sort sparse vector before persistence
* regen REST
* test deletes and update with fix
* fix async client
* fix batch size
* fix async client
* don't give up
* remove validated todo
* fix sparse vectors loading test
* fix sparse vectors loading test
* rm empty
* mention sparse vectors in the fake local info
* fix upload collection wait propagation
* fix async. init_from tests
* resync async
* rework test sparse vector generation
* regen clients
* update to dev
* update REST models
* async client
* do not change it yet
* fix migration test
* do not create a sparse configuration by default
* fix backward compatibility by disabling serialization of none fields
* fix type imports
* regen gRPC
* test BatchVectorStruct REST to gRPC conversion
* test gRPC->REST conversion
* sparse grpc tests and conversions fix
* generate async client
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* * chore(.gitignore): add docs/source/examples/*/*/* to ignore list
* * feat(docs): add new modules and subpackages to qdrant_client documentation
* * docs(qdrant_client): update QdrantClient documentation to include information about async versions
* * docs(index.rst): update link to complete client API docs
* * chore(pyproject.toml): remove unused dependencies from dev group
* feat(pyproject.toml): add dependencies for documentation group
* * chore(pyproject.toml): update ipython dependency version to 8
* fix(pyproject.toml): fix typo in Pygments dependency version
* * chore(generate_docs_netlify.sh): remove unnecessary pip installations and fix newline at end of file
* * docs(index.rst): update Qdrant Client Documentation title to include [Python]
* docs(index.rst): update Qdrant Client Documentation description to include vector search engine
* docs(index.rst): update recreate_collection code example to include vectors_config parameter
* * docs(index.rst): add code samples for async client support
* * chore(conf.py): exclude grpc and tests directories from documentation build
* * docs(index.rst): fix title of Qdrant Python Client Documentation
* docs(index.rst): remove unnecessary link to test file in async mode section
* docs(index.rst): add missing classes to API Reference section
* * chore(conf.py): exclude local directory from documentation generation
* * docs(quickstart.ipynb): update section title from "Points, Upsert and Search without `fastembed`" to "Qdrant without `fastembed`"
* * chore(conf.py): exclude tests from documentation by updating exclude_patterns