qdrant_client/builders/
binary_quantization_builder.rs1use crate::qdrant::*;
2
3#[must_use]
4#[derive(Clone)]
5pub struct BinaryQuantizationBuilder {
6 pub(crate) always_ram: Option<Option<bool>>,
8 pub(crate) encoding: Option<Option<i32>>,
9 pub(crate) query_encoding: Option<Option<BinaryQuantizationQueryEncoding>>,
10 pub(crate) memory: Option<Option<i32>>,
12}
13
14impl BinaryQuantizationBuilder {
15 pub fn always_ram(self, value: bool) -> Self {
19 let mut new = self;
20 new.always_ram = Some(Some(value));
21 new
22 }
23
24 pub fn encoding(self, value: impl Into<BinaryQuantizationEncoding>) -> Self {
26 let mut new = self;
27 let encoding: BinaryQuantizationEncoding = value.into();
28 new.encoding = Some(Some(encoding.into()));
29 new
30 }
31
32 pub fn query_encoding(self, value: impl Into<BinaryQuantizationQueryEncoding>) -> Self {
35 let mut new = self;
36 new.query_encoding = Some(Some(value.into()));
37 new
38 }
39
40 pub fn memory(self, value: impl Into<i32>) -> Self {
43 let mut new = self;
44 new.memory = Some(Some(value.into()));
45 new
46 }
47
48 #[allow(deprecated)]
49 fn build_inner(self) -> Result<BinaryQuantization, BinaryQuantizationBuilderError> {
50 Ok(BinaryQuantization {
51 always_ram: self.always_ram.unwrap_or_default(),
52 encoding: self.encoding.unwrap_or_default(),
53 query_encoding: self.query_encoding.unwrap_or_default(),
54 memory: self.memory.unwrap_or_default(),
55 })
56 }
57 fn create_empty() -> Self {
59 Self {
60 always_ram: Default::default(),
61 encoding: Default::default(),
62 query_encoding: Default::default(),
63 memory: Default::default(),
64 }
65 }
66}
67
68impl From<BinaryQuantizationBuilder> for BinaryQuantization {
69 fn from(value: BinaryQuantizationBuilder) -> Self {
70 value.build_inner().unwrap_or_else(|_| {
71 panic!(
72 "Failed to convert {0} to {1}",
73 "BinaryQuantizationBuilder", "BinaryQuantization"
74 )
75 })
76 }
77}
78
79impl BinaryQuantizationBuilder {
80 pub fn build(self) -> BinaryQuantization {
82 self.build_inner().unwrap_or_else(|_| {
83 panic!(
84 "Failed to build {0} into {1}",
85 "BinaryQuantizationBuilder", "BinaryQuantization"
86 )
87 })
88 }
89}
90
91impl BinaryQuantizationBuilder {
92 pub(crate) fn empty() -> Self {
93 Self::create_empty()
94 }
95}
96
97impl Default for BinaryQuantizationBuilder {
98 fn default() -> Self {
99 Self::create_empty()
100 }
101}
102
103#[non_exhaustive]
104#[derive(Debug)]
105pub enum BinaryQuantizationBuilderError {
106 UninitializedField(&'static str),
108 ValidationError(String),
110}
111
112impl std::fmt::Display for BinaryQuantizationBuilderError {
114 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
115 match self {
116 Self::UninitializedField(field) => {
117 write!(f, "`{field}` must be initialized")
118 }
119 Self::ValidationError(error) => write!(f, "{error}"),
120 }
121 }
122}
123
124impl std::error::Error for BinaryQuantizationBuilderError {}
126
127impl From<derive_builder::UninitializedFieldError> for BinaryQuantizationBuilderError {
129 fn from(error: derive_builder::UninitializedFieldError) -> Self {
130 Self::UninitializedField(error.field_name())
131 }
132}
133
134impl From<String> for BinaryQuantizationBuilderError {
136 fn from(error: String) -> Self {
137 Self::ValidationError(error)
138 }
139}
140
141impl BinaryQuantizationQueryEncoding {
142 pub fn scalar8bits() -> Self {
143 Self {
144 variant: Some(binary_quantization_query_encoding::Variant::Setting(
145 binary_quantization_query_encoding::Setting::Scalar8Bits.into(),
146 )),
147 }
148 }
149
150 pub fn scalar4bits() -> Self {
151 Self {
152 variant: Some(binary_quantization_query_encoding::Variant::Setting(
153 binary_quantization_query_encoding::Setting::Scalar4Bits.into(),
154 )),
155 }
156 }
157
158 pub fn binary() -> Self {
159 Self {
160 variant: Some(binary_quantization_query_encoding::Variant::Setting(
161 binary_quantization_query_encoding::Setting::Binary.into(),
162 )),
163 }
164 }
165
166 pub fn default_encoding() -> Self {
167 Self {
168 variant: Some(binary_quantization_query_encoding::Variant::Setting(
169 binary_quantization_query_encoding::Setting::Default.into(),
170 )),
171 }
172 }
173}