Ollama-URL korrigiert (100.103.83.12:11435) und M1/M2 gegen Echt-System validiert

Der Host betreibt zwei Ollama-Instanzen: 11434 (fast leer, 0.16.2) und
11435 (Ziel-Instanz, 0.32.13, Modell-Zoo) — Port nicht mehr auf 11434
'korrigieren' (Dokumentation + Skill + Config-Default angepasst).

Validierung gegen das echte System: bge-m3 per API gepullt, Hybrid-Index
(3005 Chunks, 100 % eingebettet, 144 s), M1-Akzeptanz erreicht (Recall@8
0,952 > 0,9; Hit-Rate 0,968). Antwortmodus-Eval mit qwen3.8:27b (Thinking
verifiziert aus): Zitier-Präzision 100 % (4 Regenerierungen), Verweigerung
korrekt 94,3 %, Latenz mean 32 s. ATZ-Konfliktfall korrekt beide Werte
mit Warnung. generate.py: sources enthaelt jetzt nur zitierte Quellen;
Systemprompt ohne redundante Quellenzeile.

Bake-off-Feld (M3) bereits installiert: qwen3.6:27B, gemma4:26b,
mistral-small3.1:24b, gemma4:12B.
This commit is contained in:
2026-09-14 22:09:09 +02:00
parent 2cba72aeb0
commit b6a6f5b788
6 changed files with 100 additions and 79 deletions
+6 -5
View File
@@ -38,8 +38,7 @@ Verbindliche Regeln:
5. Widersprechen sich Kontextblöcke, nenne beide Werte mit ihren IDs und
kennzeichne den Widerspruch mit ⚠. Löse Widersprüche niemals stillschweigend auf.
6. Nenne Paragraphen und Gesetze nur, wenn ein Kontextblock sie nennt.
7. Antworte auf Deutsch, prägnant (Stichpunkte, wo sinnvoll), und füge am
Ende eine Zeile „Quellen:“ mit den verwendeten IDs (ID — Titel, Stand) an.
7. Antworte auf Deutsch und prägnant (Stichpunkte, wo sinnvoll).
Verletze Regel 2 oder Regel 4 niemals — im Zweifel verweigere die Antwort."""
@@ -123,14 +122,15 @@ def answer_question(
if own_retriever:
retriever.close()
def finish(answer, refused, verified, citations, regenerations=0, draft=None):
def finish(answer, refused, verified, citations, regenerations=0,
draft=None, sources=None):
return {
"question": question,
"answer": answer,
"refused": refused,
"verified": verified,
"citations": citations,
"sources": _source_rows(results),
"sources": sources if sources is not None else _source_rows(results),
"n_context": len(results),
"model": cfg.answer_model,
"regenerations": regenerations,
@@ -197,6 +197,7 @@ def answer_question(
citations=[],
regenerations=regenerations,
draft=retry,
sources=[],
)
citations = sorted(set(CITE_RE.findall(final)))
@@ -214,5 +215,5 @@ def answer_question(
]
return finish(
final, refused=refused, verified=not violations,
citations=citations, regenerations=regenerations,
citations=citations, regenerations=regenerations, sources=sources,
)