[docs]defpassage_reranker_node(func):@functools.wraps(func)@result_to_dataframe(["retrieved_contents","retrieved_ids","retrieve_scores"])defwrapper(project_dir:Union[str,Path],previous_result:pd.DataFrame,*args,**kwargs)->Tuple[List[List[str]],List[List[str]],List[List[float]]]:logger.info(f"Running passage reranker node - {func.__name__} module...")validate_qa_dataset(previous_result)# find queries columnsassert("query"inprevious_result.columns),"previous_result must have query column."queries=previous_result["query"].tolist()# find contents_list columnsassert("retrieved_contents"inprevious_result.columns),"previous_result must have retrieved_contents column."contents=previous_result["retrieved_contents"].tolist()# find scores columnsassert("retrieve_scores"inprevious_result.columns),"previous_result must have retrieve_scores column."scores=previous_result["retrieve_scores"].tolist()# find ids columnsassert("retrieved_ids"inprevious_result.columns),"previous_result must have retrieved_ids column."ids=previous_result["retrieved_ids"].tolist()# time rerankersiffunc.__name__=="time_reranker":corpus_df=pd.read_parquet(os.path.join(project_dir,"data","corpus.parquet"),engine="pyarrow")metadatas=fetch_contents(corpus_df,ids,column_name="metadata")times=[[time["last_modified_datetime"]fortimeintime_list]fortime_listinmetadatas]reranked_contents,reranked_ids,reranked_scores=func(contents_list=contents,scores_list=scores,ids_list=ids,time_list=times,*args,**kwargs,)else:reranked_contents,reranked_ids,reranked_scores=func(queries=queries,contents_list=contents,scores_list=scores,ids_list=ids,*args,**kwargs,)returnreranked_contents,reranked_ids,reranked_scoresreturnwrapper