diff --git a/dashboard/src/views/alkaid/KnowledgeBase.vue b/dashboard/src/views/alkaid/KnowledgeBase.vue index c3f0b4244..e31644e47 100644 --- a/dashboard/src/views/alkaid/KnowledgeBase.vue +++ b/dashboard/src/views/alkaid/KnowledgeBase.vue @@ -5,8 +5,8 @@

还没有安装知识库插件

- + 立即安装
@@ -49,9 +49,9 @@
Tips: 在聊天页面通过 /kb 指令了解如何使用!
- + - + @@ -73,9 +73,11 @@ - + + + Tips: 一旦选择了一个知识库的嵌入模型,请不要再修改该提供商的模型或者向量维度信息,否则将严重影响该知识库的召回率甚至报错。 @@ -122,6 +124,18 @@ +
+ + mdi-database + 嵌入模型: {{ currentKB._embedding_provider_config.embedding_model }} + + + mdi-vector-point + 向量维度: {{ currentKB._embedding_provider_config.embedding_dimensions }} + + 💡 使用方式: 在聊天页中输入 “/kb use {{ currentKB.collection_name }}” +
+ 上传文件 @@ -144,6 +158,54 @@

拖放文件到这里或点击上传

+ + + + mdi-puzzle-outline + 分片设置 + + + + 分片长度决定每块文本的大小,重叠长度决定相邻文本块之间的重叠程度。
+ 较小的分片更精确但会增加数量,适当的重叠可提高检索准确性。 +
+
+
+ +
+ + + +
+
+
+
@@ -301,6 +363,8 @@ export default { }, activeTab: 'upload', selectedFile: null, + chunkSize: null, + overlap: null, uploading: false, searchQuery: '', searchResults: [], @@ -323,7 +387,7 @@ export default { embeddingModelProps(providerConfig) { return { title: providerConfig.embedding_model, - subtitle: `提供商 ID: ${providerConfig.id}`, + subtitle: `提供商 ID: ${providerConfig.id} | 嵌入模型维度: ${providerConfig.embedding_dimensions}`, } }, checkPlugin() { @@ -439,6 +503,9 @@ export default { this.searchQuery = ''; this.searchResults = []; this.searchPerformed = false; + // 重置分片长度和重叠长度参数 + this.chunkSize = null; + this.overlap = null; }, triggerFileInput() { @@ -492,6 +559,15 @@ export default { const formData = new FormData(); formData.append('file', this.selectedFile); formData.append('collection_name', this.currentKB.collection_name); + + // 添加可选的分片长度和重叠长度参数 + if (this.chunkSize && this.chunkSize > 0) { + formData.append('chunk_size', this.chunkSize); + } + + if (this.overlap && this.overlap >= 0) { + formData.append('chunk_overlap', this.overlap); + } axios.post('/api/plug/alkaid/kb/collection/add_file', formData, { headers: { @@ -500,7 +576,7 @@ export default { }) .then(response => { if (response.data.status === 'ok') { - this.showSnackbar('文件上传成功'); + this.showSnackbar('操作成功: ' + response.data.message); this.selectedFile = null; // 刷新知识库列表,获取更新的数量 @@ -792,4 +868,28 @@ export default { .kb-card:hover .kb-actions { opacity: 1; } + +.chunk-settings-card { + border: 1px solid rgba(92, 107, 192, 0.2) !important; + transition: all 0.3s ease; +} + +.chunk-settings-card:hover { + border-color: rgba(92, 107, 192, 0.4) !important; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.07) !important; +} + +.chunk-field :deep(.v-field__input) { + padding-top: 8px; + padding-bottom: 8px; +} + +.chunk-field :deep(.v-field__prepend-inner) { + padding-right: 8px; + opacity: 0.7; +} + +.chunk-field:focus-within :deep(.v-field__prepend-inner) { + opacity: 1; +}