singhankur01 commited on
Commit
051ea48
·
verified ·
1 Parent(s): 5d2bd75

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -0
app.py CHANGED
@@ -203,6 +203,35 @@ async def run_hackrx(req: RunRequest):
203
  # # Join for context
204
  # joined_context = "\n\n".join(top_chunks)
205
  # retrieved_chunks_all.append(joined_context)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  async def async_retrieve_and_rerank(question: str, q_idx: int):
207
  docs = await ensemble_retriever.ainvoke(question)
208
  doc_texts = [doc.page_content for doc in docs]
 
203
  # # Join for context
204
  # joined_context = "\n\n".join(top_chunks)
205
  # retrieved_chunks_all.append(joined_context)
206
+ def mmr_select(query_embedding, doc_embeddings, k=6, lambda_mult=0.6):
207
+ selected = []
208
+ candidates = list(range(len(doc_embeddings)))
209
+ doc_embeddings = np.array(doc_embeddings)
210
+
211
+ # Convert query_embedding to 2D
212
+ query_embedding = np.array(query_embedding).reshape(1, -1)
213
+
214
+ # Compute similarity between query and all documents
215
+ query_doc_sims = cosine_similarity(query_embedding, doc_embeddings)[0]
216
+
217
+ for _ in range(k):
218
+ mmr_score = []
219
+ for idx in candidates:
220
+ if not selected:
221
+ diversity = 0
222
+ else:
223
+ selected_embeddings = doc_embeddings[selected]
224
+ diversity = max(cosine_similarity(
225
+ doc_embeddings[idx].reshape(1, -1),
226
+ selected_embeddings
227
+ )[0])
228
+ score = lambda_mult * query_doc_sims[idx] - (1 - lambda_mult) * diversity
229
+ mmr_score.append(score)
230
+ selected_idx = candidates[np.argmax(mmr_score)]
231
+ selected.append(selected_idx)
232
+ candidates.remove(selected_idx)
233
+
234
+ return selected
235
  async def async_retrieve_and_rerank(question: str, q_idx: int):
236
  docs = await ensemble_retriever.ainvoke(question)
237
  doc_texts = [doc.page_content for doc in docs]