@@ -126,8 +126,8 @@ rag-vectors-presentation/
126126├── src/
127127│ ├── Command/ # Консольные команды для демо
128128│ ├── Service/ # Основная бизнес-логика
129- │ │ ├── ImprovedRAGService .php # Главная RAG реализация
130- │ │ ├── OllamaEmbeddingService .php # Векторные эмбеддинги
129+ │ │ ├── RAGService .php # Главная RAG реализация
130+ │ │ ├── EmbeddingConfigService .php # Векторные эмбеддинги
131131│ │ └── LlamaService.php # Интеграция с LLM
132132│ ├── DTO/ # Объекты передачи данных
133133│ └── Exception/ # Кастомные исключения
@@ -167,19 +167,16 @@ rag-vectors-presentation/
167167
168168### Смена модели
169169
170- Чтобы использовать другую модель, измените её в файлах :
170+ Чтобы использовать другую модель, измените её в файле :
171171
172- 1 . ** src/Service/Embedding/TransformersEmbeddingService.php** (строка ~ 30)
173- 2 . ** src/Service/ImprovedRAGService.php** (строка ~ 200)
174- 3 . ** src/Command/ProductsSearchCommand.php** (строка ~ 68)
175- 4 . ** src/Command/ProductsVectorizeCommand.php** (строка ~ 109)
172+ 1 . ** src/Service/EmbeddingConfigService.php** (константа EMBEDDING_MODEL)
176173
177174``` php
178- // Заменить эту строку :
179- $this->embedder = pipeline(Task::Embeddings, 'onnx-community/Qwen3-Embedding-0.6B-ONNX') ;
175+ // В src/Service/EmbeddingConfigService.php заменить :
176+ private const string EMBEDDING_MODEL = 'onnx-community/Qwen3-Embedding-0.6B-ONNX';
180177
181178// На выбранную модель:
182- $this->embedder = pipeline(Task::Embeddings, 'onnx-community/all-MiniLM-L6-v2') ;
179+ private const string EMBEDDING_MODEL = 'onnx-community/all-MiniLM-L6-v2';
183180```
184181
185182> ⚠️ ** Важно** : При смене модели нужно заново проиндексировать товары командой ` php bin/console products:vectorize `
@@ -235,26 +232,29 @@ curl http://localhost:11434/api/tags
235232
236233``` php
237234// Прямое использование сервиса
238- $ragService = $container->get(ImprovedRAGService::class);
239- $result = $ragService->search("мощная видеокарта для игр");
240-
241- echo "Запрос: " . $result->query . "\n";
242- echo "Ответ: " . $result->response . "\n";
243- foreach ($result->products as $product) {
244- echo "- {$product['name']} (релевантность: {$product['similarity']})\n";
235+ $ragService = $container->get(RAGService::class);
236+ $result = $ragService->searchWithContext("мощная видеокарта для игр", "session_id");
237+
238+ echo "Исходный запрос: " . $result->originalQuery . "\n";
239+ echo "Оптимизированный запрос: " . $result->optimizedQuery . "\n";
240+ echo "AI Ответ: " . $result->aiResponse . "\n";
241+ foreach ($result->documents as $doc) {
242+ echo "- {$doc['payload']['name']} (релевантность: " . round($doc['score'] * 100, 1) . "%)\n";
245243}
246244```
247245
248246### Кастомная RAG реализация
249247
250248``` php
251- use App\Service\RAGServiceInterface;
249+ use App\Service\RAGService;
250+ use App\DTO\RAGSearchResult;
252251
253- class MyCustomRAGService implements RAGServiceInterface
252+ class MyCustomRAGService extends RAGService
254253{
255- public function search (string $userQuery): RAGSearchResult
254+ public function searchWithContext (string $userQuery, string $sessionId ): RAGSearchResult
256255 {
257- // Ваша логика RAG здесь
256+ // Ваша кастомная логика RAG здесь
257+ return parent::searchWithContext($userQuery, $sessionId);
258258 }
259259}
260260```
0 commit comments