From d2022f8e94a98a1ad85b181fba206b9d1da3a6ca Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Fri, 16 Oct 2026 11:09:43 +0800 Subject: [PATCH 1/2] feat: hit-test --- ui/src/api/API_README.md | 8 + .../knowledge/knowledge.ts | 15 +- .../shared-resources/knowledge/knowledge.ts | 7 + .../admin/workspace/knowledge/knowledge.ts | 7 + ui/src/api/types/knowledge.ts | 51 ++++- ui/src/assets/empty/hit-test.png | Bin 0 -> 4380 bytes ui/src/constants/CONSTANT_README.md | 3 + ui/src/constants/knowledge.ts | 21 +- ui/src/router/ROUTE_README.md | 3 +- .../modules/knowledge-system-resource.ts | 9 +- .../system/modules/knowledge-system-shared.ts | 9 +- .../workspace/modules/knowledge-shared.ts | 9 +- .../admin/workspace/modules/knowledge.ts | 9 +- ui/src/views/VIEW_README.md | 15 +- .../hit-test/components/HitTestInput.vue | 187 ++++++++++++++++ .../hit-test/components/HitTestResult.vue | 37 ++++ .../views/knowledge-detail/hit-test/index.vue | 206 ++++++++++++++++++ .../library/document/index.vue | 8 +- .../knowledge-detail/recall-test/index.vue | 10 - ui/src/workflow-canvas/WORKFLOW_README.md | 3 +- .../component/SearchSetting.vue | 5 +- .../nodes/search-knowledge-node/constant.ts | 14 -- .../nodes/search-knowledge-node/index.vue | 5 +- 23 files changed, 585 insertions(+), 56 deletions(-) create mode 100644 ui/src/assets/empty/hit-test.png create mode 100644 ui/src/views/knowledge-detail/hit-test/components/HitTestInput.vue create mode 100644 ui/src/views/knowledge-detail/hit-test/components/HitTestResult.vue create mode 100644 ui/src/views/knowledge-detail/hit-test/index.vue delete mode 100644 ui/src/views/knowledge-detail/recall-test/index.vue diff --git a/ui/src/api/API_README.md b/ui/src/api/API_README.md index 28d89f830a8..e77b17b531c 100644 --- a/ui/src/api/API_README.md +++ b/ui/src/api/API_README.md @@ -235,6 +235,14 @@ System 不传 Workspace 文件夹条件;System 共享不提供智能体选择 共享工具 API 不提供工作空间文件夹移动或批量接口;复用卡片、Action 和表单接收完整 Workspace 与 System 共享 API 的联合类型,不补造接口以匹配 Workspace 方法集合。 +### 知识库召回测试 + +Workspace、System 资源管理和 System 共享资源均在各自 `knowledge/knowledge.ts` 中提供 +`postKnowledgeHitTest(knowledgeId, payload)`,向知识库的 `/hit_test` 提交 POST,直接返回命中分段数组。 +请求使用 `KnowledgeHitTestPayload`,包含 `query_text`、`image_list`、`top_number`、`similarity` 和 +`search_mode`;检索模式复用 `KNOWLEDGE_SEARCH_MODE`。文本和图片至少提供一项,图片仅支持向量或混合检索。 +结果使用 `KnowledgeHitTestResult`,保留分段、得分及图片命中信息。Workspace 共享暂无对应接口,不回退其他范围。 + ### System 共享知识库 `system/shared-resources/knowledge/knowledge.ts` 使用 `/system/shared/knowledge`,维护分页、详情、 diff --git a/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts b/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts index d3a1b9fb0f8..30125ace20d 100644 --- a/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts +++ b/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts @@ -1,7 +1,15 @@ import { del, get, getExportFile, post, put } from '@/api/admin/core/request' import type LogicFlow from '@logicflow/core' import type { ParamsPage, ResponsePage } from '@/api/admin/core/types' -import type { Dict, KnowledgeDetail, KnowledgeItem, KnowledgeGeneratePayload, KnowledgeSyncType } from '@/api/types' +import type { + KnowledgeHitTestPayload, + KnowledgeHitTestResult, + Dict, + KnowledgeDetail, + KnowledgeItem, + KnowledgeGeneratePayload, + KnowledgeSyncType, +} from '@/api/types' const prefix = '/system/resource/knowledge' @@ -77,7 +85,12 @@ const putKnowledgeKeywordIndex = (knowledgeId: string) => put(` const postTransformWorkflow = (knowledgeId: string, payload: { work_flow: LogicFlow.GraphConfigData }) => post<{ work_flow: LogicFlow.GraphConfigData }, boolean>(`${prefix}/${knowledgeId}/transform_workflow`, payload) +/** 测试知识库检索并返回命中的分段。 */ +const postKnowledgeHitTest = (knowledgeId: string, payload: KnowledgeHitTestPayload) => + post(`${prefix}/${knowledgeId}/hit_test`, payload) + export default { + postKnowledgeHitTest, postTransformWorkflow, putKnowledgeKeywordIndex, exportKnowledgeExcel, diff --git a/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts b/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts index 31937bccf85..a2541889ce0 100644 --- a/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts +++ b/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts @@ -3,6 +3,8 @@ import type LogicFlow from '@logicflow/core' import type { ParamsPage, ResponsePage } from '@/api/admin/core/types' import type { Dict, + KnowledgeHitTestPayload, + KnowledgeHitTestResult, KnowledgeCreatePayload, KnowledgeDetail, KnowledgeGeneratePayload, @@ -96,7 +98,12 @@ const putKnowledgeKeywordIndex = (knowledgeId: string) => put(` const postTransformWorkflow = (knowledgeId: string, payload: { work_flow: LogicFlow.GraphConfigData }) => post<{ work_flow: LogicFlow.GraphConfigData }, boolean>(`${prefix}/${knowledgeId}/transform_workflow`, payload) +/** 测试知识库检索并返回命中的分段。 */ +const postKnowledgeHitTest = (knowledgeId: string, payload: KnowledgeHitTestPayload) => + post(`${prefix}/${knowledgeId}/hit_test`, payload) + export default { + postKnowledgeHitTest, postTransformWorkflow, deleteKnowledge, exportKnowledge, diff --git a/ui/src/api/admin/workspace/knowledge/knowledge.ts b/ui/src/api/admin/workspace/knowledge/knowledge.ts index 1cf1faaab98..48f70ae5840 100644 --- a/ui/src/api/admin/workspace/knowledge/knowledge.ts +++ b/ui/src/api/admin/workspace/knowledge/knowledge.ts @@ -3,6 +3,8 @@ import type LogicFlow from '@logicflow/core' import type { ParamsPage, ResponsePage } from '../../core/types' import type { Dict, + KnowledgeHitTestPayload, + KnowledgeHitTestResult, KnowledgeDetail, KnowledgeItem, KnowledgeGeneratePayload, @@ -129,7 +131,12 @@ const putKnowledgeKeywordIndex = (knowledgeId: string) => put(` const postTransformWorkflow = (knowledgeId: string, payload: { work_flow: LogicFlow.GraphConfigData }) => post<{ work_flow: LogicFlow.GraphConfigData }, boolean>(`${getPrefix()}/${knowledgeId}/transform_workflow`, payload) +/** 测试知识库检索并返回命中的分段。 */ +const postKnowledgeHitTest = (knowledgeId: string, payload: KnowledgeHitTestPayload) => + post(`${getPrefix()}/${knowledgeId}/hit_test`, payload) + export default { + postKnowledgeHitTest, getKnowledgeMcpConfig, putKnowledgeKeywordIndex, exportKnowledgeExcel, diff --git a/ui/src/api/types/knowledge.ts b/ui/src/api/types/knowledge.ts index 5f7b0bbb0c0..21473b98a2e 100644 --- a/ui/src/api/types/knowledge.ts +++ b/ui/src/api/types/knowledge.ts @@ -1,9 +1,10 @@ /** Workspace 知识库列表和知识库卡片共用的业务类型。 */ import type LogicFlow from '@logicflow/core' -import { KNOWLEDGE_SYNC_TYPE, KNOWLEDGE_TYPE } from '@/api/enums' +import { KNOWLEDGE_SEARCH_MODE, KNOWLEDGE_SYNC_TYPE, KNOWLEDGE_TYPE } from '@/api/enums' import type { DefaultModelSettingPayload } from './model' import type { DocumentTaskState } from './document' +import type { ParagraphItem } from './paragraph' /** 生成关联问题共用的模型与提示词配置。 */ export interface RelatedQuestionsConfig { @@ -153,3 +154,51 @@ export interface KnowledgeWorkflowStoreResponse { additionalProperties: { tags: { key: string; name: string }[] } apps: import('./workflow-template').WorkflowStoreTemplate[] } + +/** 知识库召回测试的检索模式。 */ +export type KnowledgeSearchMode = (typeof KNOWLEDGE_SEARCH_MODE)[keyof typeof KNOWLEDGE_SEARCH_MODE] + +/** 召回测试使用的已上传图片。 */ +export interface KnowledgeHitTestImage { + file_id: string + name?: string + url?: string +} + +/** 召回测试的查询内容与检索参数;文本和图片至少提供一项。 */ +export interface KnowledgeHitTestPayload { + query_text?: string | null + image_list?: KnowledgeHitTestImage[] + top_number: number + similarity: number + search_mode: KnowledgeSearchMode +} + +/** 召回结果命中的图片资产。 */ +export interface KnowledgeHitTestAsset { + id: string + file_id: string + file_name: string + url: string + position: number + caption: string + ocr_text: string + description: string + hit_num: number + last_hit_time: string | null +} + +/** 召回测试返回的分段与命中得分。 */ +export interface KnowledgeHitTestResult extends ParagraphItem { + knowledge_id: string + knowledge_name: string + document_name: string + similarity: number + comprehensive_score: number + source_id: string + source_type: number + hit_unit_type: string + query_unit_type: string | null + query_unit_index: number | null + hit_asset: KnowledgeHitTestAsset | null +} diff --git a/ui/src/assets/empty/hit-test.png b/ui/src/assets/empty/hit-test.png new file mode 100644 index 0000000000000000000000000000000000000000..c25303859cb69f75f0bd03706ddd49d797133854 GIT binary patch literal 4380 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 WC$%en-` import('@/views/knowledge-detail/recall-test/index.vue'), + path: 'hit-test', + name: 'system-resource-knowledge-hit-test', + component: () => import('@/views/knowledge-detail/hit-test/index.vue'), + props: (route) => ({ key: `${route.meta.resourceScope}:${route.params.knowledgeId}` }), meta: { title: '召回测试', order: 10 }, }, { diff --git a/ui/src/router/admin/system/modules/knowledge-system-shared.ts b/ui/src/router/admin/system/modules/knowledge-system-shared.ts index 50e79aaa9b7..02b8714dd90 100644 --- a/ui/src/router/admin/system/modules/knowledge-system-shared.ts +++ b/ui/src/router/admin/system/modules/knowledge-system-shared.ts @@ -55,13 +55,14 @@ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ { path: 'retrieval', name: 'system-shared-knowledge-retrieval', - redirect: { name: 'system-shared-knowledge-recall-test' }, + redirect: { name: 'system-shared-knowledge-hit-test' }, meta: { title: '检索优化', icon: 'icon_trace_outlined', order: 30 }, children: [ { - path: 'recall', - name: 'system-shared-knowledge-recall-test', - component: () => import('@/views/knowledge-detail/recall-test/index.vue'), + path: 'hit-test', + name: 'system-shared-knowledge-hit-test', + component: () => import('@/views/knowledge-detail/hit-test/index.vue'), + props: (route) => ({ key: `${route.meta.resourceScope}:${route.params.knowledgeId}` }), meta: { title: '召回测试', order: 10 }, }, { diff --git a/ui/src/router/admin/workspace/modules/knowledge-shared.ts b/ui/src/router/admin/workspace/modules/knowledge-shared.ts index 29570a1eb8b..cd2e15aa973 100644 --- a/ui/src/router/admin/workspace/modules/knowledge-shared.ts +++ b/ui/src/router/admin/workspace/modules/knowledge-shared.ts @@ -55,13 +55,14 @@ export const sharedKnowledgeRoutes: RouteRecordRaw[] = [ { path: 'retrieval', name: 'workspace-shared-knowledge-retrieval', - redirect: { name: 'workspace-shared-knowledge-recall-test' }, + redirect: { name: 'workspace-shared-knowledge-hit-test' }, meta: { title: '检索优化', icon: 'icon_trace_outlined', order: 30 }, children: [ { - path: 'recall', - name: 'workspace-shared-knowledge-recall-test', - component: () => import('@/views/knowledge-detail/recall-test/index.vue'), + path: 'hit-test', + name: 'workspace-shared-knowledge-hit-test', + component: () => import('@/views/knowledge-detail/hit-test/index.vue'), + props: (route) => ({ key: `${route.meta.resourceScope}:${route.params.knowledgeId}` }), meta: { title: '召回测试', order: 10 }, }, { diff --git a/ui/src/router/admin/workspace/modules/knowledge.ts b/ui/src/router/admin/workspace/modules/knowledge.ts index b0e2e183535..6ef4c6f6f11 100644 --- a/ui/src/router/admin/workspace/modules/knowledge.ts +++ b/ui/src/router/admin/workspace/modules/knowledge.ts @@ -67,13 +67,14 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ { path: 'retrieval', name: 'workspace-knowledge-retrieval', - redirect: { name: 'workspace-knowledge-recall-test' }, + redirect: { name: 'workspace-knowledge-hit-test' }, meta: { title: '检索优化', icon: 'icon_trace_outlined', order: 30 }, children: [ { - path: 'recall', - name: 'workspace-knowledge-recall-test', - component: () => import('@/views/knowledge-detail/recall-test/index.vue'), + path: 'hit-test', + name: 'workspace-knowledge-hit-test', + component: () => import('@/views/knowledge-detail/hit-test/index.vue'), + props: (route) => ({ key: `${route.meta.resourceScope}:${route.params.knowledgeId}` }), meta: { title: '召回测试', order: 10 }, }, { diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md index 602a02bcbbc..80b06c74a24 100644 --- a/ui/src/views/VIEW_README.md +++ b/ui/src/views/VIEW_README.md @@ -44,7 +44,8 @@ | `knowledge-detail/` | 四范围知识库详情、菜单与上下文 | | `knowledge-detail/library/document/`、`tags/` | 文档及标签维护 | | `knowledge-detail/library/image/` | 图片列表,复用文档操作 | -| `knowledge-detail/recall-test/`、`question/` | 检索优化占位页 | +| `knowledge-detail/hit-test/` | 召回测试参数、文本/图片查询及结果展示 | +| `knowledge-detail/question/` | 问题管理占位页 | | `knowledge-detail/termbase/` | 知识库自定义分词维护 | | `knowledge-detail/chat-user/`、`external-retrieval/` | 对话授权与外部检索配置 | | `knowledge-detail/setting/base/`、`document-strategy/`、`scheduled-sync/` | 基础设置、文档策略、定时同步与日志 | @@ -132,6 +133,18 @@ 复用周期及同步方式常量,支持日、周、月、间隔和 Cron,间隔至少 5 分钟;完整 Cron 由后台校验。 日志页按需挂载 `SyncLogTable`,传完整 API,仅展示定时任务,不轮询;跳过执行展示原因。 +### 召回测试 + +`hit-test/` 按截图提供参数/输入与结果两栏,复用详情标题栏。通过详情上下文选择 Workspace、 +System 资源管理或 System 共享 Knowledge API 的 `postKnowledgeHitTest`;Workspace 共享缺少对应接口时 +由上下文返回文档页,不回退其他范围。 +默认向量检索、相似度 0.600、TOP K 6;切换全文检索重置相似度为 0,其余模式为 0.6。 +文本和图片至少提供一项,空白文本不可提交;图片存在或上传中时禁选全文检索,全文模式不提供图片入口。 +图片通过 Admin File API 上传为 120 分钟临时文件,最多 10 张、每张 20MB,仅提交上传成功的文件引用; +上传中或存在失败图片时禁测试,移除失败图片后可重试。移除与卸载释放本地预览并取消未完成上传。 +测试期间冻结参数与输入;结果展示提交时的查询、分段、得分、文档名称及命中图片,Markdown 只读。 +初始、无命中与失败分别展示空态,失败保留输入供重试。切换知识库或资源范围通过路由 key 重建召回测试页,隔离查询与结果状态。 + ### 文档列表与导入 `library/document/index.vue` 管理查询、分页、选择、启停及刷新;Action 管理各自请求和浮层。 diff --git a/ui/src/views/knowledge-detail/hit-test/components/HitTestInput.vue b/ui/src/views/knowledge-detail/hit-test/components/HitTestInput.vue new file mode 100644 index 00000000000..0d817b4cab7 --- /dev/null +++ b/ui/src/views/knowledge-detail/hit-test/components/HitTestInput.vue @@ -0,0 +1,187 @@ + + + diff --git a/ui/src/views/knowledge-detail/hit-test/components/HitTestResult.vue b/ui/src/views/knowledge-detail/hit-test/components/HitTestResult.vue new file mode 100644 index 00000000000..abf91049607 --- /dev/null +++ b/ui/src/views/knowledge-detail/hit-test/components/HitTestResult.vue @@ -0,0 +1,37 @@ + + + diff --git a/ui/src/views/knowledge-detail/hit-test/index.vue b/ui/src/views/knowledge-detail/hit-test/index.vue new file mode 100644 index 00000000000..01bf6210b9d --- /dev/null +++ b/ui/src/views/knowledge-detail/hit-test/index.vue @@ -0,0 +1,206 @@ + + + diff --git a/ui/src/views/knowledge-detail/library/document/index.vue b/ui/src/views/knowledge-detail/library/document/index.vue index 0053f0aa217..64be20271d5 100644 --- a/ui/src/views/knowledge-detail/library/document/index.vue +++ b/ui/src/views/knowledge-detail/library/document/index.vue @@ -513,11 +513,7 @@ onBeforeUnmount(() => { /> { -import type { ResourceDetailPageProps } from '@/layout/ResourceDetailLayout.vue' -defineOptions({ name: 'RecallTestView' }) - -defineProps() - - - diff --git a/ui/src/workflow-canvas/WORKFLOW_README.md b/ui/src/workflow-canvas/WORKFLOW_README.md index 0d43dc05679..706bbcaf5d9 100644 --- a/ui/src/workflow-canvas/WORKFLOW_README.md +++ b/ui/src/workflow-canvas/WORKFLOW_README.md @@ -344,7 +344,8 @@ AI 对话、图片理解和视频理解统一复用 `component/ThinkingSetting.v 知识库检索在入口维护范围、参数摘要、问题表单和关联数据;`component/SearchSetting.vue` 封装参数按钮与弹窗,通过 `v-model` 编辑并遵循通用设置弹窗规则。范围引用加入节点表单, 问题引用保留独立有效性检查;移除关联只清理明确取消的 ID,保留当前用户不可见的知识库。 -检索模式协议复用 `KNOWLEDGE_SEARCH_MODE`。 +检索模式协议复用 `KNOWLEDGE_SEARCH_MODE`;模式选项与说明复用知识库常量 `KNOWLEDGE_SEARCH_MODE_OPTIONS`, +见 [常量文档](../constants/CONSTANT_README.md)。 文档内容提取、多路召回和文档标签检索节点使用统一的节点标题、`mk-gray-card`、表单必填标记与 `MkIcon`。多路召回的参数设置按钮与弹窗封装在节点 `component/SearchSetting.vue`,通过 diff --git a/ui/src/workflow-canvas/nodes/search-knowledge-node/component/SearchSetting.vue b/ui/src/workflow-canvas/nodes/search-knowledge-node/component/SearchSetting.vue index 29362cfedd1..6d51096be3e 100644 --- a/ui/src/workflow-canvas/nodes/search-knowledge-node/component/SearchSetting.vue +++ b/ui/src/workflow-canvas/nodes/search-knowledge-node/component/SearchSetting.vue @@ -3,7 +3,8 @@ import { ref, useTemplateRef } from 'vue' import { cloneDeep } from 'lodash' import type { FormInstance } from 'element-plus' import { KNOWLEDGE_SEARCH_MODE } from '@/api/enums' -import { defaultSearchSetting, searchModeOptions } from '../constant' +import { defaultSearchSetting } from '../constant' +import { KNOWLEDGE_SEARCH_MODE_OPTIONS } from '@/constants/knowledge' import type { KnowledgeSearchSetting } from '../types' defineOptions({ name: 'SearchKnowledgeSetting' }) @@ -42,7 +43,7 @@ function resetData() { -