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 #[allow(unused_mut)]
20 pub fn vectors(mut self, vectors: impl Into<Vec<DenseVector>>) -> Self {
21 self.vectors = vectors.into();
22 self
23 }
24
25 #[allow(unused_mut)]
26 pub fn add_vector(mut self, vector: impl Into<DenseVector>) -> Self {
27 self.vectors.push(vector.into());
28 self
29 }
30
31 pub fn build(self) -> MultiDenseVector {
33 MultiDenseVector {
34 vectors: self.vectors,
35 }
36 }
37}
38
39impl From<Vec<Vec<f32>>> for MultiDenseVector {
40 fn from(vectors: Vec<Vec<f32>>) -> Self {
41 Self::from(
42 vectors
43 .into_iter()
44 .map(DenseVector::from)
45 .collect::<Vec<_>>(),
46 )
47 }
48}
49
50impl From<Vec<DenseVector>> for MultiDenseVector {
51 fn from(vectors: Vec<DenseVector>) -> Self {
52 MultiDenseVectorBuilder::new(vectors).build()
53 }
54}
55
56impl From<MultiDenseVector> for Vector {
57 fn from(dense_vector: MultiDenseVector) -> Self {
58 crate::qdrant::vector::Vector::from(dense_vector).into()
59 }
60}
61
62impl From<MultiDenseVectorBuilder> for Vector {
63 fn from(dense_vector: MultiDenseVectorBuilder) -> Self {
64 crate::qdrant::vector::Vector::from(dense_vector.build()).into()
65 }
66}
67
68impl From<MultiDenseVector> for crate::qdrant::vector::Vector {
69 fn from(dense_vector: MultiDenseVector) -> Self {
70 Self::MultiDense(dense_vector)
71 }
72}