bugfix:dev分支创建知识库必然失败的bug修复 (#1980)

* bugfix:dev分支创建知识库必然失败的bug修复

* 统一 KBServiceFactory.get_service_by_name 的逻辑,数据库中不存在知识库时返回 None

---------

Co-authored-by: liunux4odoo <liunux@qq.com>
This commit is contained in:
WilliamChen-luckbob 2023-11-09 17:45:21 +08:00 committed by GitHub
parent d0d688d4b0
commit ce1001a043
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 11 deletions

View File

@ -278,15 +278,10 @@ class KBServiceFactory:
return DefaultKBService(kb_name)
@staticmethod
def get_service_by_name(kb_name: str,
default_vs_type: SupportedVSType = SupportedVSType.FAISS,
default_embed_model: str = EMBEDDING_MODEL,
) -> KBService:
def get_service_by_name(kb_name: str) -> KBService:
_, vs_type, embed_model = load_kb_from_db(kb_name)
if vs_type is None: # faiss knowledge base not in db
vs_type = default_vs_type
if embed_model is None:
embed_model = default_embed_model
if _ is None: # kb not in db, just return None
return None
return KBServiceFactory.get_service(kb_name, vs_type, embed_model)
@staticmethod
@ -331,6 +326,9 @@ def get_kb_details() -> List[Dict]:
def get_kb_file_details(kb_name: str) -> List[Dict]:
kb = KBServiceFactory.get_service_by_name(kb_name)
if kb is None:
return []
files_in_folder = list_files_from_folder(kb_name)
files_in_db = kb.list_files()
result = {}

View File

@ -157,7 +157,7 @@ def prune_db_docs(kb_names: List[str]):
"""
for kb_name in kb_names:
kb = KBServiceFactory.get_service_by_name(kb_name)
if kb and kb.exists():
if kb is not None:
files_in_db = kb.list_files()
files_in_folder = list_files_from_folder(kb_name)
files = list(set(files_in_db) - set(files_in_folder))
@ -175,7 +175,7 @@ def prune_folder_files(kb_names: List[str]):
"""
for kb_name in kb_names:
kb = KBServiceFactory.get_service_by_name(kb_name)
if kb and kb.exists():
if kb is not None:
files_in_db = kb.list_files()
files_in_folder = list_files_from_folder(kb_name)
files = list(set(files_in_folder) - set(files_in_db))

View File

@ -33,7 +33,7 @@ def test_recreate_vs():
folder2db([kb_name], "recreate_vs")
kb = KBServiceFactory.get_service_by_name(kb_name)
assert kb.exists()
assert kb and kb.exists()
files = kb.list_files()
print(files)