From 8d027813f5523b4da38d6a29e8f72d2907d8fe9e Mon Sep 17 00:00:00 2001 From: Stephen Hu Date: Thu, 10 Jul 2025 10:30:18 +0800 Subject: [PATCH] Refactor: Improve How To Handle QWenEmbed (#8765) ### What problem does this PR solve? Based on https://github.com/infiniflow/ragflow/issues/8740 1. A better handle for 'NoneType' object is not subscriptable 2. Add some logs to get the internal message ### Type of change - [x] Refactoring --- rag/llm/embedding_model.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rag/llm/embedding_model.py b/rag/llm/embedding_model.py index 6530e9b67..52656e46e 100644 --- a/rag/llm/embedding_model.py +++ b/rag/llm/embedding_model.py @@ -209,12 +209,15 @@ class QWenEmbed(Base): for i in range(0, len(texts), batch_size): retry_max = 5 resp = dashscope.TextEmbedding.call(model=self.model_name, input=texts[i : i + batch_size], api_key=self.key, text_type="document") - while resp["output"] is None and retry_max > 0: + while (resp["output"] is None or resp["output"].get("embeddings") is None) and retry_max > 0: time.sleep(10) resp = dashscope.TextEmbedding.call(model=self.model_name, input=texts[i : i + batch_size], api_key=self.key, text_type="document") retry_max -= 1 - if retry_max == 0 and resp["output"] is None: - log_exception(ValueError("Retry_max reached, calling embedding model failed")) + if retry_max == 0 and (resp["output"] is None or resp["output"].get("embeddings") is None): + if resp.get("message"): + log_exception(ValueError(f"Retry_max reached, calling embedding model failed: {resp['message']}")) + else: + log_exception(ValueError("Retry_max reached, calling embedding model failed")) raise try: embds = [[] for _ in range(len(resp["output"]["embeddings"]))]