Andrey Vasnetsov
aeecb1f0fc
Generate *.pyi files for EDGE ( #7943 )
...
* generate pui files for edge functions
* fix stup for `lambda_`
2026-02-09 23:17:27 +01:00
Andrey Vasnetsov
0ed3a3a5ee
simplify edge config ( #7933 )
...
* simplify edge config
* Accept default vector config or explicit vector config map when creating `EdgeConfig`
* fixup! Accept default vector config or explicit vector config map when creating `EdgeConfig`
Update examples
* upd tests
* bump edge version to v0.5.0
---------
Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com >
2026-02-09 23:12:30 +01:00
Roman Titov
da70bf13c6
Update qdrant-edge-py version to 0.4.0 ( #7926 )
...
* Update `qdrant-edge-py` version to 0.4.0
* fixup! Update `qdrant-edge-py` version to 0.4.0
🙄 🙄 🙄
2026-02-09 23:08:27 +01:00
Roman Titov
3184b53a32
Rename edge::Shard into edge::EdgeShard ( #7925 )
2026-02-09 23:08:22 +01:00
Roman Titov
1a15be85ef
Flush edge::Shard on Drop ( #7911 )
...
And add explicit `flush` and `close` methods
2026-02-09 23:07:20 +01:00
Andrey Vasnetsov
765c4ef7cb
bump edge version to 0.2.0
2026-02-09 23:03:18 +01:00
Roman Titov
4c7ed0de44
Implement info request for Qdrant Edge ( #7890 )
...
* Implement `edge::Shard::info`
* Add `ReprStr` marker-trait
* Add Python bindings for payload index types
* Implement `PyShard::info`
* fixup! Add Python bindings for payload index types
Add `enable_hnsw` fields
* add __repr__ and exted tests
---------
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com >
2026-02-09 23:02:57 +01:00
Andrey Vasnetsov
8cdc8dea94
Add pyo3 signature annotations with default values for all Py* structs ( #7891 )
...
* Add pyo3 signature annotations with default values for all Py* structs
- Added #[pyo3(signature = (...))] attributes to all Py* structs with optional parameters
- Ensured non-default parameters come before parameters with defaults
- Follows the pattern established in PyScrollRequest
- Updated structs: PySearchRequest, PySearchParams, PyQuantizationSearchParams,
PyAcornSearchParams, PyQueryRequest, PyPrefetch, PyOrderBy, PyMmr, PyPoint,
PyFormula, PyShard::load, PySparseVectorDataConfig, PySparseIndexConfig
* fix params ordering
2026-02-09 22:56:49 +01:00
Roman Titov
fd18177766
Implement scroll and count requests for Qdrant Edge ( #7880 )
...
* Cleanup `shard` crate module declarations
* Move `ScrollRequestInternal` into `shard` crate
* fixup! Move `ScrollRequestInternal` into `shard` crate
Fix imports
* fixup! Move `ScrollRequestInternal` into `shard` crate
`const fn default_*`
* Implement `edge::Shard::scroll`
* fixup! Implement `edge::Shard::scroll`
Re-export `OrderByInterface`
* Cleanup `edge` module declarations
* Cleanup `qdrant-edge-py` module declarations
* Move `PyWithPayload` and `PyWithVector` into `types::query`
* Add `PyScrollRequest` type
* Implement `PyShard::scroll`
* Move `CountRequestInternal` into `shard` crate
* fixup! Move `CountRequestInternal` into `shard` crate
Fix imports
* fixup! Move `CountRequestInternal` into `shard` crate
Rename `default_exact_count` into `CountRequestInternal::default_exact`
* Implement `edge::Shard::count`
* Implement `PyShard::count`
* review: offset for scroll, default values, examples
* ai review
---------
Co-authored-by: generall <andrey@vasnetsov.com >
2026-02-09 22:55:21 +01:00
Andrey Vasnetsov
85d4d1d23c
remove rocksdb from creating snapshots path ( #7854 )
...
* remove rocksdb from creating snapshots path
* disable rocksdb in tests
* disable rocksdb in tests
* fix clippy
* fmt
* fix clippy again
* less default payload storage types
* fix another test, which assumed rocksdb
2026-02-09 22:39:34 +01:00
Andrey Vasnetsov
906136346b
restore snapshot in edge ( #7852 )
...
* Restore shard snapshot in Edge python bindings
* method to request snapshot manifest
* move snapshot manifest into Shard crate
* move shapshot manifest reading
* implement inplace update of the shard from snapshot
* fmt
* move shapshot-related functions again, into a dedicated struct
* fmt
* implement partial snapshot recovery for edge
* test for partial recoverying snapshot on edge
2026-02-09 22:36:13 +01:00
Roman Titov
bc6e25969e
Fix CI 😬 ( #7796 )
2025-12-18 17:29:17 +01:00
Roman Titov
51bed3387b
Qdrant Edge Python release CI workflow ( #7562 )
2025-12-18 17:29:17 +01:00
Luis Cossío
3d3df6bd3c
[feedback query] Rename to Naive strategy ( #7756 )
...
* Rename to `Naive` strategy. Remove generic `TStrategy`
* refactor in async_raw_scorer too
* review nit
2025-12-18 17:28:50 +01:00
Roman Titov
962070c686
Implement __repr__ for Qdrant Edge types (Part 3) ( #7744 )
2025-12-18 17:28:49 +01:00
dependabot[bot]
489b3de868
build(deps): bump derive_more from 2.0.1 to 2.1.0 ( #7776 )
...
Bumps [derive_more](https://github.com/JelteF/derive_more ) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/JelteF/derive_more/releases )
- [Changelog](https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md )
- [Commits](https://github.com/JelteF/derive_more/compare/v2.0.1...v2.1.0 )
---
updated-dependencies:
- dependency-name: derive_more
dependency-version: 2.1.0
dependency-type: direct:production
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>
2025-12-18 17:28:49 +01:00
Roman Titov
d0d1c3ded4
Implement __repr__ for Qdrant Edge types (Part 2) ( #7742 )
...
* Implement `__repr__` for `PyJsonPath`
* Implement `__repr__` for `PyFilter`
* Implement `__repr__` for `PyQuery`
* Implement `__repr__` for `PyQueryRequest`
* Implement `__repr__` for `PySearchRequest`
* Implement `__repr__` for `PyFilter` using `pyclass_repr` attribute
* Implement `__repr__` for `PyQuery` using `pyclass_repr` attribute
* Implement `__repr__` for `PyQueryRequest` using `pyclass_repr` attribute
* Implement `__repr__` for `PySearchRequest` using `pyclass_repr` attribute
2025-12-18 17:28:22 +01:00
Roman Titov
0e7727c2fe
Implement __repr__ for Qdrant Edge types ( #7695 )
...
* Refactor `PyUpdateOperation` constructors
* Add default parameters to `PyVectorDataConfig::new`
* Add `Repr` trait and `WriteExt` helper
* Implement `__repr__` for config types
* fixup! Implement `__repr__` for config types
Use `Copy` instead of `Clone`
* fixup! Implement `__repr__` for config types
Add basic test
* Implement `__repr__` for `PyPointId`
* Implement `__repr__` for `PyVector`
* Implement `__repr__` for `PyVectorInternal`
* Implement `__repr__` for `PyPayload`
* Implement `__repr__` for `PyValue`
* Implement `__repr__` for `PyPoint`
* Implement `__repr__` for `PyPointVectors`
* Implement `__repr__` for `PyRecord`
* Move `PyScoredPoint` into a separate file
* Implement `__repr__` for `PyScoredPoint`
* Cleanup examples
* fixup! Implement `__repr__` for `PyScoredPoint`
* Move `PyOrderValue` into separate file
* Add `PyScoredPoint::order_value`
* Implement `pyclass_repr` proc-macro attribute
* Implement `__repr__` for config types using `pyclass_repr` attribute
* Implement `__repr__` for `PySparseVector` using `pyclass_repr` attribute
* Implement `__repr__` for `PyPoint` using `pyclass_repr` attribute
* Implement `__repr__` for `PyPointVectors` using `pyclass_repr` attribute
* Implement `__repr__` for `PyRecord` using `pyclass_repr` attribute
* Implement `__repr__` for `PyScoredPoint` using `pyclass_repr` attribute
* Minor fixes and cleanups
* fixup! Minor fixes and cleanups
* rollback copy for quantization config
* rollback copy for quantization config
---------
Co-authored-by: generall <andrey@vasnetsov.com >
2025-12-18 17:28:22 +01:00
dependabot[bot]
744561ac12
build(deps): bump pyo3 from 0.27.1 to 0.27.2 ( #7725 )
...
Bumps [pyo3](https://github.com/pyo3/pyo3 ) from 0.27.1 to 0.27.2.
- [Release notes](https://github.com/pyo3/pyo3/releases )
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md )
- [Commits](https://github.com/pyo3/pyo3/compare/v0.27.1...v0.27.2 )
---
updated-dependencies:
- dependency-name: pyo3
dependency-version: 0.27.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-18 17:26:56 +01:00
Roman Titov
38f5ac2bae
Qdrant Edge Python bindings improvements (Part 2) ( #7639 )
2025-12-18 17:26:07 +01:00
Roman Titov
1de85b956e
Qdrant Edge Python bindings improvements ( #7561 )
...
* Use anonymous lifetime in `FromPyObject` implementations
* Use `PyResult` in `IntoPyObject` implementations
* Cleanup imports and derives
* Cleanup `filter` conversions
* Add `PointVectors` getters
* Move `config` module into sub-directory
* Split `config` into sub-modules
* Simplify enum bindings
* Add zero-cost conversions for `PyVectorDataConfig` and `PySparseVectorDataConfig`
* Add getters to config structures
* fixup! Add getters to config structures
More zero-cost conversions for `PyVector*DataConfig`
* Implement `PyHnswIndexConfig`
* Implement `PyQuantizationConfig`
* fixup! Simplify enum bindings
* fixup! Implement `PyHnswIndexConfig`
* fixup! Implement `PyHnswIndexConfig`
* fixup! Implement `PyHnswIndexConfig`
* Implement `PySparseVectorDataConfig`
* fixup! Implement `PySparseVectorDataConfig`
* fixup! Implement `PySparseVectorDataConfig`
2025-12-03 10:18:53 +01:00
Andrey Vasnetsov
a7ce948275
implement shard key init state in grpc ( #7522 )
...
* implement shard key init state in grpc
* Update lib/api/src/grpc/proto/collections.proto
Co-authored-by: Tim Visée <tim+github@visee.me >
* sync grpc autogen
---------
Co-authored-by: Tim Visée <tim+github@visee.me >
2025-11-14 12:31:06 +01:00
Arnaud Gourlay
f3bbed6fee
Bump Pyo3 to 0.27.1 for Edge ( #7519 )
2025-11-14 12:31:06 +01:00
Andrey Vasnetsov
536fbd0399
Fusion & MMR support in Edge ( #7491 )
...
* introduce rescore stage to handle fusion in shard properly
* make shard-stage and collection-stage rescoring explicit
* review fixes
2025-11-14 12:31:05 +01:00
Roman Titov
e175c138dc
Cleanup edge_py::types::filter module ( #7490 )
...
Co-authored-by: generall <andrey@vasnetsov.com >
2025-11-14 12:31:05 +01:00
Arnaud Gourlay
d6459c1913
Try fixing Dependabot ( #7509 )
...
* Try fixing Dependabot
* oh come on
2025-11-14 12:31:04 +01:00
Arnaud Gourlay
e3251b9c16
Fix missing workspace lints ( #7507 )
2025-11-14 12:31:04 +01:00
Roman Titov
5b5b5b8625
Implement PyQuery conversions ( #7481 )
...
* Rename `PyVectorType` into `PyNamedVector` 😠
* Move `PyQuery` into `types::query`
* Implement `PyQuery` conversions
* Use `bytemuck` to safely transmute between `edge-py` wrapper types (#7488 )
2025-11-14 12:31:04 +01:00
Roman Titov
233c1a0ccd
Improvements to Qdrant Edge Python bindings ( #7473 )
...
* Cleanup `examples/qdrant-edge.py`
* Cleanup `edge_py::types::vector` module
* Cleanup `edge_py::types::filter::condition` module
* Extend `PyWithPayload` type
* Use `from` instead of `into` for conversions
* Assert variants for enum conversions
2025-11-14 12:31:03 +01:00
Roman Titov
f010382630
Implement edge_py::Shard::query ( #7465 )
2025-11-14 12:30:14 +01:00
xzfc
828f6bc275
Misc edge dev env fixes ( #7456 )
2025-11-14 12:30:12 +01:00
xzfc
af32c530d3
Expose AcornSearchParams to edge Python bindings ( #7455 )
2025-11-14 12:30:12 +01:00
xzfc
21329ca529
Add ACORN-1 search ( #7414 )
...
* GraphLayersBase::try_for_each_link
* Add FilteredScorer::score_points_unfiltered
* Add GraphLayersBase::search_on_level_acorn()
* Add SearchParams::acorn API parameter
* Integrate ACORN to HNSW search
* Add doc
* review fixes
* Misc fixes
---------
Co-authored-by: generall <andrey@vasnetsov.com >
2025-11-14 12:30:12 +01:00
Andrey Vasnetsov
b219a61119
derive Eq for Filter (and underlying types) ( #7419 )
...
* derive Eq for Filter (and underlying types)
* fix tests
* use ptr to compare and hash CustomIdChecker
* fix gpu test
* fmt
* use OrderedFloat directly
* post-rebase fixes
* fmt
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com >
2025-11-14 12:29:34 +01:00
Andrey Vasnetsov
6b1c0557b8
implement all point update operation constructors ( #7424 )
2025-11-14 12:29:34 +01:00
Andrey Vasnetsov
3cd1d00b4b
edge filter conversions ( #7423 )
...
* initial filter conversion structure
* implement match conditions
* implement range condition
* implement filter condition
* implement geo conditions
* fmt
* finish field conditions
* implement more conditions
* implement nested + expose python exports
* fix spelling
2025-11-14 12:29:33 +01:00
Andrey Vasnetsov
0c030543b8
rollback pyvector implementation ( #7422 )
2025-11-14 12:29:33 +01:00
Roman Titov
8ee2d6e61c
More type conversion for Qdrant on Edge Python bindings ( #7372 )
...
* Cleanup `edge::Shard::retrieve`
* Cleanup Python errors
* Cleanup `PointId` conversions
* Rename `ids` into `point_ids` in `PyShard::retrieve`
* WIP: Prototype native conversions for more types
2025-11-14 12:28:14 +01:00
Roman Titov
144dc3811e
Type conversions into native Python types for Qdrant on Edge ( #7367 )
...
* Cleanup README.md
* Rename `PyResult` into `Result`
* Rename `interface` module into `types` and simplify imports
`wildcard::goes::brrr::*`
* Add `PointId` conversion
* Add `Payload` conversion
* fixup! Add `Payload` conversion
Avoid cloning `Payload` for output conversion
* fixup! Add `PointId` conversion
Fix example
* review fixes #1 : fix uuid parsing, avoid .into, use custom types
* review fixes #2 : rewrite point id to avoid chain if
* review fixes #3 : allow ot use uuid + remove comment
---------
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com >
2025-11-14 12:28:14 +01:00
Andrey Vasnetsov
51b3a62977
edge retrieve api ( #7344 )
...
* refactor: move RecordInternal into Shard crate
* refactor: move retrieve_blocking into Shard crate
* implement retrieve method + move some structures into dedicated files
2025-11-14 12:27:29 +01:00
Roman Titov
87289eb507
WIP: Extend Qdrant Edge Python bindings ( #7343 )
2025-11-14 12:27:28 +01:00
Roman Titov
7977dbf9e7
Python bindings for Qdrant on Edge ( #7312 )
...
* Qdrant Edge Python binding 🐍 ⛓️ 💥
* fixup! Qdrant Edge Python binding 🐍 ⛓️ 💥
Fix example + cleanup
* review: move QueryEnum + mark search as deprecated
---------
Co-authored-by: generall <andrey@vasnetsov.com >
2025-11-14 12:27:28 +01:00