qdrant_client/builders/
multi_dense_vector_builder.rs

1use crate::qdrant::*;
2
3#[derive(Clone, Default)]
4pub struct MultiDenseVectorBuilder {
5    pub(crate) vectors: Vec<DenseVector>,
6}
7
8impl MultiDenseVectorBuilder {
9    pub fn new(vectors: impl Into<Vec<DenseVector>>) -> Self {
10        Self {
11            vectors: vectors.into(),
12        }
13    }
14
15    pub fn single(vector: impl Into<DenseVector>) -> Self {
16        Self::new(vec![vector.into()])
17    }
18
19    pub fn vectors(mut self, vectors: impl Into<Vec<DenseVector>>) -> Self {
20        self.vectors = vectors.into();
21        self
22    }
23
24    pub fn add_vector(mut self, vector: impl Into<DenseVector>) -> Self {
25        self.vectors.push(vector.into());
26        self
27    }
28
29    /// Builds the desired type. Can often be omitted.
30    pub fn build(self) -> MultiDenseVector {
31        MultiDenseVector {
32            vectors: self.vectors,
33        }
34    }
35}
36
37impl From<Vec<Vec<f32>>> for MultiDenseVector {
38    fn from(vectors: Vec<Vec<f32>>) -> Self {
39        Self::from(
40            vectors
41                .into_iter()
42                .map(DenseVector::from)
43                .collect::<Vec<_>>(),
44        )
45    }
46}
47
48impl From<Vec<&[f32]>> for MultiDenseVector {
49    fn from(vectors: Vec<&[f32]>) -> Self {
50        Self::from(
51            vectors
52                .into_iter()
53                .map(|subvector| DenseVector::from(subvector.to_vec()))
54                .collect::<Vec<_>>(),
55        )
56    }
57}
58
59impl From<Vec<DenseVector>> for MultiDenseVector {
60    fn from(vectors: Vec<DenseVector>) -> Self {
61        MultiDenseVectorBuilder::new(vectors).build()
62    }
63}
64
65impl From<MultiDenseVector> for Vector {
66    fn from(dense_vector: MultiDenseVector) -> Self {
67        crate::qdrant::vector::Vector::from(dense_vector).into()
68    }
69}
70
71impl From<MultiDenseVectorBuilder> for Vector {
72    fn from(dense_vector: MultiDenseVectorBuilder) -> Self {
73        crate::qdrant::vector::Vector::from(dense_vector.build()).into()
74    }
75}
76
77impl From<MultiDenseVector> for crate::qdrant::vector::Vector {
78    fn from(dense_vector: MultiDenseVector) -> Self {
79        Self::MultiDense(dense_vector)
80    }
81}