feat(knowledge): add RAPTOR and Knowledge Graph config sections to parsers
refactor(knowledge): reorganize parser configuration components into accordions
This commit is contained in:
@@ -20,7 +20,6 @@ import {
|
||||
PresentationConfiguration,
|
||||
OneConfiguration,
|
||||
TagConfiguration,
|
||||
ChunkMethodItem,
|
||||
} from '../configuration';
|
||||
|
||||
// 配置组件映射表
|
||||
|
||||
@@ -18,6 +18,8 @@ import {
|
||||
Delete as DeleteIcon,
|
||||
} from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { EmbeddingModelItem } from '../configuration';
|
||||
import { PageRankItem, TagsItem } from '../configuration/common-items';
|
||||
|
||||
interface GeneralFormProps {
|
||||
form?: UseFormReturn;
|
||||
@@ -37,7 +39,7 @@ function GeneralForm({
|
||||
cancelButtonText,
|
||||
}: GeneralFormProps = {}) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
const defaultSubmitButtonText = submitButtonText || t('common.save');
|
||||
const defaultCancelButtonText = cancelButtonText || t('common.cancel');
|
||||
// 优先使用props传递的form,否则使用FormProvider的context
|
||||
@@ -47,9 +49,9 @@ function GeneralForm({
|
||||
} catch (error) {
|
||||
contextForm = null;
|
||||
}
|
||||
|
||||
|
||||
const form = propForm || contextForm;
|
||||
|
||||
|
||||
if (!form) {
|
||||
console.error('GeneralForm: No form context found. Component must be used within a FormProvider or receive a form prop.');
|
||||
return (
|
||||
@@ -60,7 +62,7 @@ function GeneralForm({
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
const { control, watch, setValue, handleSubmit } = form;
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
@@ -94,7 +96,7 @@ function GeneralForm({
|
||||
</Typography>
|
||||
|
||||
<Grid container spacing={3}>
|
||||
<Grid size={{xs:12, md:6}}>
|
||||
<Grid size={{ xs: 12, md: 6 }}>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'row', alignItems: 'center', gap: 2 }}>
|
||||
<Avatar
|
||||
src={avatar}
|
||||
@@ -103,7 +105,7 @@ function GeneralForm({
|
||||
>
|
||||
{!avatar && <PhotoCameraIcon sx={{ fontSize: 40 }} />}
|
||||
</Avatar>
|
||||
|
||||
|
||||
<Box sx={{ display: 'flex', gap: 1 }}>
|
||||
<Button
|
||||
variant="outlined"
|
||||
@@ -135,9 +137,9 @@ function GeneralForm({
|
||||
</Grid>
|
||||
|
||||
{/* 表单字段 */}
|
||||
<Grid size={{xs:12,md:8}}>
|
||||
<Grid size={{ xs: 12, md: 8 }}>
|
||||
<Grid container spacing={2}>
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="name"
|
||||
control={control}
|
||||
@@ -155,7 +157,7 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="description"
|
||||
control={control}
|
||||
@@ -172,7 +174,7 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="permission"
|
||||
control={control}
|
||||
@@ -188,7 +190,13 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid size={{ xs: 12 }} sx={{ mt: 2 }}>
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<TagsItem />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
{/* 表单操作按钮 - 仅在有onSubmit回调时显示 */}
|
||||
|
||||
@@ -1,16 +1,72 @@
|
||||
import React from 'react';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function AudioConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,61 +1,62 @@
|
||||
import React from 'react';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
TOCEnhanceItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function BookConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
{/* 分块token数 */}
|
||||
<ChunkTokenNumberItem />
|
||||
{/* 分隔符 */}
|
||||
<DelimiterItem />
|
||||
{/* 目录增强 */}
|
||||
<TOCEnhanceItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -46,6 +46,58 @@ const PARSER_OPTIONS = [
|
||||
{ value: DOCUMENT_PARSER_TYPES.Tag, label: 'Tag', description: translate('knowledge.config.parser.tag') },
|
||||
];
|
||||
|
||||
/* ============================================================================
|
||||
* 第一部分:基础配置 (Basic Configuration)
|
||||
* ============================================================================ */
|
||||
|
||||
/**
|
||||
* 嵌入模型选择
|
||||
*/
|
||||
export function EmbeddingModelItem() {
|
||||
const { control } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { options } = useEmbeddingModelOptions();
|
||||
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.embeddingModel')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="embd_id"
|
||||
control={control}
|
||||
render={({ field }) => (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select
|
||||
{...field}
|
||||
>
|
||||
{options.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分块方法选择
|
||||
*/
|
||||
export function ChunkMethodItem() {
|
||||
const { control, formState: { errors } } = useFormContext();
|
||||
const parserIds = useSelectChunkMethodList();
|
||||
@@ -97,78 +149,6 @@ export function ChunkMethodItem() {
|
||||
);
|
||||
}
|
||||
|
||||
// 基于基础FormField组件的业务组合组件
|
||||
|
||||
// 分块token数量配置
|
||||
export function ChunkTokenNumberItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.chunk_token_num"
|
||||
label={t('knowledge.config.chunkTokenSize')}
|
||||
min={64}
|
||||
max={2048}
|
||||
step={64}
|
||||
defaultValue={512}
|
||||
layout="horizontal"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 页面排名配置
|
||||
export function PageRankItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.page_rank"
|
||||
label={t('knowledge.config.pageRank')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterPageRank')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动关键词数量配置
|
||||
export function AutoKeywordsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.auto_keywords"
|
||||
label={t('knowledge.config.autoKeywords')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterKeywordCount')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动问题数量配置
|
||||
export function AutoQuestionsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.auto_questions"
|
||||
label={t('knowledge.config.autoQuestions')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterQuestionCount')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 表格转HTML开关
|
||||
export function HtmlForExcelItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.html4excel"
|
||||
label={t('knowledge.config.htmlForExcel')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 标签集选择
|
||||
export function TagsItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -188,6 +168,183 @@ export function TagsItem() {
|
||||
);
|
||||
}
|
||||
|
||||
// 页面排名配置
|
||||
export function PageRankItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="pagerank"
|
||||
label={t('knowledge.config.pageRank')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterPageRank')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// PDF解析器配置
|
||||
export function LayoutRecognizeItem() {
|
||||
const { control, setValue, formState } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { getOptionsByModelType } = useLlmOptionsByModelType();
|
||||
|
||||
const { basicOptions, image2TextOptions } = useMemo(() => {
|
||||
// 基础选项
|
||||
const basicOptions = [
|
||||
{ value: 'DeepDOC', label: 'DeepDOC' },
|
||||
{ value: 'Plain Text', label: t('knowledge.config.plainText') },
|
||||
{ value: 'MinerU', label: t('knowledge.config.minerU') }
|
||||
];
|
||||
|
||||
// 获取图像转文本模型选项
|
||||
const image2TextOptions = getOptionsByModelType(LLM_MODEL_TYPES.Image2text);
|
||||
|
||||
return { basicOptions, image2TextOptions };
|
||||
}, [getOptionsByModelType, t]);
|
||||
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.pdfParser')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="parser_config.layout_recognize"
|
||||
control={control}
|
||||
render={({ field }) => {
|
||||
// 设置默认值
|
||||
if (typeof field.value === 'undefined') {
|
||||
const defaultValue = formState.defaultValues?.parser_config?.layout_recognize ?? 'DeepDOC';
|
||||
setValue('parser_config.layout_recognize', defaultValue);
|
||||
}
|
||||
|
||||
return (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select {...field}>
|
||||
{/* 基础选项 */}
|
||||
{basicOptions.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</MenuItem>
|
||||
))}
|
||||
|
||||
{/* 图像转文本模型选项 - 带分组和图标 */}
|
||||
{image2TextOptions.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
<Typography variant="caption" color="error.main">
|
||||
{t('knowledge.config.experimental')}
|
||||
</Typography>
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// 文本分段标识符配置
|
||||
export function DelimiterItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<TextFormField
|
||||
name="parser_config.delimiter"
|
||||
label={t('knowledge.config.delimiter')}
|
||||
placeholder={t('knowledge.config.enterDelimiter')}
|
||||
defaultValue="\n"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 分块token数量配置
|
||||
export function ChunkTokenNumberItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.chunk_token_num"
|
||||
label={t('knowledge.config.chunkTokenSize')}
|
||||
min={64}
|
||||
max={2048}
|
||||
step={64}
|
||||
defaultValue={512}
|
||||
layout="horizontal"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动关键词数量配置
|
||||
export function AutoKeywordsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.auto_keywords"
|
||||
label={t('knowledge.config.autoKeywords')}
|
||||
defaultValue={0}
|
||||
step={1}
|
||||
max={30}
|
||||
min={0}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动问题数量配置
|
||||
export function AutoQuestionsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.auto_questions"
|
||||
label={t('knowledge.config.autoQuestions')}
|
||||
defaultValue={0}
|
||||
step={1}
|
||||
max={30}
|
||||
min={0}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 表格转HTML开关
|
||||
export function HtmlForExcelItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.html4excel"
|
||||
label={t('knowledge.config.htmlForExcel')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 目录增强开关
|
||||
*/
|
||||
export function TOCEnhanceItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.toc_extraction"
|
||||
label={t('knowledge.config.tocEnhance')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
* 第二部分:RAPTOR策略 (RAPTOR Strategy)
|
||||
* ============================================================================ */
|
||||
|
||||
// RAPTOR策略开关
|
||||
export function UseRaptorItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -221,7 +378,7 @@ export function RaptorMaxTokenItem() {
|
||||
name="parser_config.raptor.max_token"
|
||||
label={t('knowledge.config.maxTokens')}
|
||||
min={64}
|
||||
max={512}
|
||||
max={2048}
|
||||
step={32}
|
||||
defaultValue={256}
|
||||
layout="horizontal"
|
||||
@@ -253,7 +410,7 @@ export function RaptorMaxClusterItem() {
|
||||
name="parser_config.raptor.max_cluster"
|
||||
label={t('knowledge.config.maxClusterCount')}
|
||||
min={16}
|
||||
max={128}
|
||||
max={1024}
|
||||
step={16}
|
||||
defaultValue={64}
|
||||
layout="horizontal"
|
||||
@@ -274,6 +431,10 @@ export function RaptorRandomSeedItem() {
|
||||
);
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
* 第三部分:知识图谱 (Knowledge Graph)
|
||||
* ============================================================================ */
|
||||
|
||||
// 知识图谱开关
|
||||
export function UseGraphragItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -345,108 +506,44 @@ export function CommunityReportItem() {
|
||||
);
|
||||
}
|
||||
|
||||
export function EmbeddingModelItem() {
|
||||
const { control } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { options } = useEmbeddingModelOptions();
|
||||
/* ============================================================================
|
||||
* 组合配置组件 (Composite Configuration Components)
|
||||
* ============================================================================ */
|
||||
|
||||
// RAPTOR策略配置项组合
|
||||
export function RaptorConfigItems() {
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.embeddingModel')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="embd_id"
|
||||
control={control}
|
||||
render={({ field }) => (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select
|
||||
{...field}
|
||||
>
|
||||
{options.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// PDF解析器配置
|
||||
export function LayoutRecognizeItem() {
|
||||
const { control, setValue, formState } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { getOptionsByModelType } = useLlmOptionsByModelType();
|
||||
|
||||
const options = useMemo(() => {
|
||||
// 基础选项
|
||||
const basicOptions = [
|
||||
{ value: 'DeepDOC', label: 'DeepDOC' },
|
||||
{ value: 'Plain Text', label: t('knowledge.config.plainText') }
|
||||
];
|
||||
|
||||
// 获取图像转文本模型选项
|
||||
const image2TextOptions = getOptionsByModelType(LLM_MODEL_TYPES.Image2text);
|
||||
|
||||
// 将图像转文本模型选项转换为SelectOption格式
|
||||
const image2TextSelectOptions = image2TextOptions.flatMap(group =>
|
||||
group.options.map(option => ({
|
||||
value: option.value,
|
||||
label: `${option.label} (${t('knowledge.config.experimental')})`
|
||||
}))
|
||||
);
|
||||
|
||||
return [...basicOptions, ...image2TextSelectOptions];
|
||||
}, [getOptionsByModelType, t]);
|
||||
|
||||
// 知识图谱配置项组合
|
||||
export function KnowledgeGraphConfigItems() {
|
||||
return (
|
||||
<Controller
|
||||
name="parser_config.layout_recognize"
|
||||
control={control}
|
||||
render={({ field }) => {
|
||||
// 设置默认值
|
||||
if (typeof field.value === 'undefined') {
|
||||
const defaultValue = formState.defaultValues?.parser_config?.layout_recognize ?? 'DeepDOC';
|
||||
setValue('parser_config.layout_recognize', defaultValue);
|
||||
}
|
||||
|
||||
return (
|
||||
<SelectFormField
|
||||
name="parser_config.layout_recognize"
|
||||
label={t('knowledge.config.pdfParser')}
|
||||
options={options}
|
||||
defaultValue="DeepDOC"
|
||||
/>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// 文本分段标识符配置
|
||||
export function DelimiterItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<TextFormField
|
||||
name="parser_config.delimiter"
|
||||
label={t('knowledge.config.delimiter')}
|
||||
placeholder={t('knowledge.config.enterDelimiter')}
|
||||
defaultValue="\n!?。;!?"
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -5,10 +5,7 @@ interface ConfigurationFormContainerProps extends PropsWithChildren {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function ConfigurationFormContainer({
|
||||
children,
|
||||
className,
|
||||
}: ConfigurationFormContainerProps) {
|
||||
export function ConfigurationFormContainer({ children, className }: ConfigurationFormContainerProps) {
|
||||
return (
|
||||
<Paper
|
||||
elevation={0}
|
||||
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function EmailConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
// 配置组件统一导出
|
||||
export { NaiveConfiguration } from './naive';
|
||||
export { QAConfiguration } from './qa';
|
||||
export { PaperConfiguration } from './paper';
|
||||
export { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
export { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
|
||||
// 所有解析器配置组件
|
||||
export { NaiveConfiguration } from './naive';
|
||||
export { QAConfiguration } from './qa';
|
||||
export { PaperConfiguration } from './paper';
|
||||
export { AudioConfiguration } from './audio';
|
||||
export { BookConfiguration } from './book';
|
||||
export { EmailConfiguration } from './email';
|
||||
|
||||
@@ -1,39 +1,108 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
import { Box, Typography } from '@mui/material';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
} from './common-items';
|
||||
|
||||
export function KnowledgeGraphConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.pageRankConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 嵌入模型 */}
|
||||
<EmbeddingModelItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.entityTypeConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.maxTokenConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.delimiterConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
</>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function LawsConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,12 +1,21 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
@@ -21,47 +30,60 @@ import {
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function ManualConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<ChunkTokenNumberItem />
|
||||
<DelimiterItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<HtmlForExcelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
@@ -12,26 +13,15 @@ import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
TagsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
LayoutRecognizeItem,
|
||||
DelimiterItem
|
||||
DelimiterItem,
|
||||
TOCEnhanceItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function NaiveConfiguration() {
|
||||
@@ -41,105 +31,58 @@ export function NaiveConfiguration() {
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:基础配置 */}
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 切片方法 */}
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* PDF解析器 */}
|
||||
<LayoutRecognizeItem />
|
||||
|
||||
{/* 嵌入模型 */}
|
||||
<EmbeddingModelItem />
|
||||
|
||||
{/* 建议文本块大小 */}
|
||||
<ChunkTokenNumberItem />
|
||||
|
||||
{/* 文本分段标识符 */}
|
||||
<DelimiterItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:页面排名和自动提取 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.pageRankAndAutoExtract')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 页面排名 */}
|
||||
<PageRankItem />
|
||||
|
||||
{/* 目录增强 */}
|
||||
<TOCEnhanceItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
|
||||
{/* 表格转HTML */}
|
||||
<HtmlForExcelItem />
|
||||
|
||||
{/* 标签集 */}
|
||||
<TagsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:RAPTOR策略 */}
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
<RaptorConfigItems />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第四部分:知识图谱 */}
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
<KnowledgeGraphConfigItems />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
@@ -1,67 +1,78 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function OneConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<ChunkTokenNumberItem />
|
||||
<DelimiterItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<HtmlForExcelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,61 +1,75 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function PaperConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function PictureConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,66 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails, Divider } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
LayoutRecognizeItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem
|
||||
} from './common-items';
|
||||
|
||||
export function PresentationConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,14 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function QAConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function ResumeConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function TableConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,21 +1,56 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails, Divider } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
import { Box, Typography } from '@mui/material';
|
||||
import {
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
ChunkMethodItem,
|
||||
LayoutRecognizeItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem
|
||||
} from './common-items';
|
||||
|
||||
export function TagConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.pageRankConfigTodo')}
|
||||
</Typography>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
|
||||
@@ -25,14 +25,7 @@ import GeneralForm from './components/GeneralForm';
|
||||
import ChunkMethodForm from './components/ChunkMethodForm';
|
||||
import { useSnackbar } from '@/components/Provider/SnackbarProvider';
|
||||
import { DOCUMENT_PARSER_TYPES } from '@/constants/knowledge';
|
||||
|
||||
// 统一表单数据类型
|
||||
interface BaseFormData {
|
||||
name: string;
|
||||
description: string;
|
||||
permission: string;
|
||||
avatar?: string;
|
||||
}
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
function KnowledgeBaseCreate() {
|
||||
const navigate = useNavigate();
|
||||
@@ -63,11 +56,12 @@ function KnowledgeBaseCreate() {
|
||||
description: '',
|
||||
permission: 'me',
|
||||
avatar: undefined,
|
||||
pagerank: 0,
|
||||
parser_id: DOCUMENT_PARSER_TYPES.Naive,
|
||||
embd_id: 'text-embedding-v3@Tongyi-Qianwen',
|
||||
embd_id: '',
|
||||
parser_config: {
|
||||
chunk_token_num: 512,
|
||||
delimiter: '\n',
|
||||
delimiter: '\\n',
|
||||
auto_keywords: 0,
|
||||
auto_questions: 0,
|
||||
html4excel: false,
|
||||
@@ -91,6 +85,7 @@ function KnowledgeBaseCreate() {
|
||||
|
||||
// 处理表单提交
|
||||
const handleSubmit = async ({ data }: { data: any }) => {
|
||||
logger.info('提交表单数据:', data);
|
||||
clearError();
|
||||
try {
|
||||
if (activeStep === 0) {
|
||||
@@ -100,6 +95,8 @@ function KnowledgeBaseCreate() {
|
||||
description: data.description,
|
||||
permission: data.permission,
|
||||
avatar: data.avatar,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
};
|
||||
|
||||
const result = await createKnowledge(basicData);
|
||||
@@ -126,6 +123,7 @@ function KnowledgeBaseCreate() {
|
||||
permission: data.permission,
|
||||
avatar: data.avatar,
|
||||
parser_id: data.parser_id,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
parser_config: data.parser_config,
|
||||
};
|
||||
|
||||
@@ -55,6 +55,8 @@ function KnowledgeBaseSetting() {
|
||||
description: '',
|
||||
permission: 'me',
|
||||
avatar: undefined,
|
||||
embd_id: '',
|
||||
pagerank: 0,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -74,6 +76,7 @@ function KnowledgeBaseSetting() {
|
||||
avatar: knowledge.avatar,
|
||||
parser_id: knowledge.parser_id || DOCUMENT_PARSER_TYPES.Naive,
|
||||
embd_id: knowledge.embd_id || '',
|
||||
pagerank: knowledge.pagerank || 0,
|
||||
parser_config: {
|
||||
chunk_token_num: knowledge.parser_config?.chunk_token_num || 512,
|
||||
delimiter: knowledge.parser_config?.delimiter || '\n',
|
||||
@@ -117,6 +120,8 @@ function KnowledgeBaseSetting() {
|
||||
avatar: data.avatar,
|
||||
kb_id: knowledge.id,
|
||||
parser_id: knowledge.parser_id,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
} as any;
|
||||
|
||||
await updateKnowledgeBasicInfo(basicData);
|
||||
|
||||
Reference in New Issue
Block a user