Files
MtoRagSystem/templates/admin/ingest_profile/create.html.twig
2026-02-26 18:36:57 +01:00

183 lines
8.4 KiB
Twig
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends 'admin/base.html.twig' %}
{% block title %}Neues Indexierungsprofil{% endblock %}
{% block body %}
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3">Neues Indexierungsprofil</h1>
<a href="{{ path('admin_ingest_profile_list') }}"
class="btn btn-sm btn-outline-secondary">
Zurück
</a>
</div>
<div class="alert alert-warning border-warning bg-dark text-light mb-4">
<strong>Wichtiger Hinweis:</strong><br>
Änderungen am Indexierungsprofil beeinflussen die Struktur des Vektor-Indexes
(Chunking, Embedding, Scoring). Nach Aktivierung ist ein vollständiger
Global Reindex erforderlich.
</div>
<div class="card bg-black border-secondary text-light">
<div class="card-body">
<form method="post">
<input type="hidden"
name="_token"
value="{{ csrf_token('create_ingest_profile') }}">
<div class="row g-4">
<!-- ================================================= -->
<!-- CHUNKING -->
<!-- ================================================= -->
<div class="col-12">
<h5 class="text-info">Chunking-Konfiguration</h5>
<hr class="border-secondary">
<p class="text-secondary small">
Definiert, wie Dokumente in semantische Textabschnitte (Chunks) zerlegt werden.
Diese Struktur beeinflusst Retrieval-Qualität, Kontextstabilität und Indexgröße.
</p>
</div>
<div class="col-md-6">
<label class="form-label">Chunk Size</label>
<select name="chunk_size"
class="form-select bg-dark text-light border-secondary"
required>
{% for i in range(50, 1000, 25) %}
<option value="{{ i }}">
{{ i }}
</option>
{% endfor %}
</select>
<div class="form-text text-secondary">
Maximale Wortanzahl pro Chunk.
<br><br>
<strong>Kleinere Werte:</strong> Mehr Chunks, höhere Granularität, präziseres Retrieval.
<br>
<strong>Größere Werte:</strong> Weniger Chunks, mehr Kontext pro Treffer.
<br><br>
Empfehlung für Produkt- und Wissensdaten: 6001000.
</div>
</div>
<div class="col-md-6">
<label class="form-label">Chunk Overlap</label>
<select name="chunk_overlap"
class="form-select bg-dark text-light border-secondary"
required>
{% for i in range(25, 200, 25) %}
<option value="{{ i }}">
{{ i }}
</option>
{% endfor %}
</select>
<div class="form-text text-secondary">
Anzahl überlappender Wörter zwischen zwei Chunks.
<br><br>
Verhindert Kontextabbrüche an Chunk-Grenzen.
<br>
Typischer Bereich: 1020 % der Chunk Size.
</div>
</div>
<!-- ================================================= -->
<!-- EMBEDDING -->
<!-- ================================================= -->
<div class="col-12 mt-5">
<h5 class="text-info">Embedding-Konfiguration</h5>
<hr class="border-secondary">
<p class="text-secondary small">
Definiert das Modell zur Vektorisierung der Textabschnitte.
Embeddings bestimmen die semantische Ähnlichkeitsberechnung im FAISS-Index.
</p>
</div>
<div class="col-md-6">
<label class="form-label">Embedding Model</label>
<select name="embedding_model"
class="form-select bg-dark text-light border-secondary"
required>
<option value="all-MiniLM-L6-v2">
all-MiniLM-L6-v2 (384 Dimensionen)
</option>
<option value="intfloat/multilingual-e5-base">
intfloat/multilingual-e5-base (768 Dimensionen)
</option>
</select>
<div class="form-text text-secondary">
Das Embedding-Modell erzeugt numerische Vektoren aus Text.
Modellwechsel erfordert zwingend einen Global Reindex.
</div>
</div>
<div class="col-md-6">
<label class="form-label">Embedding Dimension</label>
<input type="number"
name="embedding_dimension"
value="768"
class="form-control bg-dark text-light border-secondary"
readonly>
<div class="form-text text-secondary">
Muss exakt zur Dimension des gewählten Embedding-Modells passen.
Falsche Werte führen zu inkonsistentem Vektorindex.
</div>
</div>
<!-- ================================================= -->
<!-- SCORING -->
<!-- ================================================= -->
<div class="col-12 mt-5">
<h5 class="text-info">Scoring & Retrieval</h5>
<hr class="border-secondary">
<p class="text-secondary small">
Definiert die Bewertungslogik für Retrieval-Ergebnisse.
Änderungen wirken sich direkt auf die Gewichtung von Keyword- und
Vektor-Treffern aus.
</p>
</div>
<div class="col-md-6">
<label class="form-label">Scoring Version</label>
<input type="number"
name="scoring_version"
value="1"
class="form-control bg-dark text-light border-secondary"
readonly>
<div class="form-text text-secondary">
Versionskennzeichnung der Scoring-Logik.
<br><br>
Eine Erhöhung erzwingt:
<ul class="mt-2">
<li>Neuaufbau des NDJSON-Index</li>
<li>Vollständigen FAISS-Rebuild</li>
</ul>
Gewährleistet reproduzierbare Retrieval-Ergebnisse.
</div>
</div>
</div>
<hr class="border-secondary my-4">
<div class="d-flex justify-content-end">
<button type="submit"
class="btn btn-outline-info">
Profil erstellen
</button>
</div>
</form>
</div>
</div>
<div class="mt-4 small text-secondary">
Governance-Hinweis:
Ein Indexierungsprofil ist versioniert und deterministisch.
Änderungen sollten nur geplant erfolgen, da sie die komplette
Wissensstruktur neu generieren.
</div>
{% endblock %}