feat: AutoContext-Suche grundlegend verbessern + Embedding-Debug-Tool

Hybrid-Suche (Vektor + FTS5-Keyword), Recency-Boost, Query-Erweiterung
(letzte 2-3 User-Messages), Chunk-Overlapping, FullText-Speicherung,
konfigurierbares Embedding-Modell/MaxSeqLen, deduplizierter AutoContext-
Code (Streaming + CLI shared), Admin-Diagnose-Seite mit Re-Embed-Funktion.
Threshold von 0.45 auf 0.35 gesenkt (Hybrid-Suche ist präziser).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MelekiandClaude Opus 4.6 committed 2026-04-01 08:50:41 +02:00
1 parent be6d33691a
commit 3f2baa1639
14 files changed
+1103 -61

No files matched your search

+133
View File
@@ -856,6 +856,139 @@ a.admin-user-meta {
color: var(--primary);
}
/* ── Embedding Debug ── */
.emb-summary { margin-bottom: 0.5rem }
.emb-summary-grid {
display: flex;
flex-wrap: wrap;
gap: var(--badge-spacing);
}
.emb-stat {
display: flex;
flex-direction: column;
align-items: center;
padding: var(--box-padding);
background: var(--f1-bg);
border: 1px solid var(--f1-border);
border-radius: var(--border-radius);
min-width: 90px;
}
.emb-stat-num {
font-size: 1.3em;
font-weight: bold;
font-variant-numeric: tabular-nums;
}
.emb-stat-label {
opacity: var(--semi-transparent);
}
.emb-stat.good .emb-stat-num {
color: var(--secondary);
}
.emb-stat.warn .emb-stat-num {
color: var(--warning);
}
.emb-results {
display: flex;
flex-direction: column;
gap: var(--badge-spacing);
}
.emb-result-item {
display: flex;
flex-direction: column;
gap: var(--badge-spacing);
padding: var(--box-padding);
background: var(--f1-bg);
border: 1px solid var(--f1-border);
border-radius: var(--border-radius);
}
.emb-result-header {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--badge-spacing);
}
.emb-rank {
font-weight: bold;
opacity: var(--semi-transparent);
min-width: 2rem;
}
.emb-score {
font-weight: bold;
font-variant-numeric: tabular-nums;
padding: var(--badge-padding);
border-radius: var(--border-radius);
font-size: var(--font-size);
}
.emb-score.score-good {
background: rgba(76, 175, 80, 0.2);
color: #4caf50;
}
.emb-score.score-medium {
background: rgba(255, 152, 0, 0.2);
color: #ff9800;
}
.emb-score.score-low {
background: rgba(244, 67, 54, 0.15);
color: #f44336;
}
.emb-role {
opacity: var(--semi-transparent);
text-transform: uppercase;
}
.emb-date {
opacity: var(--semi-transparent);
}
.emb-tag {
font-size: var(--font-size);
padding: var(--badge-padding);
border-radius: var(--border-radius);
font-weight: bold;
text-transform: uppercase;
}
.emb-tag.pass {
background: rgba(76, 175, 80, 0.2);
color: #4caf50;
}
.emb-tag.threshold {
background: rgba(33, 150, 243, 0.2);
color: #2196f3;
}
.emb-tag.filter {
background: rgba(244, 67, 54, 0.15);
color: #f44336;
}
.emb-result-text {
word-break: break-word;
white-space: pre-wrap;
}
.emb-result-meta {
opacity: var(--semi-transparent);
font-variant-numeric: tabular-nums;
}
/* ── Utility Classes (Inline-Style Replacements) ── */
.clickable { cursor: pointer }