{"record":{"id":"b413e2e563ec7eb6","repo":"OpenBMB/ChatDev","slug":"sentence-transformers-is-required-for-localembeddi","errorCode":null,"errorMessage":"sentence-transformers is required for LocalEmbedding","messagePattern":"sentence-transformers is required for LocalEmbedding","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"runtime/node/agent/memory/embedding.py","lineNumber":178,"sourceCode":"            # Default to the first chunk\n            return chunk_embeddings[0]\n\nclass LocalEmbedding(EmbeddingBase):\n    def __init__(self, embedding_config: EmbeddingConfig):\n        super().__init__(embedding_config)\n        self.model_path = embedding_config.params.get('model_path')\n        self.device = embedding_config.params.get('device', 'cpu')\n        self._fallback_dim = 768  # Default; updated after first successful call\n        \n        if not self.model_path:\n            raise ValueError(\"LocalEmbedding requires model_path parameter\")\n        \n        # Load the local embedding model (e.g., sentence-transformers)\n        try:\n            from sentence_transformers import SentenceTransformer\n            self.model = SentenceTransformer(self.model_path, device=self.device)\n        except ImportError:\n            raise ImportError(\"sentence-transformers is required for LocalEmbedding\")\n\n    def get_embedding(self, text):\n        # Preprocess text before encoding\n        processed_text = self._preprocess_text(text)\n        \n        if not processed_text:\n            return [0.0] * self._fallback_dim\n        \n        try:\n            embedding = self.model.encode(processed_text, convert_to_tensor=False)\n            result = embedding.tolist()\n            self._fallback_dim = len(result)\n            return result\n        except Exception as e:\n            logger.error(f\"Error getting local embedding: {e}\")\n            return [0.0] * self._fallback_dim\n","sourceCodeStart":160,"sourceCodeEnd":195,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/node/agent/memory/embedding.py#L160-L195","documentation":"LocalEmbedding depends on the sentence-transformers package to load local models. If `from sentence_transformers import SentenceTransformer` fails with ImportError, __init__ converts it into this explicit ImportError telling you to install sentence-transformers.","triggerScenarios":"provider='local' with model_path set, but sentence-transformers (and its torch dependency) not installed in the current environment.","commonSituations":"Fresh environments with only the base runtime installed; missing the extras (e.g. pip install 'pkg[local-embedding]'); wrong virtualenv/conda env activated; torch present but sentence-transformers missing.","solutions":["pip install sentence-transformers","Install the package's embedding extras if provided (e.g. pip install 'package[local-embedding]')","Confirm you're in the same interpreter/venv the app runs in (pip list | grep sentence)"],"exampleFix":"# shell\n# before: ImportError at agent construction\npip install sentence-transformers","handlingStrategy":"validation","validationCode":"if embedding_config.provider == 'local':\n    import importlib.util\n    if importlib.util.find_spec('sentence_transformers') is None:\n        raise ConfigError('install sentence-transformers for local embeddings')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add sentence-transformers to deployment requirements","Probe optional deps at startup"],"tags":["embedding","dependency","import-error"],"backgroundTag":"missing-python-dependency","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}