Commit Graph

2 Commits

Author SHA1 Message Date
Dotty Dotter
a5a0bcc260 match_claims.py: kein_bezug als Verarbeitungs-Marker speichern
Aenderungen:
- HARD_BUDGET_USD via env-var ueberschreibbar (Default 1.50).
- kein_bezug-Klassifikationen werden ebenfalls in claim_matches gespeichert,
  damit der NOT-EXISTS-Filter in fetch_claims sie als verarbeitet erkennt und
  Re-Runs nicht erneut Kosten erzeugen.
- backend /api/.../claims filtert kein_bezug aus match_counts und best_match
  raus, sodass das Frontend nur sinnvolle Verbindungen anzeigt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 10:44:57 +02:00
Dotty Dotter
c5489eabaa #16/#17 match_answers.py und match_claims.py: Cross-Episode-Matching via Embeddings + Qwen
scripts/match_answers.py (#17):
- Laedt offene Fragen (genuine, follow_up; answered='no').
- Embedded jede Frage und sucht den besten Kandidat-Absatz aus einer anderen
  Episode (optional cross-podcast) per Cosinus-Aehnlichkeit ueber die paragraph-
  embeddings.
- Bei score >= 0.55: Qwen-Verifikation 'Beantwortet B die Frage in A?'
  (yes/partial/no), bei yes/partial wird answered + answered_by_* in der
  questions-Tabelle gesetzt.
- Hard-Budget 1,50 USD, --rerun setzt bestehende Matches neu.

scripts/match_claims.py (#16 Stufe 2):
- Analoge Mechanik fuer claims: Embedding, Cosinus-Suche, Qwen-Verifikation
  in der vier-stufigen Skala 'belegt' / 'widerspricht' / 'erweitert' / 'kein_bezug'.
- Schreibt Treffer (ohne 'kein_bezug') in neue Tabelle claim_matches.
- Default nur verifizierbare Claims (--include-non-verifiable kippt das),
  --cross-podcast erlaubt Cross-Podcast-Treffer.

Beide Skripte nutzen json_utils.parse_llm_json fuer robustes Parsing und sind
gegen NaN-Vektoren in den Embeddings abgesichert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 02:21:49 +02:00