1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct InsertRequest {
6 pub id: u32,
7 pub vector: Vec<f32>,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct InsertVectorBody {
13 pub vector: Vec<f32>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct DeleteRequest {
19 pub id: u32,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct SearchRequest {
25 pub vector: Vec<f32>,
26 pub limit: Option<usize>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct SearchVectorBody {
32 pub vector: Vec<f32>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct SearchResult {
38 pub id: u32,
39 pub score: f32,
40}
41
42pub type SearchResponse = Vec<SearchResult>;
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct CreateCollectionRequest {
48 pub dim: usize,
49 pub max_size: u32,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct CollectionInfo {
55 pub name: String,
56 pub dimension: usize,
57 pub mutable: bool,
58 pub has_index: bool,
59 pub max_size: u32,
60 pub size: usize,
62 pub index: Option<IndexInfo>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct IndexInfo {
68 pub hnsw: Option<HNSWIndexConfig>,
70 pub normalization: bool,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct BatchInsertOperation {
77 pub id: u32,
78 pub vector: Vec<f32>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct BatchUpdateRequest {
84 pub insert: Vec<BatchInsertOperation>,
85 pub delete: Vec<u32>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct CreateHNSWIndexRequest {
91 pub hnsw: HNSWIndexConfig,
93 #[serde(skip_serializing_if = "Option::is_none")]
95 pub normalization: Option<bool>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct HNSWIndexConfig {
101 pub metric: String,
103 pub quantization: String,
105 pub m: usize,
107 pub m0: usize,
109 pub ef_construction: usize,
111 #[serde(skip_serializing_if = "Option::is_none")]
113 pub pq_name: Option<String>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct CollectionsListResponse {
119 pub collections: Vec<CollectionInfo>,
120}
121
122#[derive(Debug, Clone, Serialize, Deserialize)]
124pub struct GetVectorResponse {
125 pub id: u32,
126 pub vector: Vec<f32>,
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct MatrixInfo {
132 pub name: String,
133 pub dim: usize,
134 pub len: usize,
135 pub enabled: bool,
136}
137
138#[derive(Debug, Clone)]
140pub struct UploadMatrixResult {
141 pub success: bool,
142 pub message: String,
143 pub total_vectors: u32,
144 pub total_chunks: u32,
145}
146
147#[derive(Debug, Clone, Serialize, Deserialize)]
149pub struct CreatePqRequest {
150 pub dim: usize,
151 pub codebooks: Vec<String>,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
156pub struct PqInfo {
157 pub name: String,
158 pub dim: usize,
159 pub codebooks: Vec<String>,
160 pub enabled: bool,
161}