Commit Graph

620 Commits

Author SHA1 Message Date
Andrey Vasnetsov
57b1428817 Shard key (#2808)
* introduce shard_key to shard info API and shard holder

* Remove obsolete move

* Update OpenAPI and gRPC specification

* fix shard key mapping condition

---------

Co-authored-by: timvisee <tim@visee.me>
2023-10-13 13:36:13 +02:00
Arnaud Gourlay
c42cb131e4 Fix formatting of new gRPC health check (#2769) 2023-10-09 10:04:34 +02:00
kwkr
55b7cf582d add grpc compliant health check (#2738)
* add grpc compliant health check

* add source link
2023-10-06 12:13:01 +02:00
Arnaud Gourlay
3bff12dba6 Make GeoPolygon interiors optional (#2766) 2023-10-05 18:34:39 +02:00
Zein Wen
5c7b57c970 Extend GeoPolygon to support interiors (#2315)
* Extend GeoPolygon to support interiors (#2315)

Per GeoJson, we should support polygon with exterior and interiors (holes on the surface) in Geo Filter by Polygon(#795). This commit extend current GeoPolygon filter to accept interiors. It includes:

1. changes to proto and internal GeoPolygon struct, and validation fn
2. add and refactor some tests
3. add integration test

* add gRPC geo_polygon validation

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
2023-10-04 11:57:51 +02:00
Arnaud Gourlay
252c1026c6 Validate empty filter condition (#2745)
* Validate empty filter condition

* Validate filter objects in other requests

* Propagate nested filter validation

* add gRPC validation

* make match exhaustive with explicit variants

---------

Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
2023-10-04 08:37:32 +02:00
Ivan Pleshkov
3ffaa76d8c Search rescoring modes (#2628)
* search rescoring modes

* fix tests build

* use bool option in rest api

* minor refactoring

* fmt

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2023-09-24 16:27:05 +02:00
Luis Cossío
faab742048 Allow vectors in recommend API (#2693)
* allow raw vectors in recommend

* add openapi test

* keep point id input separately forever in grpc

* minor fix

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2023-09-24 15:31:27 +02:00
Luis Cossío
e98a3c7d3d Expose new recommend scorer via recommend strategy (#2662) 2023-09-22 17:18:25 -03:00
Roman Titov
789992d3f7 Fan out read operations if local shard is updated (#2642)
* Fan-out read operations if local shard is being updated

* Implement `is_update_in_progress` check for all shard types

* fixup! Implement `is_update_in_progress` check for all shard types

Reverse conditional 🤦‍♀️

* WIP: Add `read_fan_out_factor` collection parameter...

...and refactor `execute_read_operation`/`execute_and_resolve_read_operation` to use it reasonably

* WIP: Refactor `info` and `count` requests to utilize `read_fan_out_factor` properly

* fixup! WIP: Refactor `info` and `count` requests to utilize `read_fan_out_factor` properly

Fix typo

* fixup! WIP: Add `read_fan_out_factor` collection parameter...

Initialize `read_fan_out_factor` in tests

* fixup! WIP: Add `read_fan_out_factor` collection parameter...

Add `TODO` marker (:

* fixup! WIP: Add `read_fan_out_factor` collection parameter...

* fixup! fixup! WIP: Add `read_fan_out_factor` collection parameter...

* fixup! fixup! fixup! WIP: Add `read_fan_out_factor` collection parameter...

🤦‍♀️

* Add `read_fan_out_factor` to required HTTP and gRPC APIs

* WIP: Generate OpenAPI spec and gRPC docs

* fixup! Add `read_fan_out_factor` to required HTTP and gRPC APIs

* fixup! WIP: Add `read_fan_out_factor` collection parameter...

Fix the comment

* Add documentation

* fixup! Add documentation

Update OpenAPI spec and gRPC docs

* optional param by default + comment

* fmt

* rollback test fixes

* review changes

* fmt

* revert api changes

* upd openapi

* upd comment

* fix info api

* resolve merge conflicts

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2023-09-22 21:56:10 +02:00
Luis Cossío
1c5e3ef688 Add core search internal endpoint (#2661)
* add CoreSearch internal endpoint

* Enable search in CoreSearchPoints (grpc)

* remove unnecessary arc clone

* cleanup

* Add copy-paste warning everywhere
- also rename custom_search -> core_search
2023-09-22 12:43:42 -03:00
Roman Titov
abf533671a Refactor lib/common to support adding sub-crates to "common" (#2551) 2023-09-20 13:13:32 +02:00
dependabot[bot]
c468611059 Bump schemars from 0.8.13 to 0.8.15 (#2687)
Bumps [schemars](https://github.com/GREsau/schemars) from 0.8.13 to 0.8.15.
- [Release notes](https://github.com/GREsau/schemars/releases)
- [Changelog](https://github.com/GREsau/schemars/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GREsau/schemars/compare/v0.8.13...v0.8.15)

---
updated-dependencies:
- dependency-name: schemars
  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>
2023-09-19 08:38:27 +02:00
Josh Soref
a0bbc40bc9 Spelling (#2658)
* spelling: accumulating

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: and

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: back

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: batching

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: been

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: benchmark

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: collections

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: confusion

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: consensus

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: decrease

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: equal

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: github

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: minimal

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: nonexistent

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: oversampling

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: paths

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: points

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: prevent

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: protobuf

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: proxied

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: randomness

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: recover

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

---------

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-09-14 11:38:23 +02:00
Tim Visée
bb5635e17b Add method to wait for commit/term on other peers (#2434)
* Add naive wait-on-consensus-commit gRPC call with spinlock

* Add method for waiting on all other nodes to reach a consensus commit

* Fix codespel issue

* Consensus commit spin lock should use consensus tick interval

* Move consensus commit spin lock function into consensus manager module

* Demote function to wait on single peer

* Add explicit timeout to all consensus await commit methods

* Update gRPC docs

* Peer must be on the same term when waiting on a commit

* Update lib/storage/src/content_manager/toc.rs

* Update generated gRPC code
2023-09-13 14:03:56 +02:00
dependabot[bot]
713bb1f85c Bump tonic-build from 0.9.2 to 0.10.0 (#2585)
* Bump tonic-build from 0.9.2 to 0.10.0

Bumps [tonic-build](https://github.com/hyperium/tonic) from 0.9.2 to 0.10.0.
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/commits)

---
updated-dependencies:
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update generated gRPC code

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: timvisee <tim@visee.me>
2023-09-05 11:26:32 +02:00
dependabot[bot]
21f352a3ef Bump schemars from 0.8.12 to 0.8.13 (#2582)
Bumps [schemars](https://github.com/GREsau/schemars) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/GREsau/schemars/releases)
- [Changelog](https://github.com/GREsau/schemars/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GREsau/schemars/compare/v0.8.12...v0.8.13)

---
updated-dependencies:
- dependency-name: schemars
  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>
2023-09-05 09:47:11 +02:00
Tim Visée
1d05b9f3ef Centralize common validation functions (#2548)
* Centralize generic range validation

* Centralize validate not empty

* Centralize collection name validation

* Add geo polygon validation in REST API and centralize validation

* Add tests for common validation functions

* Don't use reference in generic range validation function

* Other improvements
2023-09-04 10:57:24 +02:00
Tim Visée
547e602ee1 Limit vector dimension to 65536 (#2544)
* Limit vector dimension to 65536

* Add integration test for new dimension limit
2023-08-31 11:39:05 +02:00
Roman Titov
36e317d623 Shard snapshot API (#2410)
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2023-08-30 12:41:29 +02:00
Camden Cheek
9481ed2995 Add gRPC reflection server (#2483)
* add gRPC reflection server

* add basic integration tests

* only advertise public services

* appease linter
2023-08-25 17:18:17 +02:00
Arnaud Gourlay
790103f888 Fix lints for Clippy 1.72 (#2476) 2023-08-24 16:43:34 +02:00
Ivan Pleshkov
d14d2c2e36 binary quantization (#2470)
* binary quantization

* update quantization version

* fix quantizing bug

* are you happy fmt
2023-08-21 21:16:27 +02:00
dependabot[bot]
13bc878868 Bump tokio from 1.31.0 to 1.32.0 (#2460)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.31.0 to 1.32.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.31.0...tokio-1.32.0)

---
updated-dependencies:
- dependency-name: tokio
  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>
2023-08-18 08:59:42 +02:00
Tim Visée
11ff28dc40 Add internal gRPC call to request remote HTTP port (#2406)
* Add gRPC endpoint to request remote HTTP port

* Add basic gRPC test for fetching remote HTTP port

* Extract gRPC endpoint for fetching HTTP port into internal service

* Add basic internal gRPC test

* Other minor improvements
2023-08-17 09:42:27 +02:00
Tim Visée
ea89a003aa Remove Google's protobuf types (#2454)
* Use built-in well known types from prost

* Remove Google's well known protobuf types
2023-08-17 09:34:20 +02:00
Di Zhao
034b46e83e Add indexed_only to speed up search (#2431)
* add ignore_plain_index to speed up search

* remove unnecessary & for vectors_batch

* format

* add special handle for proxy segments where the wrapped segment is plain
indexed

* review refactoring

* rollback changes in google.protobuf.rs

---------

Co-authored-by: Di Zhao <diz@twitter.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2023-08-16 10:56:44 +02:00
Roman Titov
6fe7410261 tracing improvements (#2187)
* Add optional `tracing` crate dependency to all `lib/*` sub-crates

* Add optional alternative "tracing-logger"...

...that works a bit better with logs produced by the `tracing` crate

* Make `tracing-logger` reuse `log_level` config parameter (and `QDRANT__LOG_LEVEL` env-var)...

...instead of default `RUST_LOG` env-var only

* Replace `env_logger` with `tracing` (#2381)

* Replace `env_logger` with `tracing`/`tracing-subscriber`/`tracing-log`

TODO:
- Implement slog drain that would *properly* convert slog records into tracing events
  (`slog-stdlog` is fine for now, though)

* fixup! Replace `env_logger` with `tracing`/`tracing-subscriber`/`tracing-log`

Fix `consensus` test

* fixup! fixup! Replace `env_logger` with `tracing`/`tracing-subscriber`/`tracing-log`

Forget to `unwrap` the result 🙈

* fixup! fixup! Replace `env_logger` with `tracing`/`tracing-subscriber`/`tracing-log`

`tracing_subscriber::fmt::init` initializes `tracing_log::LogTracer`
automatically with default `tracing-subscriber` features enabled 💁‍♀️

* Update `DEVELOPMENT.md` documentation regarding `tracing`

* Update default log level for development to make it less noisy

---------

Co-authored-by: timvisee <tim@visee.me>

* Implement "intelligent" default log-level filtering

---------

Co-authored-by: timvisee <tim@visee.me>
2023-08-15 18:44:44 +02:00
Andrey Vasnetsov
cef835b02d Query scorer refactoring (#2430)
* refactor query_scorer for simple raw_scorer impl

* fmt

* refactor query_scorer for simple raw_scorer impl

* refactor query_scorer for simple raw_scorer impl

* decouple scorer and storage, move storage into query scorer

* eliminate quantized raw scorer

* Update lib/api/src/grpc/google.protobuf.rs

Co-authored-by: Tim Visée <tim+github@visee.me>

---------

Co-authored-by: Tim Visée <tim+github@visee.me>
2023-08-15 11:57:20 +02:00
dependabot[bot]
f6c853ba27 Bump tokio from 1.30.0 to 1.31.0 (#2440)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.30.0 to 1.31.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.30.0...tokio-1.31.0)

---
updated-dependencies:
- dependency-name: tokio
  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>
2023-08-15 09:22:52 +02:00
dependabot[bot]
7fb7c2f1f9 Bump tokio from 1.29.1 to 1.30.0 (#2411)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.29.1 to 1.30.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.29.1...tokio-1.30.0)

---
updated-dependencies:
- dependency-name: tokio
  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>
2023-08-11 10:24:37 +02:00
Jesse
a9f9b7fcc9 Add batch update endpoint for points API (#1951)
* Add batch update endpoint for points API

* Add validation to batch update operation

* Update gRPC

* Add update and delete vector operations to point update batch

* Improve batch point update tests, add multivec, extract into module

---------

Co-authored-by: timvisee <tim@visee.me>
2023-08-07 16:16:41 +02:00
Tim Visée
cf013c2b2f update collection: on_disk parameters (#2097)
* Add on_disk_payload field to collections params diff

* Add on_disk flag to update collection vector params

* Add on_disk parameters to collection update integration test

* Update and extend unit tests

* monitor on-disk params in optimizr

* fmt

* review fix

* fmt

---------

Co-authored-by: generall <andrey@vasnetsov.com>
2023-07-31 11:43:39 +02:00
Andrey Vasnetsov
1ea3df92d6 temporary exclude geo_polygon from API (#2352) 2023-07-30 01:29:16 +02:00
Tim Visée
ef692499ee Update collection: quantization config (#2090)
* Reoptimize segments on quantization mismatch

* Add collection quantization params to collection update REST endpoint

* Do not require rebuild of quantization for on_disk change

* Add collection quantization params to collection update gRPC endpoint

* Add option to update vector specific quantization config to REST API

* Add option to update vector specific quantization config to gRPC API

* Update OpenAPI and gRPC specification

* Fix quantization mismatch detecting not working as expected

* Fix config mismatch optimizer not using vector specific quantization

* Add unit test for quantization in config mismatch optimizer

* Add some quantization params to collection update integration test

* Reformat

* Apply suggestions from code review

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>

* Remove if-statement, simply return

* Move quantization params in named vector in integration test

* Test updating quantization params in multivec integration test

* Fix gRPC docs

* Fix quantization rebuild on changing enabled state on indexed segment

* allow disabling quantization config

* fmt

* clippy

* compare all params of the quantization for rebuild

* explicitly use params on update

* test for disabling quantization

---------

Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
Co-authored-by: generall <andrey@vasnetsov.com>
2023-07-28 19:48:08 +02:00
Tim Visée
f551e73629 Update collection: vector HNSW config (#2087)
* Add update vector config type

* Add mutable getter to update vector config

* Add update vector config to update collection REST operation, reorder

* Add logic to update vector HNSW in collection

* Update OpenAPI specification

* If HNSW diff is empty, consider it as unset

* Update descriptions to clarify an empty HNSW diff unsets

* Make new vector HNSW diff update existing diff

This means that the existing vector HNSW diff is kept intact. Specified
fields are updated in the existing diff. An empty HNSW diff object may
be provided to unset the diff.

* Add update vector config to update collection gRPC operation

* Update gRPC docs

* Use vector specific HNSW config in integration test

* Extract & improve gRPC type conversions, fix collection update with None

* Validate vector specific HNSW config in collection update gRPC endpoint

* Explicitly test we do not rebuild on on_disk change

* Use new method to recreate optimizers

* Don't test on_disk change anymore

* Reuse collection write lock to save, do not relock

* Fix invalid update collection request body in OpenAPI test

* Simplify update collection test

* Add update collection test for HNSW parameters

* Extract vector param update logic into local functions

* Reformat

* Transform UpdateVectorParams into VectorParamsDiff

* Transform UpdateVectorsConfig into VectorsConfigDiff

* Combine serde attributes

* Make HNSW diff empty check generic over DiffConfig types

* Move DiffConfig implementation

* Fix typo
2023-07-25 12:19:59 +02:00
Andrey Vasnetsov
5d2ec88276 Second thoughts on CJK tokenizer (#2260)
* charabia tokenizer for CJK, init

* add charabia to .proto

* generate grpc docs

* rename charabia to multilingual

* disable charabia default features

* ignore stopwords and separators in tokenizer

* fix rebase conflict

* fix test

* fix test

* Bump `charabia` crate version...

...and enable `charabia` features that does not require any additional dependencies by default

* Expose optional `charabia` features in the `segment` crate

* Expose optional `charabia` features in the `qdrant` crate

* fix codespell

* more regression tests

* more regression tests

* make language-specific tests feature-flagged

---------

Co-authored-by: Anatolii Smolianinov <zarkonesmall@gmail.com>
Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2023-07-19 14:59:40 +02:00
Tim Visée
4827a362e8 Update collection: HNSW config (#2083)
* Add field to REST collection update to change HNSW config

* Add field to gRPC collection update to change HNSW config

* Update OpenAPI specification

* Update gRPC docs

* Improve optimizer filtering for excluded segment IDs

* Add config mismatch optimizer detecting basic HNSW mismatches

* Trigger optimizers when changing collection HNSW config

* Make config mismatch optimizer aware of vector specific HNSW configs

* Extract triggering optimizers after collection update into function

* Add config mismatch optimizer test for changing HNSW config

* Simplify config mismatch optimizer test

* Add config mismatch optimizer test for vector specific HNSW change

* Reformat

* Update collection HNSW params in integration test

* Validate HNSW config in collection update gRPC endpoint

* Improve description of update collection request

* Do not require to rebuild HNSW when on_disk flag changes

Ref: https://github.com/qdrant/qdrant/pull/2083#discussion_r1231002072

* Do rebuild segment with on_disk change

* Trigger optimizers in parallel

* Recreate optimizers only once on collection update

* Reformat

* Fix incorrect usage of self

* Fix deadlock in collection state config update

* Also rebuild index on full scan threshold change

* decompose worst_segment condition check

* review refactor

* Update lib/storage/src/content_manager/collection_meta_ops.rs

Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>

* Update lib/api/src/grpc/proto/collections.proto

Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>

* upd grpc docs

* upd grpc docs

* update openapi

---------

Co-authored-by: generall <andrey@vasnetsov.com>
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
2023-07-18 14:32:13 +02:00
Zein Wen
79475ea972 Add geo_polygon filter to proto interface, complete conversion fn, and add an integration test (#2188) 2023-07-17 12:36:50 +02:00
Yaroslav Halchenko
6624c95afd codespell: workflow, config, typos fixed (#2248)
* Add github action to codespell master on push and PRs

* Add rudimentary codespell config

* some skips

* fix some ambigous typos

* [DATALAD RUNCMD] run codespell throughout

=== Do not change lines below ===
{
 "chain": [],
 "cmd": "codespell -w",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^

* Add dev branch as target for the workflow
2023-07-12 16:30:42 +02:00
Luis Cossío
a77d6775b2 remove unused Serialize derives in build.rs (#2225) 2023-07-07 10:49:41 +02:00
Luis Cossío
33afc616ce Expose & benchmark binary index (#2174)
* expose boolean index

* benchmark against keyword and no index

* add integration tests

* rename benchmark groups
2023-07-05 09:29:34 -04:00
dependabot[bot]
5fdc81cfe9 Bump tokio from 1.29.0 to 1.29.1 (#2177)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.29.0 to 1.29.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.29.0...tokio-1.29.1)

---
updated-dependencies:
- dependency-name: tokio
  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>
2023-07-03 09:50:19 +02:00
dependabot[bot]
47eedc3aaa Bump tokio from 1.28.2 to 1.29.0 (#2170)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.28.2 to 1.29.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.28.2...tokio-1.29.0)

---
updated-dependencies:
- dependency-name: tokio
  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>
2023-06-28 22:39:26 +02:00
Tim Visée
cb9dbbff87 Validate oversampling (#2100)
* Use unwrap_or_default rather than constructing it manually

* Validate oversampling parameter and surrounding structs

* Validate search limit to be 1 or higher

* Validate hnsw_ef parameter to be 4 or higher

* Also validate parameters in in gRPC

* Update OpenAPI specification

* Add unlikely to reach comment

* Remove hnsw_ef validation rules for now

* Update OpenAPI specification
2023-06-28 14:57:26 +02:00
dependabot[bot]
a1d38a497b Bump uuid from 1.3.4 to 1.4.0 (#2159)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.4 to 1.4.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.3.4...1.4.0)

---
updated-dependencies:
- dependency-name: uuid
  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>
2023-06-28 08:45:00 +02:00
Andrey Vasnetsov
7fd480c704 fix todo (#2089) 2023-06-15 16:25:30 +02:00
Tim Visée
e0f7f704c2 Increase HTTP2 reset stream limit for internal gRPC (#1928)
* Change gRPC channel pool connection limit to 1024

* Patch temporary tonic fork for newly exposed property

* Change internal gRPC `http2_max_pending_accept_reset_streams` to 1024

* Change to qdrant/tonic fork
2023-06-15 16:15:46 +02:00
Andrey Vasnetsov
010e1686f3 oversampling (#2070)
* wip: add rest param

* WIP: Refactor `search_with_graph` to use oversampling

* fixup! WIP: Refactor `search_with_graph` to use oversampling

Fix `search_with_graph` quantization config handling

* fixup! WIP: Refactor `search_with_graph` to use oversampling

Use `truncate` instead of `shrink_to` 🤦‍♀️

* schrink -> truncate

* protection against wrong oversampling value

* Revert second "fixup! WIP: Refactor `search_with_graph` to use oversampling"

Accidentally commited the wrong file 🤦‍♀️

* fix max method notation

* rollbacK: max notation

* Add `oversampling` field to `QuantizationSearchParams` gRPC type

* Simplify `oversampled_top` calculation

* `./tools/generate_grpc_docs.sh`

* `./tools/generate_openapi_models.sh`

---------

Co-authored-by: Roman Titov <ffuugoo@users.noreply.github.com>
2023-06-15 11:57:57 +02:00
Luis Cossío
56712b5cc7 Lookup: expose feature to REST and gRPC interfaces (#2011)
* rename `Lookup` -> `RetrievedLookup`

* feat: expose lookup in groups

- make `with_vectors` and `with_payload` optional
- include in grpc
- move GroupId to inside of PointGroup message
- include `WithLookup` inside of `GroupRequest`, doesn't make sense to keep them separated

* chore: remove allow(dead_code) from builder

* feat: introduce `WithLookupInterface` to allow specifying only the name of the lookup collection

* fix: WithLookupInterface with collection name only brings all payload and vectors

* fix: update grpc docs

* add tests and set better defaults

* remove `RetrievedLookup` from proto

* short-circuit `fill_search_result_with_payload` when it's not needed

* cargo fmt

* proto: revert putting `GroupId` inside `PointGroup`

* update grpc docs

* Remove WithLookupInterface sugar from grpc

- set with_vectors of lookup default to false
- set with_payload of lookup default to true

* update integration tests

* use singular lookup

---------

Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2023-06-07 18:50:09 +02:00