meeting_attendee_recommendation.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import time
  2. from typing import List
  3. from loguru import logger
  4. from app.services.milvus import Milvus
  5. from app.services.my_redis import MyRedis
  6. async def build_recommendations(company_id: str, user_id: str) -> List:
  7. myredis = MyRedis()
  8. start = time.perf_counter()
  9. r = myredis.get_client()
  10. logger.debug(time.perf_counter() - start)
  11. milvus = Milvus()
  12. start = time.perf_counter()
  13. user_pk = r.hget(f"meeting_user_id_to_embedding_id_map:{company_id}", user_id)
  14. logger.debug(time.perf_counter() - start)
  15. user_id_list = []
  16. if user_pk:
  17. start = time.perf_counter()
  18. user_emb = await milvus.query_embedding_by_pk(
  19. "meeting_attendee_rec", "pk", int(user_pk)
  20. )
  21. logger.debug(time.perf_counter() - start)
  22. start = time.perf_counter()
  23. pk_list = await milvus.search(
  24. [user_emb], "meeting_attendee_rec", [company_id], "embeddings", 10
  25. )
  26. logger.debug(time.perf_counter() - start)
  27. pk_list = [str(item) for item in pk_list]
  28. start = time.perf_counter()
  29. user_id_list = r.hmget(
  30. f"embedding_id_to_meeting_user_id_map:{company_id}", pk_list
  31. )
  32. logger.debug(time.perf_counter() - start)
  33. return user_id_list