import time from typing import List from loguru import logger from app.services.milvus import Milvus from app.services.my_redis import MyRedis async def build_recommendations(company_id: str, user_id: str) -> List: myredis = MyRedis() start = time.perf_counter() r = myredis.get_client() logger.debug(time.perf_counter() - start) milvus = Milvus() start = time.perf_counter() user_pk = r.hget(f"meeting_user_id_to_embedding_id_map:{company_id}", user_id) logger.debug(time.perf_counter() - start) user_id_list = [] if user_pk: start = time.perf_counter() user_emb = await milvus.query_embedding_by_pk( "meeting_attendee_rec", "pk", int(user_pk) ) logger.debug(time.perf_counter() - start) start = time.perf_counter() pk_list = await milvus.search( [user_emb], "meeting_attendee_rec", [company_id], "embeddings", 10 ) logger.debug(time.perf_counter() - start) pk_list = [str(item) for item in pk_list] start = time.perf_counter() user_id_list = r.hmget( f"embedding_id_to_meeting_user_id_map:{company_id}", pk_list ) logger.debug(time.perf_counter() - start) return user_id_list