Skip to content

Commit 897f0de

Browse files
authored
fix: The randomness of the local vector model cannot be used (#4613)
1 parent 2fefa2c commit 897f0de

File tree

1 file changed

+20
-4
lines changed
  • apps/models_provider/impl/local_model_provider/model/embedding

1 file changed

+20
-4
lines changed

apps/models_provider/impl/local_model_provider/model/embedding/model.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010

1111
from langchain_huggingface import HuggingFaceEmbeddings
1212

13+
from common.utils.logger import maxkb_logger
1314
from models_provider.base_model_provider import MaxKBBaseModel
1415

16+
max_retries = 3
17+
1518

1619
class LocalEmbedding(MaxKBBaseModel, HuggingFaceEmbeddings):
1720
@staticmethod
@@ -20,7 +23,20 @@ def is_cache_model():
2023

2124
@staticmethod
2225
def new_instance(model_type, model_name, model_credential: Dict[str, object], **model_kwargs):
23-
return LocalEmbedding(model_name=model_name, cache_folder=model_credential.get('cache_folder'),
24-
model_kwargs={'device': model_credential.get('device')},
25-
encode_kwargs={'normalize_embeddings': True}
26-
)
26+
for attempt in range(max_retries):
27+
try:
28+
embedding = LocalEmbedding(model_name=model_name, cache_folder=model_credential.get('cache_folder'),
29+
model_kwargs={'device': model_credential.get('device')},
30+
encode_kwargs={'normalize_embeddings': True}
31+
)
32+
# 测试一下是否真的能用
33+
embedding.embed_query("test")
34+
return embedding
35+
except Exception as e:
36+
if 'meta tensor' in str(e).lower() and attempt < max_retries - 1:
37+
maxkb_logger.warning(
38+
f"Test failed with meta tensor error, retrying... (attempt {attempt + 1}/{max_retries})")
39+
import time
40+
time.sleep(1)
41+
continue
42+
raise e

0 commit comments

Comments
 (0)