diff --git a/web/src/components/EmbeddingModelSelector.vue b/web/src/components/EmbeddingModelSelector.vue
new file mode 100644
index 00000000..b5a1d7bd
--- /dev/null
+++ b/web/src/components/EmbeddingModelSelector.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+ {{ name }} ({{ configStore.config?.embed_model_names[name]?.dimension }})
+
+
+ {{ getModelStatusIcon(name) }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/views/DataBaseView.vue b/web/src/views/DataBaseView.vue
index 0c38fd6a..c1765ad3 100644
--- a/web/src/views/DataBaseView.vue
+++ b/web/src/views/DataBaseView.vue
@@ -50,7 +50,12 @@
嵌入模型
-
+
@@ -237,6 +242,7 @@ import { LockOutlined, InfoCircleOutlined, QuestionCircleOutlined, PlusOutlined
import { databaseApi, typeApi } from '@/apis/knowledge_api';
import HeaderComponent from '@/components/HeaderComponent.vue';
import ModelSelectorComponent from '@/components/ModelSelectorComponent.vue';
+import EmbeddingModelSelector from '@/components/EmbeddingModelSelector.vue';
import dayjs, { parseToShanghai } from '@/utils/time';
const route = useRoute()
@@ -250,12 +256,6 @@ const state = reactive({
openNewDatabaseModel: false,
})
-const embedModelOptions = computed(() => {
- return Object.keys(configStore.config?.embed_model_names || {}).map(key => ({
- label: `${key} (${configStore.config?.embed_model_names[key]?.dimension})`,
- value: key,
- }))
-})
// 语言选项(值使用英文,以保证后端/LightRAG 兼容;标签为中英文方便理解)
const languageOptions = [
diff --git a/web/src/views/SettingView.vue b/web/src/views/SettingView.vue
index bee9f0b4..db4a80a6 100644
--- a/web/src/views/SettingView.vue
+++ b/web/src/views/SettingView.vue
@@ -39,35 +39,11 @@
检查状态
-->
-
-
-
-
- {{ name }}
-
-
- {{ getModelStatusIcon(name) }}
-
-
-
-
+ style="width: 320px"
+ />
{{ items?.reranker.des }}
@@ -184,8 +160,8 @@ import {
import HeaderComponent from '@/components/HeaderComponent.vue';
import ModelProvidersComponent from '@/components/ModelProvidersComponent.vue';
import UserManagementComponent from '@/components/UserManagementComponent.vue';
-import { embeddingApi } from '@/apis/knowledge_api'
import ModelSelectorComponent from '@/components/ModelSelectorComponent.vue';
+import EmbeddingModelSelector from '@/components/EmbeddingModelSelector.vue';
const configStore = useConfigStore()
const userStore = useUserStore()
@@ -194,12 +170,6 @@ const state = reactive({
loading: false,
section: 'base',
windowWidth: window?.innerWidth || 0,
- modelStatuses: {}, // 存储embedding模型状态
- checkingStatus: false // 是否正在检查状态
-})
-
-const embedModelChoices = computed(() => {
- return Object.keys(configStore?.config?.embed_model_names || {}) || []
})
const rerankerChoices = computed(() => {
@@ -252,65 +222,12 @@ onMounted(() => {
updateWindowWidth()
window.addEventListener('resize', updateWindowWidth)
state.section = userStore.isSuperAdmin ? 'base' : 'user'
-
- checkAllModelStatus()
})
onUnmounted(() => {
window.removeEventListener('resize', updateWindowWidth)
})
-
-
-// 检查所有embedding模型状态
-const checkAllModelStatus = async () => {
- try {
- state.checkingStatus = true
- const response = await embeddingApi.getAllModelsStatus()
- if (response.status.models) {
- state.modelStatuses = response.status.models
- }
- } catch (error) {
- console.error('检查所有模型状态失败:', error)
- message.error('获取模型状态失败')
- } finally {
- state.checkingStatus = false
- }
-}
-
-// 获取模型状态图标
-const getModelStatusIcon = (modelId) => {
- const status = state.modelStatuses[modelId]
- if (!status) return '○'
- if (status.status === 'available') return '✓'
- if (status.status === 'unavailable') return '✗'
- if (status.status === 'error') return '⚠'
- return '○'
-}
-
-// 获取模型状态颜色
-const getModelStatusColor = (modelId) => {
- const status = state.modelStatuses[modelId]
- if (!status) return 'var(--gray-500)'
- if (status.status === 'available') return 'var(--color-success-500)'
- if (status.status === 'unavailable') return 'var(--color-error-500)'
- if (status.status === 'error') return 'var(--color-warning-500)'
- return 'var(--gray-500)'
-}
-// 获取模型状态提示文本
-const getModelStatusTooltip = (modelId) => {
- const status = state.modelStatuses[modelId]
- if (!status) return '状态未知'
-
- let statusText = ''
- if (status.status === 'available') statusText = '可用'
- else if (status.status === 'unavailable') statusText = '不可用'
- else if (status.status === 'error') statusText = '错误'
-
- const message = status.message || '无详细信息'
- return `${statusText}: ${message}`
-}
-
const openLink = (url) => {
window.open(url, '_blank')
}