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:
parent
d0d688d4b0
commit
ce1001a043
|
|
@ -278,15 +278,10 @@ class KBServiceFactory:
|
||||||
return DefaultKBService(kb_name)
|
return DefaultKBService(kb_name)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_by_name(kb_name: str,
|
def get_service_by_name(kb_name: str) -> KBService:
|
||||||
default_vs_type: SupportedVSType = SupportedVSType.FAISS,
|
|
||||||
default_embed_model: str = EMBEDDING_MODEL,
|
|
||||||
) -> KBService:
|
|
||||||
_, vs_type, embed_model = load_kb_from_db(kb_name)
|
_, vs_type, embed_model = load_kb_from_db(kb_name)
|
||||||
if vs_type is None: # faiss knowledge base not in db
|
if _ is None: # kb not in db, just return None
|
||||||
vs_type = default_vs_type
|
return None
|
||||||
if embed_model is None:
|
|
||||||
embed_model = default_embed_model
|
|
||||||
return KBServiceFactory.get_service(kb_name, vs_type, embed_model)
|
return KBServiceFactory.get_service(kb_name, vs_type, embed_model)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
@ -331,6 +326,9 @@ def get_kb_details() -> List[Dict]:
|
||||||
|
|
||||||
def get_kb_file_details(kb_name: str) -> List[Dict]:
|
def get_kb_file_details(kb_name: str) -> List[Dict]:
|
||||||
kb = KBServiceFactory.get_service_by_name(kb_name)
|
kb = KBServiceFactory.get_service_by_name(kb_name)
|
||||||
|
if kb is None:
|
||||||
|
return []
|
||||||
|
|
||||||
files_in_folder = list_files_from_folder(kb_name)
|
files_in_folder = list_files_from_folder(kb_name)
|
||||||
files_in_db = kb.list_files()
|
files_in_db = kb.list_files()
|
||||||
result = {}
|
result = {}
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ def prune_db_docs(kb_names: List[str]):
|
||||||
"""
|
"""
|
||||||
for kb_name in kb_names:
|
for kb_name in kb_names:
|
||||||
kb = KBServiceFactory.get_service_by_name(kb_name)
|
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_db = kb.list_files()
|
||||||
files_in_folder = list_files_from_folder(kb_name)
|
files_in_folder = list_files_from_folder(kb_name)
|
||||||
files = list(set(files_in_db) - set(files_in_folder))
|
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:
|
for kb_name in kb_names:
|
||||||
kb = KBServiceFactory.get_service_by_name(kb_name)
|
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_db = kb.list_files()
|
||||||
files_in_folder = list_files_from_folder(kb_name)
|
files_in_folder = list_files_from_folder(kb_name)
|
||||||
files = list(set(files_in_folder) - set(files_in_db))
|
files = list(set(files_in_folder) - set(files_in_db))
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ def test_recreate_vs():
|
||||||
folder2db([kb_name], "recreate_vs")
|
folder2db([kb_name], "recreate_vs")
|
||||||
|
|
||||||
kb = KBServiceFactory.get_service_by_name(kb_name)
|
kb = KBServiceFactory.get_service_by_name(kb_name)
|
||||||
assert kb.exists()
|
assert kb and kb.exists()
|
||||||
|
|
||||||
files = kb.list_files()
|
files = kb.list_files()
|
||||||
print(files)
|
print(files)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue