From 88c0066b06fe78a8a1355f0cac6a246c74e10c69 Mon Sep 17 00:00:00 2001 From: WangCham <651122857@qq.com> Date: Wed, 16 Jul 2025 17:20:13 +0800 Subject: [PATCH] feat: add topk --- .../knowledge/components/kb-card/KBCardVO.ts | 3 ++ .../knowledge/components/kb-form/KBForm.tsx | 29 +++++++++++++++++++ web/src/app/home/knowledge/page.tsx | 1 + web/src/app/infra/entities/api/index.ts | 1 + web/src/i18n/locales/en-US.ts | 1 + web/src/i18n/locales/ja-JP.ts | 1 + web/src/i18n/locales/zh-Hans.ts | 1 + 7 files changed, 37 insertions(+) diff --git a/web/src/app/home/knowledge/components/kb-card/KBCardVO.ts b/web/src/app/home/knowledge/components/kb-card/KBCardVO.ts index bfbc2adb..b13d2c24 100644 --- a/web/src/app/home/knowledge/components/kb-card/KBCardVO.ts +++ b/web/src/app/home/knowledge/components/kb-card/KBCardVO.ts @@ -3,6 +3,7 @@ export interface IKnowledgeBaseVO { name: string; description: string; embeddingModelUUID: string; + top_k: number; lastUpdatedTimeAgo: string; } @@ -11,6 +12,7 @@ export class KnowledgeBaseVO implements IKnowledgeBaseVO { name: string; description: string; embeddingModelUUID: string; + top_k: number; lastUpdatedTimeAgo: string; constructor(props: IKnowledgeBaseVO) { @@ -18,6 +20,7 @@ export class KnowledgeBaseVO implements IKnowledgeBaseVO { this.name = props.name; this.description = props.description; this.embeddingModelUUID = props.embeddingModelUUID; + this.top_k = props.top_k; this.lastUpdatedTimeAgo = props.lastUpdatedTimeAgo; } } diff --git a/web/src/app/home/knowledge/components/kb-form/KBForm.tsx b/web/src/app/home/knowledge/components/kb-form/KBForm.tsx index b56c327b..7ca885f4 100644 --- a/web/src/app/home/knowledge/components/kb-form/KBForm.tsx +++ b/web/src/app/home/knowledge/components/kb-form/KBForm.tsx @@ -34,6 +34,10 @@ const getFormSchema = (t: (key: string) => string) => embeddingModelUUID: z .string() .min(1, { message: t('knowledge.embeddingModelUUIDRequired') }), + top_k: z + .number() + .min(1, { message: t('knowledge.topKRequired') }) + .max(30, { message: t('knowledge.topKMax') }), }); export default function KBForm({ @@ -59,6 +63,7 @@ export default function KBForm({ name: '', description: t('knowledge.defaultDescription'), embeddingModelUUID: '', + top_k: 5, }, }); @@ -73,6 +78,7 @@ export default function KBForm({ form.setValue('name', val.name); form.setValue('description', val.description); form.setValue('embeddingModelUUID', val.embeddingModelUUID); + form.setValue('top_k', val.top_k || 5); }); } }); @@ -87,6 +93,7 @@ export default function KBForm({ name: res.base.name, description: res.base.description, embeddingModelUUID: res.base.embedding_model_uuid, + top_k: res.base.top_k || 5, }); }); }); @@ -113,6 +120,7 @@ export default function KBForm({ name: data.name, description: data.description, embedding_model_uuid: data.embeddingModelUUID, + top_k: data.top_k, }; } else { // create knowledge base @@ -120,6 +128,7 @@ export default function KBForm({ name: data.name, description: data.description, embedding_model_uuid: data.embeddingModelUUID, + top_k: data.top_k, }; httpClient .createKnowledgeBase(newKb) @@ -216,6 +225,26 @@ export default function KBForm({ )} /> + ( + + + {t('knowledge.topK')} + * + + + field.onChange(Number(e.target.value))} + /> + + + + )} + /> diff --git a/web/src/app/home/knowledge/page.tsx b/web/src/app/home/knowledge/page.tsx index 99de73d8..a2841b24 100644 --- a/web/src/app/home/knowledge/page.tsx +++ b/web/src/app/home/knowledge/page.tsx @@ -46,6 +46,7 @@ export default function KnowledgePage() { name: kb.name, description: kb.description, embeddingModelUUID: kb.embedding_model_uuid, + top_k: kb.top_k, lastUpdatedTimeAgo: lastUpdatedTimeAgoText, }); }), diff --git a/web/src/app/infra/entities/api/index.ts b/web/src/app/infra/entities/api/index.ts index 46d007d8..77dfff05 100644 --- a/web/src/app/infra/entities/api/index.ts +++ b/web/src/app/infra/entities/api/index.ts @@ -146,6 +146,7 @@ export interface KnowledgeBase { name: string; description: string; embedding_model_uuid: string; + top_k: number; created_at?: string; updated_at?: string; } diff --git a/web/src/i18n/locales/en-US.ts b/web/src/i18n/locales/en-US.ts index 8e6d7b49..43110f19 100644 --- a/web/src/i18n/locales/en-US.ts +++ b/web/src/i18n/locales/en-US.ts @@ -245,6 +245,7 @@ const enUS = { today: 'Today', kbName: 'Knowledge Base Name', kbDescription: 'Knowledge Base Description', + topK: 'Top K', defaultDescription: 'A knowledge base', embeddingModelUUID: 'Embedding Model', selectEmbeddingModel: 'Select Embedding Model', diff --git a/web/src/i18n/locales/ja-JP.ts b/web/src/i18n/locales/ja-JP.ts index c0e70806..ad0bf56f 100644 --- a/web/src/i18n/locales/ja-JP.ts +++ b/web/src/i18n/locales/ja-JP.ts @@ -247,6 +247,7 @@ const jaJP = { today: '今日', kbName: '知識ベース名', kbDescription: '知識ベースの説明', + topK: '上位K件', defaultDescription: '知識ベース', embeddingModelUUID: '埋め込みモデル', selectEmbeddingModel: '埋め込みモデルを選択', diff --git a/web/src/i18n/locales/zh-Hans.ts b/web/src/i18n/locales/zh-Hans.ts index 28574fdf..f64fc570 100644 --- a/web/src/i18n/locales/zh-Hans.ts +++ b/web/src/i18n/locales/zh-Hans.ts @@ -240,6 +240,7 @@ const zhHans = { today: '今天', kbName: '知识库名称', kbDescription: '知识库描述', + topK: '召回数量', defaultDescription: '一个知识库', embeddingModelUUID: '嵌入模型', selectEmbeddingModel: '选择嵌入模型',