You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

default.ts 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import type { NodeDefault } from '../../types'
  2. import type { KnowledgeBaseNodeType } from './types'
  3. import { genNodeMetaData } from '@/app/components/workflow/utils'
  4. import { BlockEnum } from '@/app/components/workflow/types'
  5. import { IndexingType } from '@/app/components/datasets/create/step-two'
  6. const metaData = genNodeMetaData({
  7. sort: 3.1,
  8. type: BlockEnum.KnowledgeBase,
  9. isRequired: true,
  10. isUndeletable: true,
  11. isSingleton: true,
  12. isTypeFixed: true,
  13. })
  14. const nodeDefault: NodeDefault<KnowledgeBaseNodeType> = {
  15. metaData,
  16. defaultValue: {
  17. index_chunk_variable_selector: [],
  18. keyword_number: 10,
  19. retrieval_model: {
  20. top_k: 3,
  21. score_threshold_enabled: false,
  22. score_threshold: 0.5,
  23. },
  24. },
  25. checkValid(payload, t) {
  26. const {
  27. chunk_structure,
  28. indexing_technique,
  29. retrieval_model,
  30. embedding_model,
  31. embedding_model_provider,
  32. index_chunk_variable_selector,
  33. } = payload
  34. const {
  35. search_method,
  36. reranking_enable,
  37. reranking_model,
  38. } = retrieval_model || {}
  39. if (!chunk_structure) {
  40. return {
  41. isValid: false,
  42. errorMessage: t('workflow.nodes.knowledgeBase.chunkIsRequired'),
  43. }
  44. }
  45. if (index_chunk_variable_selector.length === 0) {
  46. return {
  47. isValid: false,
  48. errorMessage: t('workflow.nodes.knowledgeBase.chunksVariableIsRequired'),
  49. }
  50. }
  51. if (!indexing_technique) {
  52. return {
  53. isValid: false,
  54. errorMessage: t('workflow.nodes.knowledgeBase.indexMethodIsRequired'),
  55. }
  56. }
  57. if (indexing_technique === IndexingType.QUALIFIED && (!embedding_model || !embedding_model_provider)) {
  58. return {
  59. isValid: false,
  60. errorMessage: t('workflow.nodes.knowledgeBase.embeddingModelIsRequired'),
  61. }
  62. }
  63. if (!retrieval_model || !search_method) {
  64. return {
  65. isValid: false,
  66. errorMessage: t('workflow.nodes.knowledgeBase.retrievalSettingIsRequired'),
  67. }
  68. }
  69. if (reranking_enable && (!reranking_model || !reranking_model.reranking_provider_name || !reranking_model.reranking_model_name)) {
  70. return {
  71. isValid: false,
  72. errorMessage: t('workflow.nodes.knowledgeBase.rerankingModelIsRequired'),
  73. }
  74. }
  75. return {
  76. isValid: true,
  77. errorMessage: '',
  78. }
  79. },
  80. }
  81. export default nodeDefault