|
@@ -2,37 +2,64 @@ import time
|
|
from typing import List
|
|
from typing import List
|
|
from loguru import logger
|
|
from loguru import logger
|
|
|
|
|
|
-from app.services.milvus import Milvus
|
|
|
|
from app.services.my_redis import MyRedis
|
|
from app.services.my_redis import MyRedis
|
|
|
|
+from app.services.milvus import Milvus
|
|
|
|
+from app.services.milvus_helpers import my_milvus
|
|
|
|
|
|
|
|
|
|
|
|
+@logger.catch()
|
|
async def build_recommendations(company_id: str, user_id: str) -> List:
|
|
async def build_recommendations(company_id: str, user_id: str) -> List:
|
|
|
|
+ MILVUS_CLI = my_milvus.get("cli")
|
|
|
|
+ myredis = MyRedis()
|
|
|
|
+ r = myredis.get_client()
|
|
|
|
+
|
|
|
|
+ user_pk = r.hget(f"meeting_user_id_to_embedding_id_map:{company_id}", user_id)
|
|
|
|
+ user_id_list = []
|
|
|
|
+ if user_pk:
|
|
|
|
+ user_emb = await MILVUS_CLI.query_vector_by_pk(
|
|
|
|
+ f"meeting_attendee_rec_{company_id}",
|
|
|
|
+ int(user_pk)
|
|
|
|
+ )
|
|
|
|
+ pk_list = await MILVUS_CLI.search_vectors(
|
|
|
|
+ f"meeting_attendee_rec_{company_id}",
|
|
|
|
+ [user_emb],
|
|
|
|
+ 10
|
|
|
|
+ )
|
|
|
|
+ pk_list = [str(item) for item in pk_list]
|
|
|
|
+ user_id_list = r.hmget(
|
|
|
|
+ f"embedding_id_to_meeting_user_id_map:{company_id}", pk_list
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ return user_id_list
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@logger.catch()
|
|
|
|
+async def build_recommendations_v2(company_id: str, user_id: str) -> List:
|
|
|
|
+ old_milvus = Milvus()
|
|
myredis = MyRedis()
|
|
myredis = MyRedis()
|
|
- start = time.perf_counter()
|
|
|
|
r = myredis.get_client()
|
|
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)
|
|
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 = []
|
|
user_id_list = []
|
|
if user_pk:
|
|
if user_pk:
|
|
start = time.perf_counter()
|
|
start = time.perf_counter()
|
|
- user_emb = await milvus.query_embedding_by_pk(
|
|
|
|
- "meeting_attendee_rec", "pk", int(user_pk)
|
|
|
|
|
|
+ user_emb = await old_milvus.query_embedding_by_pk(
|
|
|
|
+ f"meeting_attendee_rec_{company_id}",
|
|
|
|
+ "pk",
|
|
|
|
+ int(user_pk)
|
|
)
|
|
)
|
|
logger.debug(time.perf_counter() - start)
|
|
logger.debug(time.perf_counter() - start)
|
|
start = time.perf_counter()
|
|
start = time.perf_counter()
|
|
- pk_list = await milvus.search(
|
|
|
|
- [user_emb], "meeting_attendee_rec", [company_id], "embeddings", 10
|
|
|
|
|
|
+ pk_list = await old_milvus.search(
|
|
|
|
+ [user_emb],
|
|
|
|
+ f"meeting_attendee_rec_{company_id}",
|
|
|
|
+ "embeddings",
|
|
|
|
+ 10
|
|
)
|
|
)
|
|
logger.debug(time.perf_counter() - start)
|
|
logger.debug(time.perf_counter() - start)
|
|
pk_list = [str(item) for item in pk_list]
|
|
pk_list = [str(item) for item in pk_list]
|
|
- start = time.perf_counter()
|
|
|
|
user_id_list = r.hmget(
|
|
user_id_list = r.hmget(
|
|
f"embedding_id_to_meeting_user_id_map:{company_id}", pk_list
|
|
f"embedding_id_to_meeting_user_id_map:{company_id}", pk_list
|
|
)
|
|
)
|
|
- logger.debug(time.perf_counter() - start)
|
|
|
|
|
|
|
|
return user_id_list
|
|
return user_id_list
|