diff --git a/src/qdrant.rs b/src/qdrant.rs index 5ba294e..230d9c2 100644 --- a/src/qdrant.rs +++ b/src/qdrant.rs @@ -145,11 +145,18 @@ pub struct SparseVectorConfig { SparseVectorParams, >, } +#[derive(derive_builder::Builder)] +#[builder( + build_fn(private, name = "build_inner"), + pattern = "owned", + custom_constructor +)] #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MultiVectorConfig { /// Comparator for multi-vector search #[prost(enumeration = "MultiVectorComparator", tag = "1")] + #[builder(default, setter(into, strip_option), field(vis = "pub(crate)"))] pub comparator: i32, } #[allow(clippy::derive_partial_eq_without_eq)] @@ -8922,6 +8929,7 @@ builder_type_conversions!(RecommendInput, RecommendInputBuilder); builder_type_conversions!(DiscoverInput, DiscoverInputBuilder, true); builder_type_conversions!(ContextInput, ContextInputBuilder); builder_type_conversions!(ContextInputPair, ContextInputPairBuilder, true); +builder_type_conversions!(MultiVectorConfig, MultiVectorConfigBuilder, true); builder_type_conversions!(DeletePoints, DeletePointsBuilder, true); pub use crate::manual_builder::*; diff --git a/src/qdrant_client/builders/vectors_config.rs b/src/qdrant_client/builders/vectors_config.rs index d2c43f5..58b00ce 100644 --- a/src/qdrant_client/builders/vectors_config.rs +++ b/src/qdrant_client/builders/vectors_config.rs @@ -1,7 +1,9 @@ use std::collections::HashMap; use crate::qdrant::vectors_config::Config; -use crate::qdrant::{VectorParams, VectorParamsMap, VectorsConfig}; +use crate::qdrant::{ + MultiVectorComparator, MultiVectorConfigBuilder, VectorParams, VectorParamsMap, VectorsConfig, +}; const DEFAULT_VECTOR_NAME: &str = ""; @@ -48,3 +50,10 @@ impl From for VectorsConfig { } } } + +impl MultiVectorConfigBuilder { + pub fn new(comparator: impl Into) -> Self { + let builder = Self::empty(); + builder.comparator(comparator.into() as i32) + } +} diff --git a/tests/builder_coverage.rs b/tests/builder_coverage.rs index 3df747f..b56b652 100644 --- a/tests/builder_coverage.rs +++ b/tests/builder_coverage.rs @@ -7,11 +7,11 @@ use qdrant_client::qdrant::{ DeleteFieldIndexCollectionBuilder, DeletePayloadPointsBuilder, DeletePointVectorsBuilder, DeletePointsBuilder, DeleteShardKeyRequestBuilder, DeleteSnapshotRequestBuilder, DiscoverBatchPointsBuilder, DiscoverInputBuilder, DiscoverPointsBuilder, Distance, FieldType, - GetPointsBuilder, LookupLocationBuilder, MoveShardBuilder, OrderByBuilder, - ProductQuantizationBuilder, QueryBatchPointsBuilder, QueryPointsBuilder, - RecommendBatchPointsBuilder, RecommendPointGroupsBuilder, RecommendPointsBuilder, - RenameAliasBuilder, ReplicaBuilder, ReplicateShardBuilder, ScrollPointsBuilder, - SearchBatchPointsBuilder, SearchPointGroupsBuilder, SearchPointsBuilder, + GetPointsBuilder, LookupLocationBuilder, MoveShardBuilder, MultiVectorComparator, + MultiVectorConfigBuilder, OrderByBuilder, ProductQuantizationBuilder, QueryBatchPointsBuilder, + QueryPointsBuilder, RecommendBatchPointsBuilder, RecommendPointGroupsBuilder, + RecommendPointsBuilder, RenameAliasBuilder, ReplicaBuilder, ReplicateShardBuilder, + ScrollPointsBuilder, SearchBatchPointsBuilder, SearchPointGroupsBuilder, SearchPointsBuilder, SetPayloadPointsBuilder, TextIndexParamsBuilder, TokenizerType, UpdateBatchPointsBuilder, UpdateCollectionBuilder, UpdateCollectionClusterSetupRequestBuilder, UpdatePointVectorsBuilder, UpsertPointsBuilder, VectorParamsBuilder, WithLookupBuilder, @@ -78,4 +78,5 @@ fn builder_coverage() { DeleteSnapshotRequestBuilder::new("my_collection", "snapshot").build(); ContextInputPairBuilder::new(vec![1.0], vec![2.0]).build(); DiscoverInputBuilder::new(vec![1.0], ContextInputBuilder::default()).build(); + MultiVectorConfigBuilder::new(MultiVectorComparator::MaxSim).build(); } diff --git a/tests/protos.rs b/tests/protos.rs index 88a1dd0..912cff3 100644 --- a/tests/protos.rs +++ b/tests/protos.rs @@ -724,6 +724,8 @@ fn configure_builder(builder: Builder) -> Builder { // ContextInputPair ("ContextInputPair.positive", DEFAULT_OPTION_INTO), ("ContextInputPair.negative", DEFAULT_OPTION_INTO), + // MultiVectorConfig + ("MultiVectorConfig.comparator", DEFAULT_OPTION_INTO), ], builder_derive_options(), ) @@ -1046,6 +1048,11 @@ fn builder_derive_options() -> &'static [BuildDeriveOptions] { NO_DEFAULT_BUILDER_DERIVE_OPTIONS, MacroConfig::WithDefaultFn, ), + ( + "MultiVectorConfig", + NO_DEFAULT_BUILDER_DERIVE_OPTIONS, + MacroConfig::WithDefaultFn, + ), ] }