Upload app.py
Browse files
app.py
CHANGED
|
@@ -759,11 +759,19 @@ async def search_api(query: str = Form(...), job_id: str = Form(...)):
|
|
| 759 |
|
| 760 |
top_k_retrieval = min(50, faiss_index.ntotal) if faiss_index else 50
|
| 761 |
|
|
|
|
|
|
|
|
|
|
| 762 |
if faiss_index:
|
| 763 |
# FAISS search - retorna (distances, indices)
|
| 764 |
-
|
| 765 |
-
|
| 766 |
top_indices = top_indices[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 767 |
logging.info(f"FAISS search: top score = {scores[0]:.3f}")
|
| 768 |
else:
|
| 769 |
# Fallback para busca bruta se não tiver FAISS
|
|
@@ -771,6 +779,9 @@ async def search_api(query: str = Form(...), job_id: str = Form(...)):
|
|
| 771 |
similarities = cosine_similarity(query_embedding, corpus_embeddings)[0]
|
| 772 |
top_indices = np.argsort(similarities)[-top_k_retrieval:][::-1]
|
| 773 |
scores = similarities[top_indices]
|
|
|
|
|
|
|
|
|
|
| 774 |
|
| 775 |
candidate_docs = []
|
| 776 |
candidate_indices = []
|
|
@@ -807,7 +818,7 @@ async def search_api(query: str = Form(...), job_id: str = Form(...)):
|
|
| 807 |
final_results.append({
|
| 808 |
"index": idx,
|
| 809 |
"score": float(score),
|
| 810 |
-
"cosine_score":
|
| 811 |
"citation_id": rank + 1
|
| 812 |
})
|
| 813 |
|
|
|
|
| 759 |
|
| 760 |
top_k_retrieval = min(50, faiss_index.ntotal) if faiss_index else 50
|
| 761 |
|
| 762 |
+
# Criar mapeamento de scores por índice
|
| 763 |
+
retrieval_scores = {}
|
| 764 |
+
|
| 765 |
if faiss_index:
|
| 766 |
# FAISS search - retorna (distances, indices)
|
| 767 |
+
faiss_scores, top_indices = faiss_index.search(query_normalized.astype('float32'), top_k_retrieval)
|
| 768 |
+
faiss_scores = faiss_scores[0] # Flatten
|
| 769 |
top_indices = top_indices[0]
|
| 770 |
+
scores = faiss_scores
|
| 771 |
+
# Mapear índices para scores
|
| 772 |
+
for i, idx in enumerate(top_indices):
|
| 773 |
+
if idx >= 0:
|
| 774 |
+
retrieval_scores[int(idx)] = float(faiss_scores[i])
|
| 775 |
logging.info(f"FAISS search: top score = {scores[0]:.3f}")
|
| 776 |
else:
|
| 777 |
# Fallback para busca bruta se não tiver FAISS
|
|
|
|
| 779 |
similarities = cosine_similarity(query_embedding, corpus_embeddings)[0]
|
| 780 |
top_indices = np.argsort(similarities)[-top_k_retrieval:][::-1]
|
| 781 |
scores = similarities[top_indices]
|
| 782 |
+
# Mapear índices para scores
|
| 783 |
+
for i, idx in enumerate(top_indices):
|
| 784 |
+
retrieval_scores[int(idx)] = float(similarities[idx])
|
| 785 |
|
| 786 |
candidate_docs = []
|
| 787 |
candidate_indices = []
|
|
|
|
| 818 |
final_results.append({
|
| 819 |
"index": idx,
|
| 820 |
"score": float(score),
|
| 821 |
+
"cosine_score": retrieval_scores.get(idx, 0.0),
|
| 822 |
"citation_id": rank + 1
|
| 823 |
})
|
| 824 |
|