From d0d7a24297e6ed1a0f4d54f7f6b9cd8c49896780 Mon Sep 17 00:00:00 2001 From: zstar <65890619+zstar1003@users.noreply.github.com> Date: Thu, 15 May 2025 16:01:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E7=B2=BE=E7=BB=86=E5=8C=96=E7=AE=A1=E7=90=86=20(#96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(知识库管理): 新增知识库创建人选择功能 (#96) * "feat(知识库管理): 新增知识库权限修改功能并扩展操作列宽度 (#97)" * feat(文档解析): 添加embedding向量维度校验,确保维度为1024并提示使用bge-m3模型 --- .../knowledgebases/document_parser.py | 6 + .../server/services/knowledgebases/service.py | 59 ++++--- .../web/src/common/apis/kbs/knowledgebase.ts | 1 + management/web/src/pages/file/index.vue | 3 +- .../web/src/pages/knowledgebase/index.vue | 160 ++++++++++++++++-- 5 files changed, 193 insertions(+), 36 deletions(-) diff --git a/management/server/services/knowledgebases/document_parser.py b/management/server/services/knowledgebases/document_parser.py index 6a78da8..7938862 100644 --- a/management/server/services/knowledgebases/document_parser.py +++ b/management/server/services/knowledgebases/document_parser.py @@ -576,6 +576,12 @@ def perform_parse(doc_id, doc_info, file_info, embedding_config): embedding_data = embedding_resp.json() q_1024_vec = embedding_data["data"][0]["embedding"] print(f"[Parser-INFO] 获取embedding成功,长度: {len(q_1024_vec)}") + # 检查向量维度是否为1024 + if len(q_1024_vec) != 1024: + error_msg = f"[Parser-ERROR] Embedding向量维度不是1024,实际维度: {len(q_1024_vec)}, 建议使用bge-m3模型" + print(error_msg) + update_progress(-1, error_msg) + raise ValueError(error_msg) except Exception as e: print(f"[Parser-ERROR] 获取embedding失败: {e}") raise Exception(f"[Parser-ERROR] 获取embedding失败: {e}") diff --git a/management/server/services/knowledgebases/service.py b/management/server/services/knowledgebases/service.py index 6df445a..91d32c4 100644 --- a/management/server/services/knowledgebases/service.py +++ b/management/server/services/knowledgebases/service.py @@ -154,6 +154,7 @@ class KnowledgebaseService: @classmethod def create_knowledgebase(cls, **data): """创建知识库""" + try: # 检查知识库名称是否已存在 exists = cls._check_name_exists(data['name']) @@ -163,36 +164,42 @@ class KnowledgebaseService: conn = cls._get_db_connection() cursor = conn.cursor(dictionary=True) - # 获取最早的用户ID作为tenant_id和created_by - tenant_id = None - created_by = None - try: - query_earliest_user = """ - SELECT id FROM user - WHERE create_time = (SELECT MIN(create_time) FROM user) - LIMIT 1 - """ - cursor.execute(query_earliest_user) - earliest_user = cursor.fetchone() - - if earliest_user: - tenant_id = earliest_user['id'] - created_by = earliest_user['id'] # 使用最早用户ID作为created_by - print(f"使用创建时间最早的用户ID作为tenant_id和created_by: {tenant_id}") - else: - # 如果找不到用户,使用默认值 + # 使用传入的 creator_id 作为 tenant_id 和 created_by + tenant_id = data.get('creator_id') + created_by = data.get('creator_id') + + if not tenant_id: + # 如果没有提供 creator_id,则使用默认值 + print("未提供 creator_id,尝试获取最早用户 ID") + try: + query_earliest_user = """ + SELECT id FROM user + WHERE create_time = (SELECT MIN(create_time) FROM user) + LIMIT 1 + """ + cursor.execute(query_earliest_user) + earliest_user = cursor.fetchone() + + if earliest_user: + tenant_id = earliest_user['id'] + created_by = earliest_user['id'] + print(f"使用创建时间最早的用户ID作为tenant_id和created_by: {tenant_id}") + else: + # 如果找不到用户,使用默认值 + tenant_id = "system" + created_by = "system" + print(f"未找到用户, 使用默认值作为tenant_id和created_by: {tenant_id}") + except Exception as e: + print(f"获取用户ID失败: {str(e)},使用默认值") tenant_id = "system" created_by = "system" - print(f"未找到用户, 使用默认值作为tenant_id和created_by: {tenant_id}") - except Exception as e: - print(f"获取用户ID失败: {str(e)},使用默认值") - tenant_id = "system" - created_by = "system" + else: + print(f"使用传入的 creator_id 作为 tenant_id 和 created_by: {tenant_id}") # --- 获取动态 embd_id --- dynamic_embd_id = None - default_embd_id = 'bge-m3___VLLM@VLLM' # Fallback default + default_embd_id = 'bge-m3' # Fallback default try: query_embedding_model = """ SELECT llm_name @@ -316,6 +323,10 @@ class KnowledgebaseService: if 'description' in data: update_fields.append("description = %s") params.append(data['description']) + + if 'permission' in data: + update_fields.append("permission = %s") + params.append(data['permission']) # 更新时间 current_time = datetime.now() diff --git a/management/web/src/common/apis/kbs/knowledgebase.ts b/management/web/src/common/apis/kbs/knowledgebase.ts index 8e9cf25..f7a2bff 100644 --- a/management/web/src/common/apis/kbs/knowledgebase.ts +++ b/management/web/src/common/apis/kbs/knowledgebase.ts @@ -29,6 +29,7 @@ export function createKnowledgeBaseApi(data: { description?: string language?: string permission?: string + creator_id: string }) { return request({ url: "/api/v1/knowledgebases", diff --git a/management/web/src/pages/file/index.vue b/management/web/src/pages/file/index.vue index 762e094..88dd450 100644 --- a/management/web/src/pages/file/index.vue +++ b/management/web/src/pages/file/index.vue @@ -1,6 +1,7 @@ - - + + - + + + + + + {{ editForm.name }} + + + + + + + + +
+ 个人权限:仅自己可见和使用
+ 团队权限:团队成员可见和使用 +
+
+
+ +
+
- - - + + + @@ -1554,4 +1692,4 @@ function shouldShowProgressCount(status: string) { vertical-align: middle; animation: rotating 2s linear infinite; } - \ No newline at end of file +