|
35 | 35 |
|
36 | 36 | - **Бэкенд**: PHP 8.3 + Symfony 7.3 (MicroKernelTrait) |
37 | 37 | - **Векторная БД**: Qdrant (поиск по косинусному сходству) |
38 | | -- **Эмбеддинги**: Transformers PHP (all-MiniLM-L6-v2, 384 измерения) |
| 38 | +- **Эмбеддинги**: Transformers PHP ([onnx-community/Qwen3-Embedding-0.6B-ONNX](https://huggingface.co/onnx-community/Qwen3-Embedding-0.6B-ONNX), 384 измерения) |
39 | 39 | - **LLM**: Ollama + Llama 3.2:1b (локальная инференция) |
40 | 40 | - **Инфраструктура**: Docker + Docker Compose |
41 | 41 |
|
@@ -141,6 +141,49 @@ rag-vectors-presentation/ |
141 | 141 | └── README.md # Этот файл |
142 | 142 | ``` |
143 | 143 |
|
| 144 | +## 🧠 Выбор моделей для векторизации |
| 145 | + |
| 146 | +Проект использует **Transformers PHP** для генерации эмбеддингов. По умолчанию установлена модель `onnx-community/Qwen3-Embedding-0.6B-ONNX`, но вы можете выбрать любую другую модель: |
| 147 | + |
| 148 | +### Доступные модели |
| 149 | + |
| 150 | +Все модели можно найти на [🤗 Hugging Face](https://huggingface.co/models?library=transformers.js&task=feature-extraction) с тегом `transformers.js`: |
| 151 | + |
| 152 | +```php |
| 153 | +// Примеры популярных embedding моделей: |
| 154 | + |
| 155 | +// Компактные модели (быстрые, меньше памяти) |
| 156 | +'onnx-community/all-MiniLM-L6-v2' // 384 измерения, универсальная |
| 157 | +'onnx-community/all-MiniLM-L12-v2' // 384 измерения, лучше качество |
| 158 | + |
| 159 | +// Мультиязычные модели (поддержка русского) |
| 160 | +'onnx-community/paraphrase-multilingual-MiniLM-L12-v2' // 384 измерения |
| 161 | +'onnx-community/Qwen3-Embedding-0.6B-ONNX' // 384 измерения (используется по умолчанию) |
| 162 | + |
| 163 | +// Мощные модели (больше точность, больше ресурсов) |
| 164 | +'onnx-community/bge-base-en-v1.5' // 768 измерений, высокое качество |
| 165 | +'onnx-community/e5-large-v2' // 1024 измерения, топовая точность |
| 166 | +``` |
| 167 | + |
| 168 | +### Смена модели |
| 169 | + |
| 170 | +Чтобы использовать другую модель, измените её в файлах: |
| 171 | + |
| 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) |
| 176 | + |
| 177 | +```php |
| 178 | +// Заменить эту строку: |
| 179 | +$this->embedder = pipeline(Task::Embeddings, 'onnx-community/Qwen3-Embedding-0.6B-ONNX'); |
| 180 | + |
| 181 | +// На выбранную модель: |
| 182 | +$this->embedder = pipeline(Task::Embeddings, 'onnx-community/all-MiniLM-L6-v2'); |
| 183 | +``` |
| 184 | + |
| 185 | +> ⚠️ **Важно**: При смене модели нужно заново проиндексировать товары командой `php bin/console products:vectorize` |
| 186 | +
|
144 | 187 | ## 🔧 Разработка |
145 | 188 |
|
146 | 189 | ### Проверка качества кода |
@@ -252,7 +295,7 @@ SIMILARITY_THRESHOLD=0.7 |
252 | 295 | ### 1. Этап анализа запроса |
253 | 296 | - Пользовательский запрос анализируется Llama 3.2 |
254 | 297 | - Запрос оптимизируется для лучших результатов поиска |
255 | | -- Текст преобразуется в 384-мерный вектор с помощью all-MiniLM-L6-v2 |
| 298 | +- Текст преобразуется в 384-мерный вектор с помощью Qwen3-Embedding-0.6B-ONNX |
256 | 299 |
|
257 | 300 | ### 2. Этап поиска |
258 | 301 | - Семантический поиск в векторной базе Qdrant |
|
0 commit comments