From 2c7428e2eecf76591de992d65d4d7773dcdffdfd Mon Sep 17 00:00:00 2001 From: balibabu Date: Fri, 28 Feb 2025 16:54:04 +0800 Subject: [PATCH] Feat: Put the configuration of different parsing methods into separate components. #5467 (#5487) ### What problem does this PR solve? Feat: Put the configuration of different parsing methods into separate components. #5467 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- .../dataset-configuration-container.tsx | 22 +++ web/src/components/layout-recognize.tsx | 5 +- .../parse-configuration/graph-rag-items.tsx | 12 +- .../components/parse-configuration/index.tsx | 12 +- web/src/locales/en.ts | 3 +- web/src/locales/zh-traditional.ts | 3 +- web/src/locales/zh.ts | 3 +- .../knowledge-setting/configuration.tsx | 186 ------------------ .../knowledge-setting/configuration/audio.tsx | 31 +++ .../knowledge-setting/configuration/book.tsx | 31 +++ .../configuration/common-item.tsx | 54 +++++ .../knowledge-setting/configuration/email.tsx | 31 +++ .../knowledge-setting/configuration/index.tsx | 148 ++++++++++++++ .../configuration/knowledge-graph.tsx | 22 +++ .../knowledge-setting/configuration/laws.tsx | 31 +++ .../configuration/manual.tsx | 31 +++ .../knowledge-setting/configuration/naive.tsx | 43 ++++ .../knowledge-setting/configuration/one.tsx | 28 +++ .../knowledge-setting/configuration/paper.tsx | 31 +++ .../configuration/picture.tsx | 24 +++ .../configuration/presentation.tsx | 31 +++ .../knowledge-setting/configuration/qa.tsx | 16 ++ .../configuration/resume.tsx | 16 ++ .../knowledge-setting/configuration/table.tsx | 13 ++ .../knowledge-setting/configuration/tag.tsx | 13 ++ .../components/knowledge-setting/hooks.ts | 25 ++- .../components/knowledge-setting/index.tsx | 2 +- .../components/knowledge-setting/tag-item.tsx | 13 +- web/src/utils/dataset-util.ts | 9 + 29 files changed, 662 insertions(+), 227 deletions(-) create mode 100644 web/src/components/dataset-configuration-container.tsx delete mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/audio.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/book.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/common-item.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/email.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/index.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/knowledge-graph.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/laws.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/manual.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/naive.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/one.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/paper.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/picture.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/presentation.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/qa.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/resume.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/table.tsx create mode 100644 web/src/pages/add-knowledge/components/knowledge-setting/configuration/tag.tsx create mode 100644 web/src/utils/dataset-util.ts diff --git a/web/src/components/dataset-configuration-container.tsx b/web/src/components/dataset-configuration-container.tsx new file mode 100644 index 000000000..52758c069 --- /dev/null +++ b/web/src/components/dataset-configuration-container.tsx @@ -0,0 +1,22 @@ +import { cn } from '@/lib/utils'; +import { PropsWithChildren } from 'react'; + +type DatasetConfigurationContainerProps = { + className?: string; +} & PropsWithChildren; + +export function DatasetConfigurationContainer({ + children, + className, +}: DatasetConfigurationContainerProps) { + return ( +
+ {children} +
+ ); +} diff --git a/web/src/components/layout-recognize.tsx b/web/src/components/layout-recognize.tsx index e1658fd24..3279ac980 100644 --- a/web/src/components/layout-recognize.tsx +++ b/web/src/components/layout-recognize.tsx @@ -2,6 +2,7 @@ import { LlmModelType } from '@/constants/knowledge'; import { useTranslate } from '@/hooks/common-hooks'; import { useSelectLlmOptionsByModelType } from '@/hooks/llm-hooks'; import { Form, Select } from 'antd'; +import { camelCase } from 'lodash'; import { useMemo } from 'react'; const enum DocumentType { @@ -15,12 +16,12 @@ const LayoutRecognize = () => { const options = useMemo(() => { const list = [DocumentType.DeepDOC, DocumentType.PlainText].map((x) => ({ - label: x, + label: x === DocumentType.PlainText ? t(camelCase(x)) : 'DeepDoc', value: x, })); return [...list, ...allOptions[LlmModelType.Image2text]]; - }, [allOptions]); + }, [allOptions, t]); return ( { return !excludedParseMethods.some((x) => x === parserId); }; +type GraphRagItemsProps = { + marginBottom?: boolean; +}; + // The three types "table", "resume" and "one" do not display this configuration. -const GraphRagItems = () => { +const GraphRagItems = ({ marginBottom = false }: GraphRagItemsProps) => { const { t } = useTranslate('knowledgeConfiguration'); const methodOptions = useMemo(() => { @@ -55,7 +61,7 @@ const GraphRagItems = () => { ); return ( -
+ { ); }} -
+ ); }; diff --git a/web/src/components/parse-configuration/index.tsx b/web/src/components/parse-configuration/index.tsx index 2f98a570b..446412bf4 100644 --- a/web/src/components/parse-configuration/index.tsx +++ b/web/src/components/parse-configuration/index.tsx @@ -1,16 +1,7 @@ import { DocumentParserType } from '@/constants/knowledge'; import { useTranslate } from '@/hooks/common-hooks'; import { PlusOutlined } from '@ant-design/icons'; -import { - Button, - Divider, - Flex, - Form, - Input, - InputNumber, - Slider, - Switch, -} from 'antd'; +import { Button, Flex, Form, Input, InputNumber, Slider, Switch } from 'antd'; import random from 'lodash/random'; export const excludedParseMethods = [ @@ -53,7 +44,6 @@ const ParseConfiguration = () => { return ( <> - { - const { submitKnowledgeConfiguration, submitLoading, navigateToDataset } = - useSubmitKnowledgeConfiguration(form); - const { parserList, embeddingModelOptions, disabled } = - useFetchKnowledgeConfigurationOnMount(form); - const { t } = useTranslate('knowledgeConfiguration'); - const handleChunkMethodSelectChange = useHandleChunkMethodSelectChange(form); - const showAutoKeywords = useShowAutoKeywords(); - - return ( -
- - - - - false} - showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }} - > - - - - - - - - - - - - {t('me')} - {t('team')} - - - - - - - - - - - {({ getFieldValue }) => { - const parserId = getFieldValue('parser_id'); - - return ( - <> - {parserId === DocumentParserType.KnowledgeGraph && ( - <> - - - - - )} - {showAutoKeywords(parserId) && ( - <> - - - - )} - {parserId === DocumentParserType.Naive && ( - <> - - - - - - )} - - {showRaptorParseConfiguration(parserId) && ( - - )} - - {showGraphRagItems(parserId) && } - - {showTagItems(parserId) && } - - ); - }} - - - -
- - - - -
-
-
- ); -}; - -export default ConfigurationForm; diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/audio.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/audio.tsx new file mode 100644 index 000000000..ff1e33223 --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/audio.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function AudioConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/book.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/book.tsx new file mode 100644 index 000000000..44659a1ec --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/book.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function BookConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/common-item.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/common-item.tsx new file mode 100644 index 000000000..3822bf8be --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/common-item.tsx @@ -0,0 +1,54 @@ +import { useTranslate } from '@/hooks/common-hooks'; +import { useHandleChunkMethodSelectChange } from '@/hooks/logic-hooks'; +import { Form, Select } from 'antd'; +import { memo } from 'react'; +import { + useHasParsedDocument, + useSelectChunkMethodList, + useSelectEmbeddingModelOptions, +} from '../hooks'; + +export const EmbeddingModelItem = memo(function EmbeddingModelItem() { + const { t } = useTranslate('knowledgeConfiguration'); + const embeddingModelOptions = useSelectEmbeddingModelOptions(); + const disabled = useHasParsedDocument(); + + return ( + + + + ); +}); + +export const ChunkMethodItem = memo(function ChunkMethodItem() { + const { t } = useTranslate('knowledgeConfiguration'); + const form = Form.useFormInstance(); + const handleChunkMethodSelectChange = useHandleChunkMethodSelectChange(form); + const disabled = useHasParsedDocument(); + const parserList = useSelectChunkMethodList(); + + return ( + + + + ); +}); diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/email.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/email.tsx new file mode 100644 index 000000000..c39015464 --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/email.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function EmailConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/index.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/index.tsx new file mode 100644 index 000000000..87da9427b --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/index.tsx @@ -0,0 +1,148 @@ +import { DocumentParserType } from '@/constants/knowledge'; +import { useTranslate } from '@/hooks/common-hooks'; +import { normFile } from '@/utils/file-util'; +import { PlusOutlined } from '@ant-design/icons'; +import { Button, Form, Input, Radio, Select, Space, Upload } from 'antd'; +import { FormInstance } from 'antd/lib'; +import { useEffect, useMemo, useState } from 'react'; +import { + useFetchKnowledgeConfigurationOnMount, + useSubmitKnowledgeConfiguration, +} from '../hooks'; +import { AudioConfiguration } from './audio'; +import { BookConfiguration } from './book'; +import { EmailConfiguration } from './email'; +import { KnowledgeGraphConfiguration } from './knowledge-graph'; +import { LawsConfiguration } from './laws'; +import { ManualConfiguration } from './manual'; +import { NaiveConfiguration } from './naive'; +import { OneConfiguration } from './one'; +import { PaperConfiguration } from './paper'; +import { PictureConfiguration } from './picture'; +import { PresentationConfiguration } from './presentation'; +import { QAConfiguration } from './qa'; +import { ResumeConfiguration } from './resume'; +import { TableConfiguration } from './table'; +import { TagConfiguration } from './tag'; + +import styles from '../index.less'; + +const { Option } = Select; + +const ConfigurationComponentMap = { + [DocumentParserType.Naive]: NaiveConfiguration, + [DocumentParserType.Qa]: QAConfiguration, + [DocumentParserType.Resume]: ResumeConfiguration, + [DocumentParserType.Manual]: ManualConfiguration, + [DocumentParserType.Table]: TableConfiguration, + [DocumentParserType.Paper]: PaperConfiguration, + [DocumentParserType.Book]: BookConfiguration, + [DocumentParserType.Laws]: LawsConfiguration, + [DocumentParserType.Presentation]: PresentationConfiguration, + [DocumentParserType.Picture]: PictureConfiguration, + [DocumentParserType.One]: OneConfiguration, + [DocumentParserType.Audio]: AudioConfiguration, + [DocumentParserType.Email]: EmailConfiguration, + [DocumentParserType.Tag]: TagConfiguration, + [DocumentParserType.KnowledgeGraph]: KnowledgeGraphConfiguration, +}; + +function EmptyComponent() { + return
; +} + +export const ConfigurationForm = ({ form }: { form: FormInstance }) => { + const { submitKnowledgeConfiguration, submitLoading, navigateToDataset } = + useSubmitKnowledgeConfiguration(form); + const { t } = useTranslate('knowledgeConfiguration'); + + const [finalParserId, setFinalParserId] = useState(); + const knowledgeDetails = useFetchKnowledgeConfigurationOnMount(form); + const parserId: DocumentParserType = Form.useWatch('parser_id', form); + const ConfigurationComponent = useMemo(() => { + return finalParserId + ? ConfigurationComponentMap[finalParserId] + : EmptyComponent; + }, [finalParserId]); + + useEffect(() => { + setFinalParserId(parserId); + }, [parserId]); + + useEffect(() => { + setFinalParserId(knowledgeDetails.parser_id as DocumentParserType); + }, [knowledgeDetails.parser_id]); + + return ( +
+ + + + + false} + showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }} + > + + + + + + + + + + + + {t('me')} + {t('team')} + + + + + + +
+ + + + +
+
+
+ ); +}; diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/knowledge-graph.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/knowledge-graph.tsx new file mode 100644 index 000000000..8a7e3062f --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/knowledge-graph.tsx @@ -0,0 +1,22 @@ +import Delimiter from '@/components/delimiter'; +import EntityTypesItem from '@/components/entity-types-item'; +import MaxTokenNumber from '@/components/max-token-number'; +import PageRank from '@/components/page-rank'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function KnowledgeGraphConfiguration() { + return ( + <> + + + + + + <> + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/laws.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/laws.tsx new file mode 100644 index 000000000..8eea7ce4d --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/laws.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function LawsConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/manual.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/manual.tsx new file mode 100644 index 000000000..eb767a55c --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/manual.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function ManualConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/naive.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/naive.tsx new file mode 100644 index 000000000..956f83b0f --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/naive.tsx @@ -0,0 +1,43 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import { DatasetConfigurationContainer } from '@/components/dataset-configuration-container'; +import Delimiter from '@/components/delimiter'; +import ExcelToHtml from '@/components/excel-to-html'; +import LayoutRecognize from '@/components/layout-recognize'; +import MaxTokenNumber from '@/components/max-token-number'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { Divider } from 'antd'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function NaiveConfiguration() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + +
+ ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/one.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/one.tsx new file mode 100644 index 000000000..d200fe8a0 --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/one.tsx @@ -0,0 +1,28 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function OneConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/paper.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/paper.tsx new file mode 100644 index 000000000..0b19cefda --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/paper.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function PaperConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/picture.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/picture.tsx new file mode 100644 index 000000000..f10b0892b --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/picture.tsx @@ -0,0 +1,24 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function PictureConfiguration() { + return ( + <> + + + + + + <> + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/presentation.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/presentation.tsx new file mode 100644 index 000000000..b03f648aa --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/presentation.tsx @@ -0,0 +1,31 @@ +import { + AutoKeywordsItem, + AutoQuestionsItem, +} from '@/components/auto-keywords-item'; +import PageRank from '@/components/page-rank'; +import ParseConfiguration from '@/components/parse-configuration'; +import GraphRagItems from '@/components/parse-configuration/graph-rag-items'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function PresentationConfiguration() { + return ( + <> + + + + + + <> + + + + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/qa.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/qa.tsx new file mode 100644 index 000000000..1d25dff4e --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/qa.tsx @@ -0,0 +1,16 @@ +import PageRank from '@/components/page-rank'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function QAConfiguration() { + return ( + <> + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/resume.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/resume.tsx new file mode 100644 index 000000000..89d535d9c --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/resume.tsx @@ -0,0 +1,16 @@ +import PageRank from '@/components/page-rank'; +import { TagItems } from '../tag-item'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function ResumeConfiguration() { + return ( + <> + + + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/table.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/table.tsx new file mode 100644 index 000000000..5611812fa --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/table.tsx @@ -0,0 +1,13 @@ +import PageRank from '@/components/page-rank'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function TableConfiguration() { + return ( + <> + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/configuration/tag.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/tag.tsx new file mode 100644 index 000000000..d2a22b228 --- /dev/null +++ b/web/src/pages/add-knowledge/components/knowledge-setting/configuration/tag.tsx @@ -0,0 +1,13 @@ +import PageRank from '@/components/page-rank'; +import { ChunkMethodItem, EmbeddingModelItem } from './common-item'; + +export function TagConfiguration() { + return ( + <> + + + + + + ); +} diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts index 1357ddbf5..a065515df 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts +++ b/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts @@ -41,10 +41,23 @@ export const useSubmitKnowledgeConfiguration = (form: FormInstance) => { // The value that does not need to be displayed in the analysis method Select const HiddenFields = ['email', 'picture', 'audio']; -export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => { +export function useSelectChunkMethodList() { const parserList = useSelectParserList(); - const allOptions = useSelectLlmOptionsByModelType(); + return parserList.filter((x) => !HiddenFields.some((y) => y === x.value)); +} + +export function useSelectEmbeddingModelOptions() { + const allOptions = useSelectLlmOptionsByModelType(); + return allOptions[LlmModelType.Embedding]; +} + +export function useHasParsedDocument() { + const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); + return knowledgeDetails.chunk_num > 0; +} + +export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => { const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); useEffect(() => { @@ -66,13 +79,7 @@ export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => { }); }, [form, knowledgeDetails]); - return { - parserList: parserList.filter( - (x) => !HiddenFields.some((y) => y === x.value), - ), - embeddingModelOptions: allOptions[LlmModelType.Embedding], - disabled: knowledgeDetails.chunk_num > 0, - }; + return knowledgeDetails; }; export const useSelectKnowledgeDetailsLoading = () => diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/index.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/index.tsx index 80e6b3790..8acc45de5 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-setting/index.tsx @@ -1,6 +1,6 @@ import { Col, Divider, Row, Spin, Typography } from 'antd'; import CategoryPanel from './category-panel'; -import ConfigurationForm from './configuration'; +import { ConfigurationForm } from './configuration'; import { useHandleChunkMethodChange, useSelectKnowledgeDetailsLoading, diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/tag-item.tsx b/web/src/pages/add-knowledge/components/knowledge-setting/tag-item.tsx index 1d21e0892..4d3e2a9e0 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/tag-item.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-setting/tag-item.tsx @@ -1,15 +1,6 @@ import { useFetchKnowledgeList } from '@/hooks/knowledge-hooks'; import { UserOutlined } from '@ant-design/icons'; -import { - Avatar, - Divider, - Flex, - Form, - InputNumber, - Select, - Slider, - Space, -} from 'antd'; +import { Avatar, Flex, Form, InputNumber, Select, Slider, Space } from 'antd'; import DOMPurify from 'dompurify'; import { useTranslation } from 'react-i18next'; @@ -83,7 +74,6 @@ export const TopNTagsItem = () => { export function TagItems() { return ( <> - {({ getFieldValue }) => { @@ -95,7 +85,6 @@ export function TagItems() { ); }} - ); } diff --git a/web/src/utils/dataset-util.ts b/web/src/utils/dataset-util.ts new file mode 100644 index 000000000..b8e8df7d7 --- /dev/null +++ b/web/src/utils/dataset-util.ts @@ -0,0 +1,9 @@ +import { DocumentParserType } from '@/constants/knowledge'; + +export function isKnowledgeGraphParser(parserId: DocumentParserType) { + return parserId === DocumentParserType.KnowledgeGraph; +} + +export function isNaiveParser(parserId: DocumentParserType) { + return parserId === DocumentParserType.Naive; +}