Milvus.ts 6.9 KB

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