Skip to content

Implement ReplicatePoints in grpc#7536

Merged
generall merged 2 commits intodevfrom
enable-replica-points-in-schema
Nov 14, 2025
Merged

Implement ReplicatePoints in grpc#7536
generall merged 2 commits intodevfrom
enable-replica-points-in-schema

Conversation

@generall
Copy link
Member

@generall generall commented Nov 14, 2025

Unfortunatelly, had to move filter structures into common.proto

@generall generall requested a review from timvisee November 14, 2025 13:49
coderabbitai[bot]

This comment was marked as resolved.

@qdrant qdrant deleted a comment from coderabbitai bot Nov 14, 2025
Copy link
Member

@timvisee timvisee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We currently don't expose a transfer filter publicly in collection info or in telemetry, but we don't see this as critical problem.

Relevant:

let shard_id = shard_transfer.shard_id;
let to_shard_id = shard_transfer.to_shard_id;
let to = shard_transfer.to;
let from = shard_transfer.from;
let sync = shard_transfer.sync;
let method = shard_transfer.method;
let status = tasks_pool.get_task_status(&shard_transfer.key());
shard_transfers.push(ShardTransferInfo {
shard_id,
to_shard_id,
from,
to,
sync,
method,
comment: status.map(|p| p.comment),
})

@timvisee timvisee changed the title implement ReplicatePoints in grpc Implement ReplicatePoints in grpc Nov 14, 2025
zainsohail-star

This comment was marked as spam.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
lib/api/src/grpc/qdrant.rs (1)

1851-1945: Move shard-key validation from conversion layer to gRPC validation layer

The ReplicatePoints message correctly rejects missing from_shard_key and to_shard_key (both checked in lib/collection/src/operations/conversions.rs:1695,1700 with clear error messages), so invalid shard-key combinations are not silently ignored. However, validation occurs in the conversion layer rather than at the gRPC boundary. For consistency with other cluster operations (e.g., MoveShard validates at lib/api/src/grpc/validate.rs:116–125), move the required-field checks from conversions.rs into lib/api/src/grpc/validate.rs:185–188.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1b6e525 and d890525.

📒 Files selected for processing (7)
  • lib/api/src/grpc/proto/collections.proto (4 hunks)
  • lib/api/src/grpc/proto/common.proto (1 hunks)
  • lib/api/src/grpc/proto/points.proto (1 hunks)
  • lib/api/src/grpc/proto/points_internal_service.proto (1 hunks)
  • lib/api/src/grpc/qdrant.rs (6 hunks)
  • lib/api/src/grpc/validate.rs (2 hunks)
  • lib/collection/src/operations/conversions.rs (2 hunks)
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: generall
Repo: qdrant/qdrant PR: 7183
File: lib/api/src/grpc/qdrant.rs:4263-4273
Timestamp: 2025-09-16T19:14:17.614Z
Learning: In qdrant, lib/api/src/grpc/qdrant.rs is auto-generated by prost-build; do not edit it directly. Make changes in lib/api/src/grpc/proto/points.proto (e.g., add [deprecated=true], doc comments, or encoding options), then regenerate the Rust code.
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: docs/redoc/master/openapi.json:13645-13652
Timestamp: 2025-08-10T18:26:12.443Z
Learning: In qdrant, docs/redoc/master/openapi.json is auto-generated from the REST schemas. To change field docs, edit lib/api/src/rest/schema.rs (e.g., add doc comments or #[schemars(description = ...)]). Specifically, UpdateVectors.update_filter lacked a description and should state: "If specified, only update vectors for points that match this filter; points not matching the filter are left unchanged."
Learnt from: coszio
Repo: qdrant/qdrant PR: 7368
File: lib/shard/src/query/mod.rs:313-341
Timestamp: 2025-10-16T13:00:46.809Z
Learning: In the Qdrant codebase, for the `Feedback` query variant in `lib/shard/src/query/mod.rs`, validation for sparse vectors should happen down the line rather than early in the `query_enum_from_grpc_raw_query` function. The `Nearest` variant is treated as a special case where early validation with better error messages is acceptable.
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: lib/collection/src/operations/verification/update.rs:158-174
Timestamp: 2025-08-10T18:30:02.986Z
Learning: In Qdrant's strict mode verification code (lib/collection/src/operations/verification/update.rs), exhaustive pattern matching without `..` is intentionally used for structs like PointsBatch and PointsList. This design pattern ensures compilation fails when new fields are added, forcing developers to explicitly consider how new fields should be handled in the indexed_filter_write method. This provides visibility and compile-time safety for struct evolution.
Learnt from: coszio
Repo: qdrant/qdrant PR: 7065
File: lib/collection/src/operations/universal_query/shard_query.rs:0-0
Timestamp: 2025-08-15T15:56:36.821Z
Learning: Internal gRPC APIs in Qdrant don't require additional runtime validation when proto-level validation is already configured via build.rs range constraints.
📚 Learning: 2025-08-10T18:31:56.855Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: lib/collection/src/operations/point_ops.rs:501-528
Timestamp: 2025-08-10T18:31:56.855Z
Learning: In Qdrant, batch operations validate that `ids`, `vectors`, and `payloads` (if present) have matching lengths at the REST API level in `lib/api/src/rest/validate.rs` through the `Validate` trait implementation for `Batch`. This validation happens before data is converted to internal structures like `PointInsertOperationsInternal`, so methods operating on these internal structures can safely assume the lengths match.

Applied to files:

  • lib/api/src/grpc/validate.rs
📚 Learning: 2025-09-16T19:14:17.614Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7183
File: lib/api/src/grpc/qdrant.rs:4263-4273
Timestamp: 2025-09-16T19:14:17.614Z
Learning: In qdrant, lib/api/src/grpc/qdrant.rs is auto-generated by prost-build; do not edit it directly. Make changes in lib/api/src/grpc/proto/points.proto (e.g., add [deprecated=true], doc comments, or encoding options), then regenerate the Rust code.

Applied to files:

  • lib/api/src/grpc/validate.rs
  • lib/api/src/grpc/proto/common.proto
  • lib/api/src/grpc/proto/points.proto
  • lib/collection/src/operations/conversions.rs
  • lib/api/src/grpc/proto/points_internal_service.proto
  • lib/api/src/grpc/proto/collections.proto
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-10T18:30:02.986Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: lib/collection/src/operations/verification/update.rs:158-174
Timestamp: 2025-08-10T18:30:02.986Z
Learning: In Qdrant's strict mode verification code (lib/collection/src/operations/verification/update.rs), exhaustive pattern matching without `..` is intentionally used for structs like PointsBatch and PointsList. This design pattern ensures compilation fails when new fields are added, forcing developers to explicitly consider how new fields should be handled in the indexed_filter_write method. This provides visibility and compile-time safety for struct evolution.

Applied to files:

  • lib/api/src/grpc/validate.rs
  • lib/api/src/grpc/proto/common.proto
  • lib/collection/src/operations/conversions.rs
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-10-16T13:00:46.809Z
Learnt from: coszio
Repo: qdrant/qdrant PR: 7368
File: lib/shard/src/query/mod.rs:313-341
Timestamp: 2025-10-16T13:00:46.809Z
Learning: In the Qdrant codebase, for the `Feedback` query variant in `lib/shard/src/query/mod.rs`, validation for sparse vectors should happen down the line rather than early in the `query_enum_from_grpc_raw_query` function. The `Nearest` variant is treated as a special case where early validation with better error messages is acceptable.

Applied to files:

  • lib/api/src/grpc/validate.rs
  • lib/collection/src/operations/conversions.rs
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-10T18:26:12.443Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: docs/redoc/master/openapi.json:13645-13652
Timestamp: 2025-08-10T18:26:12.443Z
Learning: In qdrant, docs/redoc/master/openapi.json is auto-generated from the REST schemas. To change field docs, edit lib/api/src/rest/schema.rs (e.g., add doc comments or #[schemars(description = ...)]). Specifically, UpdateVectors.update_filter lacked a description and should state: "If specified, only update vectors for points that match this filter; points not matching the filter are left unchanged."

Applied to files:

  • lib/api/src/grpc/proto/common.proto
  • lib/api/src/grpc/proto/points.proto
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-23T22:24:44.276Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7100
File: tests/openapi/test_fts.py:255-263
Timestamp: 2025-08-23T22:24:44.276Z
Learning: In Qdrant's OpenAPI schema, the `filter.must` field accepts either a single Condition object or an array of Condition objects, not just arrays. The schema uses `anyOf` to allow both formats.

Applied to files:

  • lib/api/src/grpc/proto/common.proto
  • lib/api/src/grpc/proto/points.proto
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-15T15:56:36.821Z
Learnt from: coszio
Repo: qdrant/qdrant PR: 7065
File: lib/collection/src/operations/universal_query/shard_query.rs:0-0
Timestamp: 2025-08-15T15:56:36.821Z
Learning: Internal gRPC APIs in Qdrant don't require additional runtime validation when proto-level validation is already configured via build.rs range constraints.

Applied to files:

  • lib/api/src/grpc/proto/points.proto
  • lib/api/src/grpc/proto/points_internal_service.proto
  • lib/api/src/grpc/proto/collections.proto
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-11T07:57:01.399Z
Learnt from: IvanPleshkov
Repo: qdrant/qdrant PR: 6986
File: lib/segment/src/vector_storage/quantized/quantized_vectors.rs:81-84
Timestamp: 2025-08-11T07:57:01.399Z
Learning: In `lib/segment/src/vector_storage/quantized/quantized_vectors.rs`, the BitsStoreType parameter difference between single-vector and multi-vector Binary quantization is intentional: single-vector storage uses `EncodedVectorsBin<u128, ...>` to enable 128-bit SIMD/popcount optimizations for longer vectors, while multi-vector storage uses `EncodedVectorsBin<u8, ...>` because multivectors are typically shorter and benefit from byte-granular storage.

Applied to files:

  • lib/collection/src/operations/conversions.rs
📚 Learning: 2025-08-10T18:26:33.017Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: docs/redoc/master/openapi.json:10393-10401
Timestamp: 2025-08-10T18:26:33.017Z
Learning: In qdrant, docs/redoc/master/openapi.json is auto-generated. Any description changes must be made in the source (e.g., lib/api/src/rest/schema.rs and/or lib/api/src/grpc/proto/points.proto), not edited directly in the JSON.

Applied to files:

  • lib/api/src/grpc/proto/points_internal_service.proto
  • lib/api/src/grpc/qdrant.rs
📚 Learning: 2025-08-10T18:25:16.206Z
Learnt from: generall
Repo: qdrant/qdrant PR: 7006
File: docs/redoc/master/openapi.json:10626-10634
Timestamp: 2025-08-10T18:25:16.206Z
Learning: In Qdrant, docs/redoc/master/openapi.json is autogenerated from the Rust REST schema definitions (e.g., lib/api/src/rest/schema.rs). To change OpenAPI descriptions, update the Rust struct field doc comments/attributes rather than editing the JSON directly.

Applied to files:

  • lib/api/src/grpc/qdrant.rs
🧬 Code graph analysis (3)
lib/api/src/grpc/validate.rs (1)
lib/collection/src/operations/cluster_ops.rs (5)
  • validate (110-127)
  • validate (212-223)
  • validate (240-247)
  • validate (264-271)
  • validate (275-282)
lib/collection/src/operations/conversions.rs (1)
lib/api/src/grpc/conversions.rs (17)
  • try_from (96-127)
  • try_from (406-416)
  • try_from (436-443)
  • try_from (448-462)
  • try_from (467-477)
  • try_from (482-488)
  • try_from (494-521)
  • try_from (526-567)
  • try_from (573-587)
  • try_from (592-598)
  • try_from (603-613)
  • try_from (618-625)
  • try_from (631-658)
  • try_from (664-705)
  • try_from (731-753)
  • try_from (892-918)
  • convert_shard_key_from_grpc (78-84)
lib/api/src/grpc/qdrant.rs (2)
lib/api/src/grpc/validate.rs (8)
  • validate (14-14)
  • validate (19-21)
  • validate (29-31)
  • validate (39-41)
  • validate (49-54)
  • validate (58-64)
  • validate (68-74)
  • validate (78-85)
lib/segment/src/types.rs (5)
  • validate (869-875)
  • validate (1790-1800)
  • validate (2118-2129)
  • validate (2160-2167)
  • validate (3308-3319)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: rust-tests (ubuntu-latest)
  • GitHub Check: rust-tests (windows-latest)
  • GitHub Check: rust-tests-no-rocksdb (ubuntu-latest)
  • GitHub Check: test-consensus-compose
  • GitHub Check: e2e-tests
  • GitHub Check: test-shard-snapshot-api-s3-minio
  • GitHub Check: integration-tests-consensus
  • GitHub Check: test-consistency
  • GitHub Check: integration-tests
  • GitHub Check: lint
  • GitHub Check: Build Qdrant Edge Python bindings
🔇 Additional comments (15)
lib/api/src/grpc/proto/points_internal_service.proto (1)

4-4: LGTM!

The import of common.proto appropriately provides access to shared types like Filter and PointId for internal service usage.

lib/api/src/grpc/validate.rs (1)

111-111: LGTM!

The dispatch of ReplicatePoints validation is correctly integrated into the operation validation flow.

lib/collection/src/operations/conversions.rs (3)

21-21: LGTM!

The Filter type import is appropriately added to support the optional filter field in ReplicatePoints.


27-27: LGTM!

The imports for ReplicatePoints and ReplicatePointsOperation are correctly added to support the new cluster operation type.


1682-1704: LGTM!

The conversion logic for ReplicatePoints is well-structured:

  • Properly handles optional filter with map(Filter::try_from).transpose()
  • Validates presence of required shard keys with clear error messages
  • Consistently uses convert_shard_key_from_grpc helper matching the pattern used elsewhere in the codebase
lib/api/src/grpc/proto/points.proto (1)

7-7: LGTM!

The import of common.proto appropriately provides access to the refactored types (PointId, Filter, GeoPoint, etc.) that were moved from this file to enable cross-service reuse.

lib/api/src/grpc/proto/collections.proto (5)

7-7: LGTM!

The import of common.proto provides access to Filter and other shared types required by ReplicatePoints and the collection configuration surface.


20-70: LGTM!

The comprehensive vector configuration types (VectorParams, VectorParamsDiff, VectorsConfig, SparseVectorParams, etc.) are well-structured and provide a complete surface for vector configuration and updates.


732-736: LGTM!

The ReplicatePoints message is well-defined with:

  • Required source and target shard keys
  • Optional filter for selective replication

The structure aligns with the PR objectives and enables filtered point replication between shards.


738-743: LGTM!

The ShardTransferMethod enum extension with WalDelta and ReshardingStreamRecords is backward-compatible and appropriately numbered.


772-772: LGTM!

The replicate_points field is correctly added to the UpdateCollectionClusterSetupRequest oneof with an appropriate field number (10).

lib/api/src/grpc/qdrant.rs (4)

1-20: qdrant.rs is prost-generated; keep changes in proto files

This file is marked as generated by prost-build. Any future adjustments to these messages or services should be made in the .proto sources (e.g. lib/api/src/grpc/proto/common.proto, collections.proto, points.proto) and regenerated, not edited here. Based on learnings.


102-423: Shared PointId / filter / geo / match schema looks coherent and validator wiring is consistent

The new common messages (PointId, Filter, Condition + condition::ConditionOneOf, FieldCondition, Match and its variants, geo types, DatetimeRange, ValuesCount, etc.) form a clean, composable filter DSL and consistently use validator::Validate/#[validate(nested)] and the existing custom validators in crate::grpc::validate. This matches the existing validation approach and should be safe to reuse across services.


6823-6981: Result/response types refactor to RetrievedPoint/BatchResult/usage is consistent with richer point schema

The new/updated response messages (ScrollResponse, CountResult, RetrievedPoint, GetResponse, RecommendResponse + batch/group variants, Discover*Response, UpdateBatchResponse, FacetResponse, SearchMatrix*Response) consistently:

  • Reuse RetrievedPoint/ScoredPoint with VectorsOutput, ShardKey, and OrderValue.
  • Attach usage: Option<Usage> in line with SearchResponse/QueryResponse.

The field tags and shapes are coherent and look backwards‑compatible for clients that only cared about the earlier subsets.


4531-4537: Verification complete: Factor variant is properly integrated with exhaustive handling and bounds checking

The Factor(u64) variant is correctly implemented across all code paths:

  1. Validation (consistency_params.rs:33–47): Rejects factor=0, accepts valid values
  2. Bounds conversion (consistency_params.rs:87–90): Safely converts gRPC u64 → usize with error handling
  3. Internal usage (execute_read_operation.rs:91–93): Applies clamp(1, total_count) to ensure valid replica counts
  4. Reverse conversion (consistency_params.rs:101–104): Converts internal usize → u64 safely

Rust's exhaustive pattern matching ensures all enum variants are handled at compile time—if any match statement were incomplete, the code would not compile. Wire compatibility is preserved with tags 1 and 2.

package qdrant;

option csharp_namespace = "Qdrant.Client.Grpc";
option java_outer_classname = "Points";
Copy link
Contributor

@coderabbitai coderabbitai bot Nov 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Verify the java_outer_classname configuration.

The java_outer_classname is set to "Points" but this is common.proto, not points.proto. This may cause confusion or conflicts when both proto files are compiled together in Java.

Consider updating to:

-option java_outer_classname = "Points";
+option java_outer_classname = "Common";
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
option java_outer_classname = "Points";
option java_outer_classname = "Common";
🤖 Prompt for AI Agents
In lib/api/src/grpc/proto/common.proto around line 5, the option
java_outer_classname is incorrectly set to "Points" which can conflict with
points.proto when generating Java classes; change the option to a name that
matches this file and is unique (for example "Common" or "CommonProto"), update
the line to the chosen identifier, and recompile/regenerate Java sources to
ensure no classname collisions across protos.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

conflicts when both proto files are compiled together in Java.

It did indeed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Anush008, thank you for confirming! I'm glad we caught this before it caused further issues. The fix to rename it to "Common" should resolve the Java compilation conflict. 👍


🧠 Learnings used
Learnt from: generall
Repo: qdrant/qdrant PR: 7183
File: lib/api/src/grpc/qdrant.rs:4263-4273
Timestamp: 2025-09-16T19:14:17.614Z
Learning: In qdrant, lib/api/src/grpc/qdrant.rs is auto-generated by prost-build; do not edit it directly. Make changes in lib/api/src/grpc/proto/points.proto (e.g., add [deprecated=true], doc comments, or encoding options), then regenerate the Rust code.

Learnt from: coszio
Repo: qdrant/qdrant PR: 7065
File: lib/collection/src/operations/universal_query/shard_query.rs:0-0
Timestamp: 2025-08-15T15:56:36.821Z
Learning: Internal gRPC APIs in Qdrant don't require additional runtime validation when proto-level validation is already configured via build.rs range constraints.

Comment on lines +185 to +189
impl Validate for grpc::ReplicatePoints {
fn validate(&self) -> Result<(), ValidationErrors> {
Ok(())
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Add validation for shard key differences.

The ReplicatePoints validation currently allows from_shard_key and to_shard_key to be identical, which doesn't make sense for a replication operation. Similar operations like MoveShard (lines 116-125) and ReplicateShard (lines 127-136) validate that source and destination are different using validate_shard_different_peers.

Consider adding validation:

 impl Validate for grpc::ReplicatePoints {
     fn validate(&self) -> Result<(), ValidationErrors> {
-        Ok(())
+        if self.from_shard_key == self.to_shard_key {
+            let mut errors = ValidationErrors::new();
+            errors.add(
+                "to_shard_key",
+                ValidationError::new("from_shard_key and to_shard_key must be different"),
+            );
+            return Err(errors);
+        }
+        Ok(())
     }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
impl Validate for grpc::ReplicatePoints {
fn validate(&self) -> Result<(), ValidationErrors> {
Ok(())
}
}
impl Validate for grpc::ReplicatePoints {
fn validate(&self) -> Result<(), ValidationErrors> {
if self.from_shard_key == self.to_shard_key {
let mut errors = ValidationErrors::new();
errors.add(
"to_shard_key",
ValidationError::new("from_shard_key and to_shard_key must be different"),
);
return Err(errors);
}
Ok(())
}
}
🤖 Prompt for AI Agents
In lib/api/src/grpc/validate.rs around lines 185 to 189, the Validate impl for
grpc::ReplicatePoints currently returns Ok(()) unconditionally; add the same
shard-key-difference validation used by MoveShard and ReplicateShard by calling
the existing helper (validate_shard_different_peers or equivalent) to ensure
from_shard_key != to_shard_key and return a ValidationErrors if they are equal;
preserve existing error structure and messages consistent with the other
validations.

@qdrant qdrant deleted a comment from coderabbitai bot Nov 14, 2025
@generall generall merged commit 4420165 into dev Nov 14, 2025
16 checks passed
@generall generall deleted the enable-replica-points-in-schema branch November 14, 2025 15:12
timvisee pushed a commit that referenced this pull request Nov 14, 2025
* implement ReplicatePoints in grpc

* move filter into a separate file
@Anush008 Anush008 restored the enable-replica-points-in-schema branch November 14, 2025 15:46
Anush008 added a commit to qdrant/go-client that referenced this pull request Nov 14, 2025
Anush008 added a commit to qdrant/java-client that referenced this pull request Nov 14, 2025
Anush008 added a commit to qdrant/go-client that referenced this pull request Nov 17, 2025
* 1.16.0 regen

Signed-off-by: Anush008 <[email protected]>

* BRANCH=dev sh internal/tools/sync_proto.sh

Signed-off-by: Anush008 <[email protected]>

* regen

Signed-off-by: Anush008 <[email protected]>

* regen

Signed-off-by: Anush008 <[email protected]>

* 1.16.0: Part 2  (#93)

* refactor: Update to use new vector fields

Signed-off-by: Anush008 <[email protected]>

* feat: VectorOutput parser

Signed-off-by: Anush008 <[email protected]>

* chore: NewMatchTextAny

Signed-off-by: Anush008 <[email protected]>

* feat: Added new RRF Query helper.

Signed-off-by: Anush008 <[email protected]>

---------

Signed-off-by: Anush008 <[email protected]>

* Make sync script compatible with Linux and macOS flavors of sed

* Bump proto definitions

* bump test container version

* chore: Re-gen due qdrant/qdrant#7536

Signed-off-by: Anush008 <[email protected]>

* feat: Expose Collection cluster setup ops to high-level client

Signed-off-by: Anush008 <[email protected]>

---------

Signed-off-by: Anush008 <[email protected]>
Co-authored-by: timvisee <[email protected]>
Co-authored-by: Arnaud Gourlay <[email protected]>
Anush008 added a commit to qdrant/java-client that referenced this pull request Nov 17, 2025
* v1.16.0

Signed-off-by: Anush008 <[email protected]>

* chore: Use dev

Signed-off-by: Anush008 <[email protected]>

* test: Use list collections to check for auth instead of health check

Signed-off-by: Anush008 <[email protected]>

* feat: Added VectorOutputHelper

Signed-off-by: Anush008 <[email protected]>

* matchTextAny

Signed-off-by: Anush008 <[email protected]>

* feat: Added new RRF Query helper.

Signed-off-by: Anush008 <[email protected]>

* chore: Added one overload for updateVectors null timeout

Signed-off-by: Anush008 <[email protected]>

* chore: Updated imports as per qdrant/qdrant#7536

Signed-off-by: Anush008 <[email protected]>

* chore: Bump image and protos to v1.16.0

Signed-off-by: Anush008 <[email protected]>

* feat: Expose getCollectionClusterInfoAsync and getCollectionClusterInfoAsync to high-level client

Signed-off-by: Anush008 <[email protected]>

---------

Signed-off-by: Anush008 <[email protected]>
@KShivendu KShivendu added this to the Scalable Multitenancy milestone Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Comments