* 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>
* 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
* 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>
* fix: turn on test no fastembed
* fix: ignore input
* Update fastembed tests job name
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
* 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>
* Add skeleton for fastvector registration
* * fix(qdrant_client.py): fix import statement for QdrantClientMixin from fastembed instead of fastvector
* fix(qdrant_client.py): remove unnecessary print statement
* * chore(README.md): add bullet point for extensive test coverage
* feat(README.md): add section for Fast Embeddings + Simpler API
* fix(README.md): fix formatting of code block and update code example for Qdrant Client usage
*
* * fix(qdrant_client.py): remove unused imports and code
* feat(qdrant_client.py): add support for adding and querying documents with fastembed installed
* test(qdrant_client.py): add tests for adding and querying documents with and without fastembed installed
* * feat(qdrant_client.py): add support for fastembed.qdrant_mixin.QdrantAPIExtensions for upsert_docs and search_docs methods
* * fix(qdrant_client.py): remove unused import of SearchParams
* feat(qdrant_client.py): add return type hint to QdrantClient.search_docs method
* * fix(qdrant_client.py): fix import statement for SearchParams class in qdrant_client.py
* * feat(models.py): add QueryResponse model for handling query responses
* * feat(qdrant_client.py): add batch_iterable method to QdrantClient class
* * chore(qdrant_client.py): reformat code for better readability
* * chore(test_qdrant_client.py): add type hinting to fastembed_setup fixture
* test(test_qdrant_client.py): add test for client_close function
* * chore(.gitignore): add pattern for ignoring .tar.gz files
* * refactor(test_qdrant_client.py): remove unused imports and variables
* chore(test_qdrant_client.py): reformat import statements for better readability
* * chore(test_qdrant_client.py): remove unused fixtures and test cases
* * chore(qdrant_client.py): remove unused imports
* Add test skeleton
* * chore(.gitignore): add local_cache/*/* to ignore local cache files
* * fix(qdrant_client.py): change import statement for fastembed to use DefaultEmbedding instead of FlagEmbedding
* refactor(qdrant_client.py): refactor code to remove unnecessary loop
* * fix(qdrant_client.py): import missing models in qdrant_client.py
* feat(qdrant_client.py): add support for search parameters in search method
* refactor(qdrant_client.py): refactor indexing logic to handle embeddings correctly
* * test(test_fast_embed.py): add assertion to verify count of documents in collection
* test(test_fast_embed.py): remove unused code
* test(test_fast_embed.py): add TODO comment for future assertions
* * chore(pyproject.toml): add optional fastembed group to poetry dependencies
* feat(pyproject.toml): add fastembed dependency to fastembed group
* * chore(qdrant_client.py): add check for fastembed installation in QdrantClient constructor
* * fix(test_fast_embed.py): skip test if FastEmbed is not installed
* fix(test_fast_embed.py): add default values for test_no_install parameters
* fix(test_fast_embed.py): skip test if FastEmbed is installed
* Delete unused usage file
* * chore(models.py): remove unused QueryResponse class
* feat(qdrant_client.py): add QueryResponse class
* * refactor(qdrant_client.py): organize imports and fix type hinting for QueryResponse class
* review fixes
* make mypy happy
* review fixes
* fix mypy
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* * chore(integration-tests.yml): remove MacOS from the matrix of operating systems
* chore(integration-tests.yml): remove setup for docker on MacOS
* enable macos tests on dispatch
* rename workflow
* do not run congruence tests on macos
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* Enable testing on windows and macos
* Add platform to the name
* Add Docker on MacOS
* Temporarily disable tests on Windows
* Explicitly set ports to be opened
* Add problematic case for MacOS
* Increase the timeout in tests
* WIP: generate models and conversions
* update quantization param + match any condition + test
* update versions
* consistent naming
* use old grpc types generator
* fix: update type hints
* disable match-any in backward comp test
---------
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
* fix: update missing return types and other mypy complaints, add mypy and pyright
* new: add mypy and pyright to ci, update type hints
* fix: add types group in pyproject.toml, add types-protobuf
* fix: fix typo
* fix: fix return types in api
* Upgrade typing-extensions to ^4.0.0
* Run the integration tests on different python versions
* upd pytest
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
* upd version
* enable CI on all PRs
* update client - json as a payload + typed index (#31)
* update client - json as a payload + typed index
* refactor
* upd docker version in tests
* New condition filters (#33)
* upd rest for new filter conditions
* update gprc client
* proper shutdown on upload error
* rm debug print