Icking Phase 2 — Schichtweise Bake-Off

Zweck

Recall-Lift von Cohere v4 hybrid messen wenn man drei Hebel sequentiell aktiviert: Multi-Field → Cohere-Rerank → Query-Rewrite mit Haiku 4.5.

Ehrliche Baseline gegen Eval-Set N=51 (Florian) — bewusst auch any-Match und Warengruppe-Match gemessen, nicht nur das alte strict-Single-Truth-Mapping.

Setup

  • Repo: ~/source/a-icking/inference-service/, Branch feat/search-quality-phase2
  • Image: inference-service-prod:phase2 (ECR, av-production)
  • Task-Def: inference-service-prod:2 (isoliert vom Live-Service auf Rev 1)
  • RDS: inference-service-prod.cfwqykik8qyi.eu-central-1.rds.amazonaws.com
  • Migrations: 001 + 002 (gestern) + 003 (heute, 10 Embedding-Spalten + 6 HNSW)
  • Live-Service: unverändert, läuft weiter auf Rev 1 unter https://inference.agenticventures.de

Recall-Tabelle (in-progress)

SchichtStackR@1 strictR@1 anyR@10 strictR@10 anyR@10 wgrMRR anyp50p95
0hybrid baseline3.92 %19.61 %31.37 %43.14 %45.10 %0.284656 ms5825 ms
1+ multi-field5.88 %15.69 %33.33 %52.94 %54.90 %0.294783 ms5479 ms
2+ cohere-rerank13.73 %17.65 %39.22 %47.06 %52.94 %0.27822.5 s*22.7 s*
3+ query-rewrite7.84 %11.76 %33.33 %50.98 %58.82 %0.2204.4 s11.2 s

* p50 in Schicht 2 = künstlicher 22s-Sleep (Cohere-Rerank-Quota 3/min). Echte Latenz ~1.3s mit Quota-Increase.

Phase-2-Ziel (R@1_any ≥ 50 % UND R@10_any ≥ 80 %) nicht erreicht.

Sieger-Pipeline: Schicht 1 (Multi-Field, kein Rerank, kein Rewrite). R@10_any 52.94 %, p50 783 ms.

Beobachtungen

Schicht 0 — Baseline:

  • Strict R@10 31 % reproduziert die gestrigen 33 %. Eval-Logik konsistent über die Code-Refaktorierung hinweg.
  • Subtyp-Bias-Hypothese teilweise bestätigt: +12pp R@10 von strict auf any — aber kleiner als nach Stichprobe gehofft (5/5 Subtyp-Bias-OK hätte +25pp bedeutet).
  • Latenz p95 5825 ms ist hoch. Cohere v4 EU-CRIS routet ggf. nach eu-south, plus DB-Cold-Start beim ersten HNSW-Hit.

Schicht 1 — Multi-Field (kurztext fusion):

  • +10pp R@10_any vs Baseline — klarer Lift, der erwartete Hauptgewinn.
  • R@1_any fällt um 4pp — kurztext-Fusion verschiebt Top-1-Ranking, manchmal weg von der erwarteten ID hin zu einer thematisch näheren.
  • Latenz fast unverändert (783 vs 656 ms).
  • Suchwort-Feld wurde geskippt (Reembed bei 86 % im Cohere-v4-Quota-Throttle steckengeblieben). suchwort steckt eh schon in tsv_combined (FTS) mit Weight A — Embedding-Beitrag wäre Bonus.

Schicht 2 — Cohere-Rerank (überraschend negativ):

  • R@1_strict steigt deutlich (+8pp gegen Schicht 1) — Rerank findet die als highest_score_id markierte ID öfter im Top-1.
  • ABER R@10_any sinkt um 6pp gegen Schicht 1. Rerank verliert die plausiblen Alternativen die Multi-Field hochgespült hat. Reranker kennt nur Text-Relevanz (kurztext+rtftext) und ignoriert Multi-Field-Score + Maß-Boost.
  • Cohere-Rerank-Quota in eu-central-1 ist Default 3 req/min — musste manuell auf 22s/Call gethrottelt werden. Für Production wäre Quota-Increase nötig.

Schicht 3 — Query-Rewrite (Multi-Field, KEIN Rerank):

  • R@10_any sinkt leicht (−2pp gegen Schicht 1), R@1_any fällt um 4pp.
  • ABER R@10_wgr steigt um 4pp (gegen Schicht 1) / 14pp (gegen Baseline) — Rewrite verschiebt das Embedding thematisch und findet öfter eine andere ID in derselben Warengruppe/Tätigkeit. Für ID-Match neutral bis negativ, für Kategorie-Match positiv.
  • Latenz steigt auf 4.4s p50 (Haiku-Rewrite-Call 500-800ms + Embed + Hybrid).

Phase-2-Ziel (R@10_any ≥ 80 %) verfehlt. Bester Wert 52.94 % aus Schicht 1.

Empfehlung

Production-Pipeline: Cohere v4 + Multi-Field (langtext + kurztext), kein Rerank, kein Rewrite. Erreicht R@10_any 52.94 % bei p50 783 ms.

Nächster Schritt: Florian die Pipeline live zeigen, mit ihm gemeinsam durch 10-15 Queries klicken und beurteilen ob die Top-10 inhaltlich gut sind. Wenn ja → in Production schalten, Phase 3 verschieben. Wenn nein → erst Eval-Set-Gespräch (Single-Truth-Mapping realistisch? expected[] erweitern?), dann technische Maßnahmen (Reranker-Input-Anreicherung, BGE-M3 fine-tuned, wgr/tgk-Filter).

Reembed-Status

ProviderFeldRecordsWann
cohere_v4langtext32.670 / 32.718 (99,9 %)2026-05-15
cohere_v4kurztext32.697 / 32.718 (99,9 %)2026-05-17 17:02
cohere_v4suchwort86 % (abgebrochen wegen Throttle-Stuck)2026-05-17 19:37

Geparkt:

  • titan v2 langtext bei 20 % (gestern abgebrochen)
  • cohere v3 kurztext + suchwort leer (Spalten existieren seit Migration 002, Reembed-Run nie aufgesetzt — Cohere v4 ist Front-Runner, v3 als Backup nicht prioritär)

Cost-Stand

PostenEUR
Reembed v4 kurztext (32k Records)~1.00
Reembed v4 suchwort (86 %)~0.70
Bake-Off Schicht 00.01
Bake-Off Schicht 10.01
Bake-Off Schicht 2 (Cohere-Rerank)~0.05 USD
Bake-Off Schicht 3 (Haiku-Rewrite)~0.10 USD
ECS Fargate Compute~0.05
Total~3 EUR

Cross-References

  • Plan: ~/source/a-icking/docs/plans/2026-05-15-004-feat-search-quality-phase2-plan.md
  • Decision: ~/source/a-icking/docs/decisions/2026-05-17-search-pipeline-phase-2.md
  • Vorgänger-Run: report
  • Projekt: _index
  • Pattern (Multi-Embedding-Bake-Off): multi-embedding-bake-off