diff --git a/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/index.tsx b/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/index.tsx index 92d1e3e748..92e72c7753 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/index.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/index.tsx @@ -1,13 +1,15 @@ import { memo } from 'react' import { useTranslation } from 'react-i18next' +import { RiAddLine } from '@remixicon/react' import { Field } from '@/app/components/workflow/nodes/_base/components/layout' import type { ChunkStructureEnum } from '../../types' import OptionCard from '../option-card' import Selector from './selector' import { useChunkStructure } from './hooks' +import Button from '@/app/components/base/button' type ChunkStructureProps = { - chunkStructure: ChunkStructureEnum + chunkStructure?: ChunkStructureEnum onChunkStructureChange: (value: ChunkStructureEnum) => void readonly?: boolean } @@ -27,7 +29,7 @@ const ChunkStructure = ({ fieldTitleProps={{ title: t('workflow.nodes.knowledgeBase.chunkStructure'), tooltip: t('workflow.nodes.knowledgeBase.chunkStructure'), - operation: ( + operation: chunkStructure && ( - + { + chunkStructure && ( + + ) + } + { + !chunkStructure && ( + + + {t('workflow.nodes.knowledgeBase.chooseChunkStructure')} + + )} + /> + ) + } ) } diff --git a/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/selector.tsx b/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/selector.tsx index 47afa914ce..97a5740fce 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/selector.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/chunk-structure/selector.tsx @@ -1,3 +1,4 @@ +import type { ReactNode } from 'react' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { @@ -12,15 +13,17 @@ import type { Option } from './type' type SelectorProps = { options: Option[] - value: ChunkStructureEnum + value?: ChunkStructureEnum onChange: (key: ChunkStructureEnum) => void readonly?: boolean + trigger?: ReactNode } const Selector = ({ options, value, onChange, readonly, + trigger, }: SelectorProps) => { const { t } = useTranslation() const [open, setOpen] = useState(false) @@ -40,17 +43,24 @@ const Selector = ({ open={open} onOpenChange={setOpen} > - { - if (readonly) - return - setOpen(!open) - }}> - + { + if (readonly) + return + setOpen(!open) + }} + > + { + trigger || ( + + ) + }
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/index-method.tsx b/web/app/components/workflow/nodes/knowledge-base/components/index-method.tsx index 05ac638403..0888668873 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/index-method.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/index-method.tsx @@ -21,7 +21,7 @@ import { type IndexMethodProps = { chunkStructure: ChunkStructureEnum - indexMethod: IndexMethodEnum + indexMethod?: IndexMethodEnum onIndexMethodChange: (value: IndexMethodEnum) => void keywordNumber: number onKeywordNumberChange: (value: number) => void diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/hooks.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/hooks.tsx index 34d1269d8c..9d39f81182 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/hooks.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/hooks.tsx @@ -15,7 +15,7 @@ import type { Option, } from './type' -export const useRetrievalSetting = (indexMethod: IndexMethodEnum) => { +export const useRetrievalSetting = (indexMethod?: IndexMethodEnum) => { const { t } = useTranslation() const VectorSearchOption: Option = useMemo(() => { return { diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/index.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/index.tsx index af038e91fc..2fe1ddb96b 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/index.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/index.tsx @@ -17,11 +17,11 @@ import type { RerankingModelSelectorProps } from './reranking-model-selector' import SearchMethodOption from './search-method-option' type RetrievalSettingProps = { - indexMethod: IndexMethodEnum + indexMethod?: IndexMethodEnum readonly?: boolean - searchMethod: RetrievalSearchMethodEnum + searchMethod?: RetrievalSearchMethodEnum onRetrievalSearchMethodChange: (value: RetrievalSearchMethodEnum) => void - hybridSearchMode: HybridSearchModeEnum + hybridSearchMode?: HybridSearchModeEnum onHybridSearchModeChange: (value: HybridSearchModeEnum) => void rerankingModelEnabled?: boolean onRerankingModelEnabledChange?: (value: boolean) => void diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx index ae497cf828..28389ca41e 100644 --- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx @@ -30,9 +30,9 @@ type SearchMethodOptionProps = { readonly?: boolean option: Option hybridSearchModeOptions: HybridSearchModeOption[] - searchMethod: RetrievalSearchMethodEnum + searchMethod?: RetrievalSearchMethodEnum onRetrievalSearchMethodChange: (value: RetrievalSearchMethodEnum) => void - hybridSearchMode: HybridSearchModeEnum + hybridSearchMode?: HybridSearchModeEnum onHybridSearchModeChange: (value: HybridSearchModeEnum) => void weightedScore?: WeightedScore onWeightedScoreChange: (value: { value: number[] }) => void diff --git a/web/app/components/workflow/nodes/knowledge-base/default.ts b/web/app/components/workflow/nodes/knowledge-base/default.ts index 48e2d7fca5..94caf73253 100644 --- a/web/app/components/workflow/nodes/knowledge-base/default.ts +++ b/web/app/components/workflow/nodes/knowledge-base/default.ts @@ -1,11 +1,5 @@ import type { NodeDefault } from '../../types' import type { KnowledgeBaseNodeType } from './types' -import { - ChunkStructureEnum, - HybridSearchModeEnum, - IndexMethodEnum, - RetrievalSearchMethodEnum, -} from './types' import { genNodeMetaData } from '@/app/components/workflow/utils' import { BlockEnum } from '@/app/components/workflow/types' @@ -17,15 +11,11 @@ const nodeDefault: NodeDefault = { metaData, defaultValue: { index_chunk_variable_selector: [], - chunk_structure: ChunkStructureEnum.general, - indexing_technique: IndexMethodEnum.QUALIFIED, keyword_number: 10, retrieval_model: { - search_method: RetrievalSearchMethodEnum.hybrid, top_k: 2, score_threshold_enabled: false, score_threshold: 0.5, - hybridSearchMode: HybridSearchModeEnum.WeightedScore, }, }, checkValid() { diff --git a/web/app/components/workflow/nodes/knowledge-base/panel.tsx b/web/app/components/workflow/nodes/knowledge-base/panel.tsx index 245c63fd3d..01ed3972c8 100644 --- a/web/app/components/workflow/nodes/knowledge-base/panel.tsx +++ b/web/app/components/workflow/nodes/knowledge-base/panel.tsx @@ -75,27 +75,33 @@ const Panel: FC> = ({
- { - data.indexing_technique === IndexMethodEnum.QUALIFIED && ( - + data.chunk_structure && ( + <> + + { + data.indexing_technique === IndexMethodEnum.QUALIFIED && ( + + ) + } +
+ +
+ ) } -
- -