[docs]classVoyageAIEmbeddings(BaseModel,Embeddings):"""VoyageAIEmbeddings embedding model. Example: .. code-block:: python from langchain_voyageai import VoyageAIEmbeddings model = VoyageAIEmbeddings() """_client:voyageai.Client=Field(exclude=True)_aclient:voyageai.client_async.AsyncClient=Field(exclude=True)model:strbatch_size:intshow_progress_bar:bool=Falsetruncation:Optional[bool]=Nonevoyage_api_key:Optional[SecretStr]=NoneclassConfig:extra=Extra.forbid@root_validator(pre=True)defdefault_values(cls,values:dict)->dict:"""Set default batch size based on model"""model=values.get("model")batch_size=values.get("batch_size")ifbatch_sizeisNone:values["batch_size"]=72ifmodelin["voyage-2","voyage-02"]else7returnvalues@root_validator()defvalidate_environment(cls,values:dict)->dict:"""Validate that VoyageAI credentials exist in environment."""voyage_api_key=values.get("voyage_api_key")oros.getenv("VOYAGE_API_KEY",None)ifvoyage_api_key:api_key_secretstr=convert_to_secret_str(voyage_api_key)values["voyage_api_key"]=api_key_secretstrapi_key_str=api_key_secretstr.get_secret_value()else:api_key_str=Nonevalues["_client"]=voyageai.Client(api_key=api_key_str)values["_aclient"]=voyageai.client_async.AsyncClient(api_key=api_key_str)returnvaluesdef_get_batch_iterator(self,texts:List[str])->Iterable:ifself.show_progress_bar:try:fromtqdm.autoimporttqdm# type: ignoreexceptImportErrorase:raiseImportError("Must have tqdm installed if `show_progress_bar` is set to True. ""Please install with `pip install tqdm`.")frome_iter=tqdm(range(0,len(texts),self.batch_size))else:_iter=range(0,len(texts),self.batch_size)# type: ignorereturn_iter