Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -191,38 +191,38 @@ def hybrid_search_no_gemini(query: str, match_count: int = 50):
|
|
| 191 |
pairs = [(query, c["judul"] + " " + c["deskripsi"]) for c in candidates]
|
| 192 |
|
| 193 |
try:
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 209 |
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
c["norm_db_sim"] = norm_db_sim # Opsional: simpan untuk debugging
|
| 218 |
-
|
| 219 |
-
# 3. Interpolasi yang SEIMBANG
|
| 220 |
-
c["final_score"] = (0.6 * rerank_prob) + (0.4 * norm_db_sim)
|
| 221 |
|
| 222 |
-
|
| 223 |
-
candidates = sorted(candidates, key=lambda x: x["final_score"], reverse=True)
|
| 224 |
-
|
| 225 |
-
return {"results": candidates[:10]}
|
| 226 |
|
| 227 |
# ==========================================
|
| 228 |
# CORE APPS
|
|
|
|
| 191 |
pairs = [(query, c["judul"] + " " + c["deskripsi"]) for c in candidates]
|
| 192 |
|
| 193 |
try:
|
| 194 |
+
scores = reranker.predict(pairs)
|
| 195 |
+
except Exception as e:
|
| 196 |
+
print("Reranker error:", e)
|
| 197 |
+
return {"results": sorted(candidates, key=lambda x: x.get("similarity", 0), reverse=True)[:10]}
|
| 198 |
+
|
| 199 |
+
# Ambil nilai min dan max dari skor RRF bawaan database
|
| 200 |
+
db_scores = [c.get("similarity", 0.0) for c in candidates]
|
| 201 |
+
db_min = min(db_scores) if db_scores else 0.0
|
| 202 |
+
db_max = max(db_scores) if db_scores else 1.0
|
| 203 |
+
|
| 204 |
+
for c, s in zip(candidates, scores):
|
| 205 |
+
# 1. Probabilitas Reranker (0 sampai 1)
|
| 206 |
+
c["rerank_score"] = float(s)
|
| 207 |
+
rerank_prob = apply_sigmoid(float(s))
|
| 208 |
+
c["rerank_prob"] = rerank_prob
|
| 209 |
+
|
| 210 |
+
# 2. Normalisasi Skor Database (RRF) ke 0 sampai 1
|
| 211 |
+
raw_db_sim = c.get("similarity", 0.0)
|
| 212 |
+
if db_max > db_min:
|
| 213 |
+
norm_db_sim = (raw_db_sim - db_min) / (db_max - db_min)
|
| 214 |
+
else:
|
| 215 |
+
norm_db_sim = 0.0
|
| 216 |
|
| 217 |
+
c["norm_db_sim"] = norm_db_sim # Opsional: simpan untuk debugging
|
| 218 |
+
|
| 219 |
+
# 3. Interpolasi yang SEIMBANG
|
| 220 |
+
c["final_score"] = (0.6 * rerank_prob) + (0.4 * norm_db_sim)
|
| 221 |
+
|
| 222 |
+
# Urutkan berdasarkan final_score
|
| 223 |
+
candidates = sorted(candidates, key=lambda x: x["final_score"], reverse=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
|
| 225 |
+
return {"results": candidates[:10]}
|
|
|
|
|
|
|
|
|
|
| 226 |
|
| 227 |
# ==========================================
|
| 228 |
# CORE APPS
|