172 lines
6.2 KiB
Twig
172 lines
6.2 KiB
Twig
{% extends 'admin/base.html.twig' %}
|
||
|
||
{% block title %}Retrieval-Test{% endblock %}
|
||
|
||
{% block body %}
|
||
|
||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||
<h1 class="h3">
|
||
Retrieval-Test – {{ config.modelName }} (v{{ config.version }})
|
||
</h1>
|
||
|
||
<a href="{{ path('admin_model_config_list') }}"
|
||
class="btn btn-sm btn-outline-secondary">
|
||
Zurück
|
||
</a>
|
||
</div>
|
||
|
||
{# ====================================================== #}
|
||
{# Konfigurationsübersicht #}
|
||
{# ====================================================== #}
|
||
|
||
<div class="card bg-black border-secondary text-light mb-4">
|
||
<div class="card-body small">
|
||
<div class="row">
|
||
<div class="col-md-6">
|
||
<strong>Max Chunks:</strong>
|
||
{{ config.retrievalMaxChunks }}
|
||
</div>
|
||
<div class="col-md-6">
|
||
<strong>Vector Top K:</strong>
|
||
{{ config.retrievalVectorTopK }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{# ====================================================== #}
|
||
{# Testformular #}
|
||
{# ====================================================== #}
|
||
|
||
<div class="card bg-black border-secondary text-light mb-4">
|
||
<div class="card-body">
|
||
|
||
<form method="post">
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Test-Prompt</label>
|
||
<textarea name="prompt"
|
||
rows="3"
|
||
class="form-control bg-dark text-light border-secondary"
|
||
required>{{ prompt }}</textarea>
|
||
</div>
|
||
|
||
<button type="submit"
|
||
class="btn btn-outline-warning">
|
||
Retrieval testen
|
||
</button>
|
||
|
||
</form>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
{# ====================================================== #}
|
||
{# Ergebnisse #}
|
||
{# ====================================================== #}
|
||
|
||
{% if results is not empty %}
|
||
<div class="card bg-black border-secondary text-light">
|
||
<div class="card-body">
|
||
|
||
<h5 class="text-warning mb-3">
|
||
Gefundene Chunks ({{ results|length }})
|
||
</h5>
|
||
|
||
<div style="max-height: 500px; overflow-y: auto;">
|
||
|
||
{% for chunk in results %}
|
||
<div class="border border-secondary p-3 mb-3 small">
|
||
|
||
{# ================= META-ZEILE ================= #}
|
||
<div class="mb-2 text-warning"
|
||
style="font-size: 11px; line-height: 1.5; word-break: break-all;">
|
||
|
||
<span class="text-info">
|
||
<strong>rank:</strong> {{ chunk.rank }}
|
||
</span> |
|
||
|
||
<span class="text-info">
|
||
<strong>chunk_id:</strong> {{ chunk.chunk_id }}
|
||
</span> |
|
||
|
||
<span class="text-info">
|
||
<strong>document_id:</strong>
|
||
{% if chunk.document_id %}
|
||
<a class="text-info"
|
||
href="{{ path('admin_document_show', { id: chunk.document_id }) }}">
|
||
{{ chunk.document_id }}
|
||
</a>
|
||
{% else %}
|
||
—
|
||
{% endif %}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>route:</strong>
|
||
<span class="
|
||
{% if chunk.route == 'catalog_list' %}
|
||
text-primary
|
||
{% elseif chunk.route starts with 'catalog' %}
|
||
text-info
|
||
{% elseif chunk.route starts with 'sales' %}
|
||
text-success
|
||
{% else %}
|
||
text-secondary
|
||
{% endif %}
|
||
">
|
||
{{ chunk.route ?? '—' }}
|
||
</span>
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>entity:</strong>
|
||
{{ chunk.entity_label ?? '—' }}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>intent:</strong>
|
||
{{ chunk.intent ?? '—' }}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>rrf:</strong>
|
||
{{ chunk.rrf_score is not null
|
||
? chunk.rrf_score|number_format(6, '.', '')
|
||
: '—' }}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>raw:</strong>
|
||
{{ chunk.raw_score is not null
|
||
? chunk.raw_score|number_format(6, '.', '')
|
||
: '—' }}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>threshold:</strong>
|
||
{{ chunk.threshold ?? '—' }}
|
||
</span> |
|
||
|
||
<span>
|
||
<strong>list:</strong>
|
||
{{ chunk.is_list_query ? 'true' : 'false' }}
|
||
</span>
|
||
|
||
</div>
|
||
|
||
{# ================= CHUNK TEXT ================= #}
|
||
<div class="text-light">
|
||
{{ chunk.text }}
|
||
</div>
|
||
|
||
</div>
|
||
{% endfor %}
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% endblock %} |