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