diff --git a/semantic_router/encoders/openai.py b/semantic_router/encoders/openai.py
index 6f80f2576c63aadedacc2d5f47671319b65bdda6..db011956dbe955dd984f91f930e8a48a262a9d88 100644
--- a/semantic_router/encoders/openai.py
+++ b/semantic_router/encoders/openai.py
@@ -123,11 +123,13 @@ class OpenAIEncoder(BaseEncoder):
                     break
             except OpenAIError as e:
                 logger.error("Exception occurred", exc_info=True)
-                if self.max_retries != 0:
+                if self.max_retries != 0 and j < self.max_retries:
                     sleep(2**j)
                     logger.warning(
                         f"Retrying in {2**j} seconds due to OpenAIError: {e}"
                     )
+                else:
+                    raise
 
             except Exception as e:
                 logger.error(f"OpenAI API call failed. Error: {e}")
@@ -178,11 +180,14 @@ class OpenAIEncoder(BaseEncoder):
                     break
             except OpenAIError as e:
                 logger.error("Exception occurred", exc_info=True)
-                if self.max_retries != 0:
+                if self.max_retries != 0 and j < self.max_retries:
                     await asleep(2**j)
                     logger.warning(
                         f"Retrying in {2**j} seconds due to OpenAIError: {e}"
                     )
+                else:
+                    raise
+                    
             except Exception as e:
                 logger.error(f"OpenAI API call failed. Error: {e}")
                 raise ValueError(f"OpenAI API call failed. Error: {e}") from e
diff --git a/semantic_router/encoders/zure.py b/semantic_router/encoders/zure.py
index ffb0d4b361360960d7e5f156d960fc21c03167ee..4caded0f17028ad9f64d92c574a08ac3e786eb65 100644
--- a/semantic_router/encoders/zure.py
+++ b/semantic_router/encoders/zure.py
@@ -114,11 +114,13 @@ class AzureOpenAIEncoder(BaseEncoder):
                     break
             except OpenAIError as e:
                 logger.error("Exception occurred", exc_info=True)
-                if self.max_retries != 0:
+                if self.max_retries != 0 and j < self.max_retries:
                     sleep(2**j)
                     logger.warning(
                         f"Retrying in {2**j} seconds due to OpenAIError: {e}"
                     )
+                else:
+                    raise
             except Exception as e:
                 logger.error(f"Azure OpenAI API call failed. Error: {e}")
                 raise ValueError(f"Azure OpenAI API call failed. Error: {e}") from e
@@ -151,11 +153,13 @@ class AzureOpenAIEncoder(BaseEncoder):
 
             except OpenAIError as e:
                 logger.error("Exception occurred", exc_info=True)
-                if self.max_retries != 0:
+                if self.max_retries != 0 and j < self.max_retries:
                     await asleep(2**j)
                     logger.warning(
                         f"Retrying in {2**j} seconds due to OpenAIError: {e}"
                     )
+                else:
+                    raise
             except Exception as e:
                 logger.error(f"Azure OpenAI API call failed. Error: {e}")
                 raise ValueError(f"Azure OpenAI API call failed. Error: {e}") from e