From 7b6d8f7269925da6cb58dca78d5e27843ca104d0 Mon Sep 17 00:00:00 2001 From: team2 Date: Sun, 1 Mar 2026 20:27:43 +0100 Subject: [PATCH] optimize debug retrieval --- .../Retrieval/NdjsonHybridRetriever.php | 25 +++++++++++-------- .../ModelGenerationConfigAdminService.php | 2 +- .../model_config/test_retrieval.html.twig | 5 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Knowledge/Retrieval/NdjsonHybridRetriever.php b/src/Knowledge/Retrieval/NdjsonHybridRetriever.php index c0cd6bb..2f0bf6c 100644 --- a/src/Knowledge/Retrieval/NdjsonHybridRetriever.php +++ b/src/Knowledge/Retrieval/NdjsonHybridRetriever.php @@ -16,7 +16,7 @@ use App\Vector\VectorSearchClient; final class NdjsonHybridRetriever implements RetrieverInterface { - private const VECTOR_SCORE_THRESHOLD = 0.72; + private const VECTOR_SCORE_THRESHOLD = 0.82; // Guardrails private const HARD_MAX_CHUNKS = 90; @@ -45,7 +45,8 @@ final class NdjsonHybridRetriever implements RetrieverInterface private readonly CatalogIntentLite $catalogIntent, private readonly IntentRouteResolver $routeResolver, private readonly EntityCatalogService $entityCatalogService - ) { + ) + { } // ========================================================= @@ -123,9 +124,9 @@ final class NdjsonHybridRetriever implements RetrieverInterface * text:string * }> */ - public function retrieveDebug(string $prompt): array + public function retrieveDebug(string $prompt, ?ModelGenerationConfig $config = null): array { - $config = $this->configRepository->findActiveForModel(); + $config = $config ?? $this->configRepository->findActiveForModel(); if ($config === null) { throw new \RuntimeException('No active ModelGenerationConfig found.'); @@ -193,11 +194,12 @@ final class NdjsonHybridRetriever implements RetrieverInterface * } */ private function runCore( - string $prompt, + string $prompt, ModelGenerationConfig $config, - bool $withScores, - string $salesIntent - ): array { + bool $withScores, + string $salesIntent + ): array + { $limit = max(1, min($config->getRetrievalMaxChunks(), self::HARD_MAX_CHUNKS)); $vectorTopKBase = max(1, min($config->getRetrievalVectorTopK(), self::HARD_MAX_VECTORK)); @@ -338,9 +340,10 @@ final class NdjsonHybridRetriever implements RetrieverInterface array $globalHits, array $scopedHits, float $threshold, - bool $boostScoped, - bool $captureRaw - ): array { + bool $boostScoped, + bool $captureRaw + ): array + { $rrfScores = []; $rawScores = []; diff --git a/src/Service/Admin/ModelGenerationConfigAdminService.php b/src/Service/Admin/ModelGenerationConfigAdminService.php index 802b9f2..7b446f3 100644 --- a/src/Service/Admin/ModelGenerationConfigAdminService.php +++ b/src/Service/Admin/ModelGenerationConfigAdminService.php @@ -74,7 +74,7 @@ final class ModelGenerationConfigAdminService return []; } - return $this->retriever->retrieveDebug($prompt); + return $this->retriever->retrieveDebug($prompt,$config); } private function requireString(mixed $value, string $field): string diff --git a/templates/admin/model_config/test_retrieval.html.twig b/templates/admin/model_config/test_retrieval.html.twig index dd88bd0..1d2b210 100644 --- a/templates/admin/model_config/test_retrieval.html.twig +++ b/templates/admin/model_config/test_retrieval.html.twig @@ -89,10 +89,11 @@ href="{{ path('admin_document_show', { id: chunk.document_id }) }}"> {{ chunk.document_id }} | - raw_score: {{ chunk.raw_score|number_format(6, '.', '') }} - | rrf_score: {{ chunk.rrf_score|number_format(6, '.', '') }} | + raw_score: {{ chunk.raw_score|number_format(6, '.', '') }} + | + threshold: {{ chunk.threshold }} | intent: {{ chunk.intent }} |