Skip to main content

qdrant_client/builders/
multi_dense_vector_builder.rs

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