Milvus.ts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. import { DataTypeEnum } from '@/pages/collections/Types';
  2. export const MILVUS_URL =
  3. ((window as any)._env_ && (window as any)._env_.MILVUS_URL) || '';
  4. export enum METRIC_TYPES_VALUES {
  5. L2 = 'L2',
  6. IP = 'IP',
  7. COSINE = 'COSINE',
  8. HAMMING = 'HAMMING',
  9. JACCARD = 'JACCARD',
  10. TANIMOTO = 'TANIMOTO',
  11. SUBSTRUCTURE = 'SUBSTRUCTURE',
  12. SUPERSTRUCTURE = 'SUPERSTRUCTURE',
  13. }
  14. export const METRIC_TYPES = [
  15. {
  16. value: METRIC_TYPES_VALUES.L2,
  17. label: 'L2',
  18. },
  19. {
  20. value: METRIC_TYPES_VALUES.IP,
  21. label: 'IP',
  22. },
  23. {
  24. value: METRIC_TYPES_VALUES.COSINE,
  25. label: 'COSINE',
  26. },
  27. {
  28. value: METRIC_TYPES_VALUES.SUBSTRUCTURE,
  29. label: 'SUBSTRUCTURE',
  30. },
  31. {
  32. value: METRIC_TYPES_VALUES.SUPERSTRUCTURE,
  33. label: 'SUPERSTRUCTURE',
  34. },
  35. {
  36. value: METRIC_TYPES_VALUES.HAMMING,
  37. label: 'HAMMING',
  38. },
  39. {
  40. value: METRIC_TYPES_VALUES.JACCARD,
  41. label: 'JACCARD',
  42. },
  43. {
  44. value: METRIC_TYPES_VALUES.TANIMOTO,
  45. label: 'TANIMOTO',
  46. },
  47. ];
  48. export type MetricType =
  49. | 'L2'
  50. | 'IP'
  51. | 'COSINE'
  52. | 'HAMMING'
  53. | 'SUBSTRUCTURE'
  54. | 'SUPERSTRUCTURE'
  55. | 'JACCARD'
  56. | 'TANIMOTO';
  57. export type searchKeywordsType =
  58. | 'nprobe'
  59. | 'ef'
  60. | 'search_k'
  61. | 'search_length'
  62. | 'round_decimal'
  63. | 'level'
  64. | 'search_list'
  65. | 'radius'
  66. | 'range_filter';
  67. export type indexConfigType = {
  68. [x: string]: {
  69. create: string[];
  70. search: searchKeywordsType[];
  71. };
  72. };
  73. // index
  74. export const FLOAT_INDEX_CONFIG: indexConfigType = {
  75. SCANN: {
  76. create: ['nlist'],
  77. search: ['nprobe'],
  78. },
  79. IVF_FLAT: {
  80. create: ['nlist'],
  81. search: ['nprobe'],
  82. },
  83. IVF_PQ: {
  84. create: ['nlist', 'm', 'nbits'],
  85. search: ['nprobe'],
  86. },
  87. IVF_SQ8: {
  88. create: ['nlist'],
  89. search: ['nprobe'],
  90. },
  91. FLAT: {
  92. create: [],
  93. search: ['nprobe'],
  94. },
  95. HNSW: {
  96. create: ['M', 'efConstruction'],
  97. search: ['ef'],
  98. },
  99. ANNOY: {
  100. create: ['n_trees'],
  101. search: ['search_k'],
  102. },
  103. AUTOINDEX: {
  104. create: [],
  105. search: ['level'],
  106. },
  107. DISKANN: {
  108. create: [],
  109. search: ['search_list'],
  110. },
  111. };
  112. export const BINARY_INDEX_CONFIG: indexConfigType = {
  113. // },
  114. BIN_FLAT: {
  115. create: ['nlist'],
  116. search: [],
  117. },
  118. BIN_IVF_FLAT: {
  119. create: ['nlist'],
  120. search: ['nprobe'],
  121. },
  122. };
  123. export const INDEX_CONFIG: indexConfigType = {
  124. ...FLOAT_INDEX_CONFIG,
  125. ...BINARY_INDEX_CONFIG,
  126. };
  127. export const COLLECTION_NAME_REGX = /^[0-9,a-z,A-Z$_]+$/;
  128. export const m_OPTIONS = [
  129. { label: '64', value: 64 },
  130. { label: '32', value: 32 },
  131. { label: '16', value: 16 },
  132. { label: '8', value: 8 },
  133. { label: '4', value: 4 },
  134. ];
  135. export const INDEX_OPTIONS_MAP = {
  136. [DataTypeEnum.FloatVector]: Object.keys(FLOAT_INDEX_CONFIG).map(v => ({
  137. label: v,
  138. value: v,
  139. })),
  140. [DataTypeEnum.BinaryVector]: Object.keys(BINARY_INDEX_CONFIG).map(v => ({
  141. label: v,
  142. value: v,
  143. })),
  144. [DataTypeEnum.VarChar]: [
  145. {
  146. label: 'marisa-trie',
  147. value: 'marisa-trie',
  148. },
  149. ],
  150. };
  151. export const METRIC_OPTIONS_MAP = {
  152. [DataTypeEnum.FloatVector]: [
  153. {
  154. value: METRIC_TYPES_VALUES.L2,
  155. label: METRIC_TYPES_VALUES.L2,
  156. },
  157. {
  158. value: METRIC_TYPES_VALUES.IP,
  159. label: METRIC_TYPES_VALUES.IP,
  160. },
  161. {
  162. value: METRIC_TYPES_VALUES.COSINE,
  163. label: METRIC_TYPES_VALUES.COSINE,
  164. },
  165. ],
  166. [DataTypeEnum.BinaryVector]: [
  167. {
  168. value: METRIC_TYPES_VALUES.SUBSTRUCTURE,
  169. label: METRIC_TYPES_VALUES.SUBSTRUCTURE,
  170. },
  171. {
  172. value: METRIC_TYPES_VALUES.SUPERSTRUCTURE,
  173. label: METRIC_TYPES_VALUES.SUPERSTRUCTURE,
  174. },
  175. {
  176. value: METRIC_TYPES_VALUES.HAMMING,
  177. label: METRIC_TYPES_VALUES.HAMMING,
  178. },
  179. {
  180. value: METRIC_TYPES_VALUES.JACCARD,
  181. label: METRIC_TYPES_VALUES.JACCARD,
  182. },
  183. {
  184. value: METRIC_TYPES_VALUES.TANIMOTO,
  185. label: METRIC_TYPES_VALUES.TANIMOTO,
  186. },
  187. ],
  188. };
  189. /**
  190. * use L2 as float default metric type
  191. * use Hamming as binary default metric type
  192. */
  193. export const DEFAULT_METRIC_VALUE_MAP = {
  194. [DataTypeEnum.FloatVector]: METRIC_TYPES_VALUES.L2,
  195. [DataTypeEnum.BinaryVector]: METRIC_TYPES_VALUES.HAMMING,
  196. };
  197. // search params default value map
  198. export const DEFAULT_SEARCH_PARAM_VALUE_MAP: {
  199. [key in searchKeywordsType]?: number;
  200. } = {
  201. // range: [top_k, 32768]
  202. ef: 250,
  203. // range: [1, nlist]
  204. nprobe: 1,
  205. // range: {-1} ∪ [top_k, n × n_trees]
  206. search_k: 250,
  207. // range: [10, 300]
  208. search_length: 10,
  209. level: 1,
  210. search_list: 20,
  211. };
  212. export const DEFAULT_NLIST_VALUE = 1024;
  213. export enum LOADING_STATE {
  214. LOADED,
  215. LOADING,
  216. UNLOADED,
  217. }
  218. export const DEFAULT_VECTORS = 100000;
  219. export const DEFAULT_SEFMENT_FILE_SIZE = 1024;
  220. export const DEFAULT_MILVUS_PORT = 19530;
  221. export const DEFAULT_PROMETHEUS_PORT = 9090;
  222. export enum MILVUS_NODE_TYPE {
  223. ROOTCOORD = 'rootcoord',
  224. QUERYCOORD = 'querycoord',
  225. INDEXCOORD = 'indexcoord',
  226. QUERYNODE = 'querynode',
  227. INDEXNODE = 'indexnode',
  228. DATACORD = 'datacord',
  229. DATANODE = 'datanode',
  230. PROXY = 'proxy',
  231. }
  232. export enum MILVUS_DEPLOY_MODE {
  233. DISTRIBUTED = 'DISTRIBUTED',
  234. STANDALONE = 'STANDALONE',
  235. }