Skip to content

Commit

Permalink
add MultiVectorConfigBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
generall committed Jun 28, 2024
1 parent 3250448 commit 77923e9
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 6 deletions.
8 changes: 8 additions & 0 deletions src/qdrant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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::*;
Expand Down
11 changes: 10 additions & 1 deletion src/qdrant_client/builders/vectors_config.rs
Original file line number Diff line number Diff line change
@@ -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 = "";

Expand Down Expand Up @@ -48,3 +50,10 @@ impl From<VectorsConfigBuilder> for VectorsConfig {
}
}
}

impl MultiVectorConfigBuilder {
pub fn new(comparator: impl Into<MultiVectorComparator>) -> Self {
let builder = Self::empty();
builder.comparator(comparator.into() as i32)
}
}
11 changes: 6 additions & 5 deletions tests/builder_coverage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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();
}
7 changes: 7 additions & 0 deletions tests/protos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
)
Expand Down Expand Up @@ -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,
),
]
}

Expand Down

0 comments on commit 77923e9

Please sign in to comment.