tcvectordb_rust/
enums.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
4pub enum FieldType {
5    #[serde(rename = "uint64")]
6    Uint64,
7    #[serde(rename = "string")]
8    String,
9    #[serde(rename = "array")]
10    Array,
11    #[serde(rename = "json")]
12    Json,
13    #[serde(rename = "vector")]
14    Vector,
15    #[serde(rename = "float16_vector")]
16    Float16Vector,
17    #[serde(rename = "bfloat16_vector")]
18    BFloat16Vector,
19    #[serde(rename = "binary_vector")]
20    BinaryVector,
21    #[serde(rename = "sparseVector")]
22    SparseVector,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
26pub enum MetricType {
27    #[serde(rename = "L2")]
28    L2,
29    #[serde(rename = "IP")]
30    IP,
31    #[serde(rename = "COSINE")]
32    COSINE,
33    #[serde(rename = "Hamming")]
34    HAMMING,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
38pub enum IndexType {
39    // Vector index types
40    #[serde(rename = "FLAT")]
41    FLAT,
42    #[serde(rename = "HNSW")]
43    HNSW,
44    #[serde(rename = "IVF_FLAT")]
45    IVF_FLAT,
46    #[serde(rename = "IVF_PQ")]
47    IVF_PQ,
48    #[serde(rename = "IVF_SQ4")]
49    IVF_SQ4,
50    #[serde(rename = "IVF_SQ8")]
51    IVF_SQ8,
52    #[serde(rename = "IVF_SQ16")]
53    IVF_SQ16,
54    #[serde(rename = "BIN_FLAT")]
55    BIN_FLAT,
56    #[serde(rename = "BIN_HNSW")]
57    BIN_HNSW,
58    
59    // Scalar index types
60    #[serde(rename = "primaryKey")]
61    PRIMARY_KEY,
62    #[serde(rename = "filter")]
63    FILTER,
64    #[serde(rename = "inverted")]
65    SPARSE_INVERTED,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
69pub enum ReadConsistency {
70    #[serde(rename = "strongConsistency")]
71    StrongConsistency,
72    #[serde(rename = "eventualConsistency")]
73    EventualConsistency,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
77pub enum EmbeddingModel {
78    #[serde(rename = "bge-base-zh")]
79    BgeBaseZh,
80    #[serde(rename = "m3e-base")]
81    M3eBase,
82    #[serde(rename = "text2vec-large-chinese")]
83    Text2VecLargeChinese,
84    #[serde(rename = "e5-large-v2")]
85    E5LargeV2,
86    #[serde(rename = "multilingual-e5-base")]
87    MultilingualE5Base,
88}
89
90impl EmbeddingModel {
91    pub fn dimensions(&self) -> usize {
92        match self {
93            EmbeddingModel::BgeBaseZh => 768,
94            EmbeddingModel::M3eBase => 768,
95            EmbeddingModel::Text2VecLargeChinese => 1024,
96            EmbeddingModel::E5LargeV2 => 1024,
97            EmbeddingModel::MultilingualE5Base => 768,
98        }
99    }
100}