Milvus.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. export const MILVUS_URL =
  2. ((window as any)._env_ && (window as any)._env_.MILVUS_URL) || '';
  3. export const MILVUS_DATABASE =
  4. ((window as any)._env_ && (window as any)._env_.DATABASE) || '';
  5. export const DYNAMIC_FIELD = `$meta`;
  6. export enum DataTypeEnum {
  7. Bool = 1,
  8. Int8 = 2,
  9. Int16 = 3,
  10. Int32 = 4,
  11. Int64 = 5,
  12. Float = 10,
  13. Double = 11,
  14. String = 20,
  15. VarChar = 21,
  16. JSON = 23,
  17. BinaryVector = 100,
  18. FloatVector = 101,
  19. Float16Vector = 102,
  20. SparseFloatVector = 104,
  21. BFloat16Vector = 103,
  22. Array = 22,
  23. }
  24. export const vectorTypes = [
  25. DataTypeEnum.BinaryVector,
  26. DataTypeEnum.FloatVector,
  27. DataTypeEnum.BFloat16Vector,
  28. DataTypeEnum.Float16Vector,
  29. DataTypeEnum.SparseFloatVector,
  30. ];
  31. export enum INDEX_TYPES_ENUM {
  32. AUTOINDEX = 'AUTOINDEX',
  33. IVF_FLAT = 'IVF_FLAT',
  34. IVF_PQ = 'IVF_PQ',
  35. IVF_SQ8 = 'IVF_SQ8',
  36. IVF_SQ8_HYBRID = 'IVF_SQ8_HYBRID',
  37. FLAT = 'FLAT',
  38. HNSW = 'HNSW',
  39. ANNOY = 'ANNOY',
  40. RNSG = 'RNSG',
  41. BIN_IVF_FLAT = 'BIN_IVF_FLAT',
  42. BIN_FLAT = 'BIN_FLAT',
  43. SORT = 'STL_SORT',
  44. MARISA_TRIE = 'Trie',
  45. // sparse
  46. SPARSE_INVERTED_INDEX = 'SPARSE_INVERTED_INDEX',
  47. SPARSE_WAND = 'SPARSE_WAND',
  48. }
  49. export enum METRIC_TYPES_VALUES {
  50. L2 = 'L2',
  51. IP = 'IP',
  52. COSINE = 'COSINE',
  53. HAMMING = 'HAMMING',
  54. JACCARD = 'JACCARD',
  55. TANIMOTO = 'TANIMOTO',
  56. SUBSTRUCTURE = 'SUBSTRUCTURE',
  57. SUPERSTRUCTURE = 'SUPERSTRUCTURE',
  58. }
  59. export const METRIC_TYPES = [
  60. {
  61. value: METRIC_TYPES_VALUES.L2,
  62. label: 'L2',
  63. },
  64. {
  65. value: METRIC_TYPES_VALUES.IP,
  66. label: 'IP',
  67. },
  68. {
  69. value: METRIC_TYPES_VALUES.COSINE,
  70. label: 'COSINE',
  71. },
  72. {
  73. value: METRIC_TYPES_VALUES.SUBSTRUCTURE,
  74. label: 'SUBSTRUCTURE',
  75. },
  76. {
  77. value: METRIC_TYPES_VALUES.SUPERSTRUCTURE,
  78. label: 'SUPERSTRUCTURE',
  79. },
  80. {
  81. value: METRIC_TYPES_VALUES.HAMMING,
  82. label: 'HAMMING',
  83. },
  84. {
  85. value: METRIC_TYPES_VALUES.JACCARD,
  86. label: 'JACCARD',
  87. },
  88. {
  89. value: METRIC_TYPES_VALUES.TANIMOTO,
  90. label: 'TANIMOTO',
  91. },
  92. ];
  93. export type MetricType =
  94. | 'L2'
  95. | 'IP'
  96. | 'COSINE'
  97. | 'HAMMING'
  98. | 'SUBSTRUCTURE'
  99. | 'SUPERSTRUCTURE'
  100. | 'JACCARD'
  101. | 'TANIMOTO';
  102. export type searchKeywordsType =
  103. | 'nprobe'
  104. | 'ef'
  105. | 'search_k'
  106. | 'search_length'
  107. | 'round_decimal'
  108. | 'level'
  109. | 'search_list'
  110. | 'radius'
  111. | 'range_filter'
  112. | 'drop_ratio_search';
  113. export type indexConfigType = {
  114. [x: string]: {
  115. create: string[];
  116. search: searchKeywordsType[];
  117. };
  118. };
  119. // index
  120. export const FLOAT_INDEX_CONFIG: indexConfigType = {
  121. SCANN: {
  122. create: ['nlist'],
  123. search: ['nprobe'],
  124. },
  125. IVF_FLAT: {
  126. create: ['nlist'],
  127. search: ['nprobe'],
  128. },
  129. IVF_PQ: {
  130. create: ['nlist', 'm', 'nbits'],
  131. search: ['nprobe'],
  132. },
  133. IVF_SQ8: {
  134. create: ['nlist'],
  135. search: ['nprobe'],
  136. },
  137. FLAT: {
  138. create: [],
  139. search: ['nprobe'],
  140. },
  141. HNSW: {
  142. create: ['M', 'efConstruction'],
  143. search: ['ef'],
  144. },
  145. ANNOY: {
  146. create: ['n_trees'],
  147. search: ['search_k'],
  148. },
  149. AUTOINDEX: {
  150. create: [],
  151. search: ['level'],
  152. },
  153. DISKANN: {
  154. create: [],
  155. search: ['search_list'],
  156. },
  157. SPARSE_WAND: {
  158. create: ['drop_ratio_build'],
  159. search: ['drop_ratio_search'],
  160. },
  161. SPARSE_INVERTED_INDEX: {
  162. create: ['drop_ratio_build'],
  163. search: ['drop_ratio_search'],
  164. },
  165. };
  166. export const BINARY_INDEX_CONFIG: indexConfigType = {
  167. // },
  168. BIN_FLAT: {
  169. create: ['nlist'],
  170. search: [],
  171. },
  172. BIN_IVF_FLAT: {
  173. create: ['nlist'],
  174. search: ['nprobe'],
  175. },
  176. };
  177. export const SPARSE_INDEX_CONFIG: indexConfigType = {
  178. SPARSE_INVERTED_INDEX: {
  179. create: ['drop_ratio_build'],
  180. search: ['drop_ratio_search'],
  181. },
  182. SPARSE_WAND: {
  183. create: ['drop_ratio_build'],
  184. search: ['drop_ratio_search'],
  185. },
  186. };
  187. export const INDEX_CONFIG: indexConfigType = {
  188. ...FLOAT_INDEX_CONFIG,
  189. ...BINARY_INDEX_CONFIG,
  190. ...SPARSE_INDEX_CONFIG,
  191. };
  192. export const COLLECTION_NAME_REGX = /^[0-9,a-z,A-Z$_]+$/;
  193. export const m_OPTIONS = [
  194. { label: '64', value: 64 },
  195. { label: '32', value: 32 },
  196. { label: '16', value: 16 },
  197. { label: '8', value: 8 },
  198. { label: '4', value: 4 },
  199. ];
  200. export const INDEX_OPTIONS_MAP = {
  201. [DataTypeEnum.FloatVector]: Object.keys(FLOAT_INDEX_CONFIG).map(v => ({
  202. label: v,
  203. value: v,
  204. })),
  205. [DataTypeEnum.BinaryVector]: Object.keys(BINARY_INDEX_CONFIG).map(v => ({
  206. label: v,
  207. value: v,
  208. })),
  209. [DataTypeEnum.SparseFloatVector]: Object.keys(SPARSE_INDEX_CONFIG).map(v => ({
  210. label: v,
  211. value: v,
  212. })),
  213. [DataTypeEnum.VarChar]: [
  214. {
  215. label: 'marisa-trie',
  216. value: INDEX_TYPES_ENUM.MARISA_TRIE,
  217. },
  218. ],
  219. };
  220. // search params default value map
  221. export const DEFAULT_SEARCH_PARAM_VALUE_MAP: {
  222. [key in searchKeywordsType]?: number;
  223. } = {
  224. // range: [top_k, 32768]
  225. ef: 250,
  226. // range: [1, nlist]
  227. nprobe: 1,
  228. // range: {-1} ∪ [top_k, n × n_trees]
  229. search_k: 250,
  230. // range: [10, 300]
  231. search_length: 10,
  232. level: 1,
  233. search_list: 150,
  234. };
  235. export const DEFAULT_NLIST_VALUE = 1024;
  236. export enum LOADING_STATE {
  237. LOADED = 'loaded',
  238. LOADING = 'loading',
  239. UNLOADED = 'unloaded',
  240. }
  241. export enum LOAD_STATE {
  242. LoadStateNotExist = 'LoadStateNotExist',
  243. LoadStateNotLoad = 'LoadStateNotLoad',
  244. LoadStateLoading = 'LoadStateLoading',
  245. LoadStateLoaded = 'LoadStateLoaded',
  246. }
  247. export const DEFAULT_VECTORS = 100000;
  248. export const DEFAULT_SEFMENT_FILE_SIZE = 1024;
  249. export const DEFAULT_MILVUS_PORT = 19530;
  250. export const DEFAULT_PROMETHEUS_PORT = 9090;
  251. export enum MILVUS_NODE_TYPE {
  252. ROOTCOORD = 'rootcoord',
  253. QUERYCOORD = 'querycoord',
  254. INDEXCOORD = 'indexcoord',
  255. QUERYNODE = 'querynode',
  256. INDEXNODE = 'indexnode',
  257. DATACORD = 'datacord',
  258. DATANODE = 'datanode',
  259. PROXY = 'proxy',
  260. }
  261. export enum MILVUS_DEPLOY_MODE {
  262. DISTRIBUTED = 'DISTRIBUTED',
  263. STANDALONE = 'STANDALONE',
  264. }
  265. export enum ConsistencyLevelEnum {
  266. Strong = 'Strong',
  267. Session = 'Session', // default in PyMilvus
  268. Bounded = 'Bounded',
  269. Eventually = 'Eventually',
  270. Customized = 'Customized', // Users pass their own `guarantee_timestamp`.
  271. }
  272. export const CONSISTENCY_LEVEL_OPTIONS = [
  273. {
  274. value: ConsistencyLevelEnum.Bounded,
  275. label: ConsistencyLevelEnum.Bounded,
  276. },
  277. {
  278. value: ConsistencyLevelEnum.Strong,
  279. label: ConsistencyLevelEnum.Strong,
  280. },
  281. {
  282. value: ConsistencyLevelEnum.Session,
  283. label: ConsistencyLevelEnum.Session,
  284. },
  285. {
  286. value: ConsistencyLevelEnum.Eventually,
  287. label: ConsistencyLevelEnum.Eventually,
  288. },
  289. ];
  290. export enum DataTypeStringEnum {
  291. Bool = 'Bool',
  292. Int8 = 'Int8',
  293. Int16 = 'Int16',
  294. Int32 = 'Int32',
  295. Int64 = 'Int64',
  296. Float = 'Float',
  297. Double = 'Double',
  298. String = 'String',
  299. VarChar = 'VarChar',
  300. JSON = 'JSON',
  301. BinaryVector = 'BinaryVector',
  302. FloatVector = 'FloatVector',
  303. SparseFloatVector = 'SparseFloatVector',
  304. Array = 'Array',
  305. None = 'None',
  306. }
  307. export const NONE_INDEXABLE_DATA_TYPES = [
  308. DataTypeStringEnum.Bool,
  309. DataTypeStringEnum.JSON,
  310. DataTypeStringEnum.Array,
  311. ];