feat(knowledge): add RAPTOR and Knowledge Graph config sections to parsers

refactor(knowledge): reorganize parser configuration components into accordions
This commit is contained in:
2025-11-03 17:47:33 +08:00
parent 19b70a4abd
commit 74c4f798a5
40 changed files with 1251 additions and 617 deletions

View File

@@ -175,9 +175,9 @@ const Home = () => {
<CardContent>
<CardTitle>Model Overview</CardTitle>
<Box sx={{ display: 'flex', flexDirection: 'column', gap: '0.4rem', fontSize: '0.7rem' }}>
<Box>Embedding Model: <strong>text-embedding-3-large</strong></Box>
<Box>Generator: <strong>gpt-4o-mini</strong></Box>
<Box>Reranker: <strong>cross-encoder-v2</strong></Box>
<Box>Embedding Model: <Box component="strong" sx={{ fontWeight: 'bold' }}>text-embedding-3-large</Box></Box>
<Box>Generator: <Box component="strong" sx={{ fontWeight: 'bold' }}>gpt-4o-mini</Box></Box>
<Box>Reranker: <Box component="strong" sx={{ fontWeight: 'bold' }}>cross-encoder-v2</Box></Box>
<Box>Chunking: 512 tokens</Box>
<Box>Retriever Top-K: 8</Box>
</Box>

View File

@@ -20,7 +20,6 @@ import {
PresentationConfiguration,
OneConfiguration,
TagConfiguration,
ChunkMethodItem,
} from '../configuration';
// 配置组件映射表

View File

@@ -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回调时显示 */}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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!?。;!?"
/>
);
}

View File

@@ -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}

View File

@@ -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>
);
}

View File

@@ -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';

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);
}

View File

@@ -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>
);

View File

@@ -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,
};

View File

@@ -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);