From dc10e00b636a17065c77e30d61e70f2ba70f6279 Mon Sep 17 00:00:00 2001 From: 1438343098 <1438343098@qq.com> Date: Thu, 28 May 2026 14:20:19 +0800 Subject: [PATCH] fix: volcanic engine embedding model not working with ep-xxx-xx endpoints --- .../model/embedding.py | 47 +++++++------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/apps/models_provider/impl/volcanic_engine_model_provider/model/embedding.py b/apps/models_provider/impl/volcanic_engine_model_provider/model/embedding.py index c4474871667..eae80bf2384 100644 --- a/apps/models_provider/impl/volcanic_engine_model_provider/model/embedding.py +++ b/apps/models_provider/impl/volcanic_engine_model_provider/model/embedding.py @@ -39,38 +39,25 @@ def embed_query(self, text: str): def embed_documents( self, texts: List[str] ) -> List[List[float]]: - if self.model_name.startswith("doubao-embedding-vision-"): - embeddings = [] - for text in texts: - multimodal_input = {"type": "text", "text": text} - resp = self.client.multimodal_embeddings.create( - model=self.model_name, - input=[multimodal_input], - encoding_format="float", - **(self.params or {}) - ) - embedding = self._extract_embedding(resp.data) - if embedding is not None: - embeddings.append(embedding) - return embeddings - else: - resp = self.client.embeddings.create( + embeddings = [] + for text in texts: + multimodal_input = {"type": "text", "text": text} + resp = self.client.multimodal_embeddings.create( model=self.model_name, - input=texts, + input=[multimodal_input], + encoding_format="float", **(self.params or {}) ) - return [e.embedding for e in resp.data] + embedding = self._extract_embedding(resp.data) + if embedding is not None: + embeddings.append(embedding) + return embeddings def _extract_embedding(self, data): - if isinstance(data, list) and len(data) > 0: - item = data[0] - else: - item = data - - if hasattr(item, 'embedding'): - return item.embedding - elif isinstance(item, dict): - return item.get('embedding') - elif isinstance(item, list): - return item - return None + if hasattr(data, 'embedding'): + return data.embedding + elif isinstance(data, dict): + return data.get('embedding') + elif isinstance(data, list) and len(data) > 0: + return self._extract_embedding(data[0]) + return None \ No newline at end of file