qdrant_client/builders/
multi_dense_vector_builder.rs1use 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 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}