11from typing import Callable , Dict , List , Optional
2+ from tenacity import (
3+ retry ,
4+ stop_after_attempt ,
5+ wait_random_exponential ,
6+ ) # for exponential backoff
27
38from redisvl .vectorize .base import BaseVectorizer
49
@@ -19,6 +24,7 @@ def __init__(self, model: str, api_config: Optional[Dict] = None):
1924 openai .api_key = api_config .get ("api_key" , None )
2025 self ._model_client = openai .Embedding
2126
27+ @retry (wait = wait_random_exponential (min = 1 , max = 60 ), stop = stop_after_attempt (6 ))
2228 def embed_many (
2329 self ,
2430 texts : List [str ],
@@ -48,6 +54,7 @@ def embed_many(
4854 ]
4955 return embeddings
5056
57+ @retry (wait = wait_random_exponential (min = 1 , max = 60 ), stop = stop_after_attempt (6 ))
5158 def embed (
5259 self ,
5360 text : str ,
@@ -71,6 +78,7 @@ def embed(
7178 result = self ._model_client .create (input = [text ], engine = self ._model )
7279 return self ._process_embedding (result ["data" ][0 ]["embedding" ], as_buffer )
7380
81+ @retry (wait = wait_random_exponential (min = 1 , max = 60 ), stop = stop_after_attempt (6 ))
7482 async def aembed_many (
7583 self ,
7684 texts : List [str ],
@@ -100,6 +108,7 @@ async def aembed_many(
100108 ]
101109 return embeddings
102110
111+ @retry (wait = wait_random_exponential (min = 1 , max = 60 ), stop = stop_after_attempt (6 ))
103112 async def aembed (
104113 self ,
105114 text : str ,
0 commit comments