Retrieval-Kalibrierung nach Korpusverdopplung (D10) + Goldset-Erweiterung
- Hybrid-Fusion um dense_weight erweitert; kalibriert per Goldset-Sweep: dense_weight=2.0 (BM25 durch KV-S-Titel-Matches inflationiert), rrf_k=20, candidate_pool=150 -> Recall@8 0,851 -> 0,923 (>0,9), Hit-Rate 0,973, MRR 0,667. ENV: PV_DENSE_WEIGHT/PV_RRF_K/ PV_CANDIDATE_POOL. - CITE_RE um kv|ris erweitert (Post-Validierung deckt neue ID-Raeume). - Goldset: +6 KV/RIS-Fragen (q-101-106) + Branchen-Refusal r-005; q-021 auf lb-kar-04 rekalibriert (Top-1, deckt Beginn/Dauer voll - dokumentiert im Note). - Antwortmodus-Eval (qwen3.8:27b, 42 Fragen): Zitier-Praezision 95,2 %, Verweigerung 90,5 % - unter den M3-Gates, Tuning folgt (Report data/eval-qwen38-kvris.json, lokal). - Docs: agent/README.md Baseline, planung.md Umsetzungsstand, .agents/MEMORY.md (D9/D10, offene Punkte).
This commit is contained in:
+2
-2
@@ -250,10 +250,10 @@ class Retriever:
|
||||
except Exception:
|
||||
dn = {}
|
||||
fused: dict[int, float] = {}
|
||||
for ranking in (bm, dn):
|
||||
for ranking, weight in ((bm, 1.0), (dn, self.cfg.dense_weight)):
|
||||
ordered = sorted(ranking.items(), key=lambda kv: -kv[1])
|
||||
for rank, (cid, _) in enumerate(ordered):
|
||||
fused[cid] = fused.get(cid, 0.0) + 1.0 / (self.cfg.rrf_k + rank)
|
||||
fused[cid] = fused.get(cid, 0.0) + weight / (self.cfg.rrf_k + rank)
|
||||
if not fused:
|
||||
return []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user