(lme_df, conv_idx, frame, version, top_k=20)
| 78 | |
| 79 | |
| 80 | def process_user(lme_df, conv_idx, frame, version, top_k=20): |
| 81 | row = lme_df.iloc[conv_idx] |
| 82 | question = row["question"] |
| 83 | sessions = row["haystack_sessions"] |
| 84 | question_type = row["question_type"] |
| 85 | question_date = row["question_date"] |
| 86 | answer = row["answer"] |
| 87 | answer_session_ids = set(row["answer_session_ids"]) |
| 88 | haystack_session_ids = row["haystack_session_ids"] |
| 89 | user_id = f"lme_exper_user_{version}_{conv_idx}" |
| 90 | id_to_session = dict(zip(haystack_session_ids, sessions, strict=False)) |
| 91 | answer_sessions = [id_to_session[sid] for sid in answer_session_ids if sid in id_to_session] |
| 92 | answer_evidences = [] |
| 93 | |
| 94 | for session in answer_sessions: |
| 95 | for turn in session: |
| 96 | if turn.get("has_answer"): |
| 97 | data = turn.get("role") + " : " + turn.get("content") |
| 98 | answer_evidences.append(data) |
| 99 | |
| 100 | search_results = defaultdict(list) |
| 101 | print("\n" + "-" * 80) |
| 102 | print(f"🔎 [{conv_idx + 1}/{len(lme_df)}] Processing conversation {conv_idx}") |
| 103 | print(f"❓ Question: {question}") |
| 104 | print(f"📅 Date: {question_date}") |
| 105 | print(f"🏷️ Type: {question_type}") |
| 106 | print("-" * 80) |
| 107 | |
| 108 | existing_results, exists = load_existing_results(frame, version, conv_idx) |
| 109 | if exists: |
| 110 | print(f"♻️ Using existing results for conversation {conv_idx}") |
| 111 | return existing_results |
| 112 | |
| 113 | if "mem0" in frame: |
| 114 | from utils.client import Mem0Client |
| 115 | |
| 116 | client = Mem0Client(enable_graph="graph" in frame) |
| 117 | context, duration_ms = mem0_search(client, question, user_id, top_k) |
| 118 | elif frame == "memobase": |
| 119 | from utils.client import MemobaseClient |
| 120 | |
| 121 | client = MemobaseClient() |
| 122 | context, duration_ms = memobase_search(client, question, user_id, top_k) |
| 123 | elif frame == "memos-api": |
| 124 | from utils.client import MemosApiClient |
| 125 | |
| 126 | client = MemosApiClient() |
| 127 | context, duration_ms = memos_search( |
| 128 | client, question, user_id, top_k, reference_time=question_date |
| 129 | ) |
| 130 | elif frame == "memos-api-online": |
| 131 | from utils.client import MemosApiOnlineClient |
| 132 | |
| 133 | client = MemosApiOnlineClient() |
| 134 | context, duration_ms = memos_search( |
| 135 | client, question, user_id, top_k, reference_time=question_date |
| 136 | ) |
| 137 | elif frame == "memu": |
nothing calls this directly
no test coverage detected