[docs]defadd_texts(self,texts:Iterable[str],metadatas:Optional[List[dict]]=None,ids:Optional[List[str]]=None,**kwargs:Any,)->List[str]:"""Run more texts through the embeddings and add to the vectorstore. Args: texts: Iterable of strings to add to the vectorstore. metadatas: Optional list of metadatas associated with the texts. ids: Optional list of ids for documents. Ids will be autogenerated if not provided. kwargs: vectorstore specific parameters Returns: List of ids from adding the texts into the vectorstore. """docs=self._prep_docs(texts,metadatas,ids)result=self.search_index.add_documents(docs)return[r.idforrinresult]
[docs]defsimilarity_search(self,query:str,k:int=4,filter:Optional[TigrisFilter]=None,**kwargs:Any,)->List[Document]:"""Return docs most similar to query."""docs_with_scores=self.similarity_search_with_score(query,k,filter)return[docfordoc,_indocs_with_scores]
[docs]defsimilarity_search_with_score(self,query:str,k:int=4,filter:Optional[TigrisFilter]=None,)->List[Tuple[Document,float]]:"""Run similarity search with Chroma with distance. Args: query (str): Query text to search for. k (int): Number of results to return. Defaults to 4. filter (Optional[TigrisFilter]): Filter by metadata. Defaults to None. Returns: List[Tuple[Document, float]]: List of documents most similar to the query text with distance in float. """vector=self._embed_fn.embed_query(query)result=self.search_index.similarity_search(vector=vector,k=k,filter_by=filter)docs:List[Tuple[Document,float]]=[]forrinresult:docs.append((Document(page_content=r.doc["text"],metadata=r.doc.get("metadata")),r.score,))returndocs
[docs]@classmethoddeffrom_texts(cls,texts:List[str],embedding:Embeddings,metadatas:Optional[List[dict]]=None,ids:Optional[List[str]]=None,client:Optional[TigrisClient]=None,index_name:Optional[str]=None,**kwargs:Any,)->Tigris:"""Return VectorStore initialized from texts and embeddings."""ifnotindex_name:raiseValueError("`index_name` is required")ifnotclient:client=TigrisClient()store=cls(client,embedding,index_name)store.add_texts(texts=texts,metadatas=metadatas,ids=ids)returnstore