from chromadb import PersistentClient
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "chromadb/__init__.py", line 3, in <module>
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "chromadb/api/__init__.py", line 34, in <module>
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "chromadb/api/models/Collection.py", line 4, in <module>
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "chromadb/api/models/CollectionCommon.py", line 100, in <module>
File "chromadb/api/models/CollectionCommon.py", line 112, in CollectionCommon
File "chromadb/utils/embedding_functions/__init__.py", line 57, in DefaultEmbeddingFunction
NameError: name 'ONNXMiniLM_L6_V2' is not defined
根据报错可以分析出来吗,问题出现在chromadb/utils/embedding_functions/__init__.py
中,打开对应的文件,发现代码中有这样一段,查看代码也没有import对应的包,需要手动修改文件
class DefaultEmbeddingFunction(EmbeddingFunction[Documents]):
def __init__(self) -> None:
if is_thin_client:
return
def __call__(self, input: Documents) -> Embeddings:
# Delegate to ONNXMiniLM_L6_V2
return ONNXMiniLM_L6_V2()(input)
@staticmethod
def build_from_config(config: Dict[str, Any]) -> "DefaultEmbeddingFunction":
DefaultEmbeddingFunction.validate_config(config)
return DefaultEmbeddingFunction()
@staticmethod
def name() -> str:
return "default"
def get_config(self) -> Dict[str, Any]:
return {}
def max_tokens(self) -> int:
return 256
@staticmethod
def validate_config(config: Dict[str, Any]) -> None:
return
解决:
# 尝试直接导入模块
from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2