Source code for langchain_community.embeddings.bookend
"""Wrapper around Bookend AI embedding models."""importjsonfromtypingimportAny,Listimportrequestsfromlangchain_core.embeddingsimportEmbeddingsfrompydanticimportBaseModel,ConfigDict,FieldAPI_URL="https://api.bookend.ai/"DEFAULT_TASK="embeddings"PATH="/models/predict"
[docs]classBookendEmbeddings(BaseModel,Embeddings):"""Bookend AI sentence_transformers embedding models. Example: .. code-block:: python from langchain_community.embeddings import BookendEmbeddings bookend = BookendEmbeddings( domain={domain} api_token={api_token} model_id={model_id} ) bookend.embed_documents([ "Please put on these earmuffs because I can't you hear.", "Baby wipes are made of chocolate stardust.", ]) bookend.embed_query( "She only paints with bold colors; she does not like pastels." ) """domain:str"""Request for a domain at https://bookend.ai/ to use this embeddings module."""api_token:str"""Request for an API token at https://bookend.ai/ to use this embeddings module."""model_id:str"""Embeddings model ID to use."""auth_header:dict=Field(default_factory=dict)model_config=ConfigDict(protected_namespaces=())def__init__(self,**kwargs:Any):super().__init__(**kwargs)self.auth_header={"Authorization":"Basic {}".format(self.api_token)}
[docs]defembed_documents(self,texts:List[str])->List[List[float]]:"""Embed documents using a Bookend deployed embeddings model. Args: texts: The list of texts to embed. Returns: List of embeddings, one for each text. """result=[]headers=self.auth_headerheaders["Content-Type"]="application/json; charset=utf-8"params={"model_id":self.model_id,"task":DEFAULT_TASK,}fortextintexts:data=json.dumps({"text":text,"question":None,"context":None,"instruction":None,})r=requests.request("POST",API_URL+self.domain+PATH,headers=headers,params=params,data=data,)result.append(r.json()[0]["data"])returnresult
[docs]defembed_query(self,text:str)->List[float]:"""Embed a query using a Bookend deployed embeddings model. Args: text: The text to embed. Returns: Embeddings for the text. """returnself.embed_documents([text])[0]