qdrant_client/qdrant_client/conversions/
query.rs

1use crate::qdrant::{
2    query, ContextInput, DiscoverInput, Formula, FormulaBuilder, Fusion, OrderBy, OrderByBuilder,
3    PointId, Query, RecommendInput, VectorInput,
4};
5
6impl From<VectorInput> for Query {
7    fn from(value: VectorInput) -> Self {
8        Self {
9            variant: Some(query::Variant::Nearest(value)),
10        }
11    }
12}
13
14impl From<RecommendInput> for Query {
15    fn from(value: RecommendInput) -> Self {
16        Self {
17            variant: Some(query::Variant::Recommend(value)),
18        }
19    }
20}
21
22impl From<DiscoverInput> for Query {
23    fn from(value: DiscoverInput) -> Self {
24        Self {
25            variant: Some(query::Variant::Discover(value)),
26        }
27    }
28}
29
30impl From<ContextInput> for Query {
31    fn from(value: ContextInput) -> Self {
32        Self {
33            variant: Some(query::Variant::Context(value)),
34        }
35    }
36}
37
38impl From<OrderBy> for Query {
39    fn from(value: OrderBy) -> Self {
40        Self {
41            variant: Some(query::Variant::OrderBy(value)),
42        }
43    }
44}
45
46impl From<Fusion> for Query {
47    fn from(value: Fusion) -> Self {
48        Self {
49            variant: Some(query::Variant::Fusion(value.into())),
50        }
51    }
52}
53
54impl From<Formula> for Query {
55    fn from(value: Formula) -> Self {
56        Self {
57            variant: Some(query::Variant::Formula(value)),
58        }
59    }
60}
61
62impl From<FormulaBuilder> for Query {
63    fn from(value: FormulaBuilder) -> Self {
64        Self {
65            variant: Some(query::Variant::Formula(value.build())),
66        }
67    }
68}
69
70impl<T: Into<String>> From<T> for OrderBy {
71    fn from(value: T) -> Self {
72        OrderByBuilder::new(value).build()
73    }
74}
75
76impl From<Vec<f32>> for Query {
77    fn from(value: Vec<f32>) -> Self {
78        Query {
79            variant: Some(query::Variant::Nearest(VectorInput::new_dense(value))),
80        }
81    }
82}
83
84impl From<Vec<(u32, f32)>> for Query {
85    fn from(value: Vec<(u32, f32)>) -> Self {
86        let (indices, values): (Vec<_>, Vec<_>) = value.iter().copied().unzip();
87        Query {
88            variant: Some(query::Variant::Nearest(VectorInput::new_sparse(
89                indices, values,
90            ))),
91        }
92    }
93}
94
95impl From<Vec<Vec<f32>>> for Query {
96    fn from(value: Vec<Vec<f32>>) -> Self {
97        Query {
98            variant: Some(query::Variant::Nearest(VectorInput::new_multi(value))),
99        }
100    }
101}
102
103impl From<PointId> for Query {
104    fn from(value: PointId) -> Self {
105        Query {
106            variant: Some(query::Variant::Nearest(VectorInput::new_id(value))),
107        }
108    }
109}