Milvus.tsx 4.7 KB

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