# AI-агент "Поиск по форуму": настройка семантического поиска и эмбеддингов
**Category:** [Discourse](https://discuss.rabkesov.ru/c/discourse/12)
**Created:** 2026-03-30 15:52 UTC
**Views:** 27
**Replies:** 0
**URL:** https://discuss.rabkesov.ru/t/ai-agent-poisk-po-forumu-nastrojka-semanticheskogo-poiska-i-embeddingov/382
---
## Post #1 by @system
## Что сделано
Создан AI-агент **"Поиск по форуму"** (ID=5) для семантического поиска по материалам форума discuss.rabkesov.ru с возможностью обогащения результатов из интернета.
## Агент
- **Бот-пользователь:** `Поиск_по_форуму_bot` (user_id=-1202)
- **LLM:** qwen3-VL-8b (локальный, vanill.ddns.net:54321)
- **Админка:** [ai-agents/5/edit](/admin/plugins/discourse-ai/ai-agents/5/edit)
### Инструменты
| Инструмент | Назначение | Параметры |
|---|---|---|
| **Search** | Семантический + keyword поиск | max_results=20, search_private=true |
| **Read** | Чтение полного содержимого топиков | read_private=true |
| **Researcher** | Глубокий анализ/синтез по нескольким топикам | max_results=10, LLM=qwen3-VL-8b |
| **WebBrowser** | Просмотр веб-страниц (для web enrichment) | - |
### Поведение
1. На каждый запрос ищет **только внутри форума** (Search + Read + Researcher)
2. Каждый факт цитирует ссылкой на топик/пост
3. В конце ответа спрашивает: *"Желаете обогатить результаты информацией из интернета?"*
4. При подтверждении использует **WebBrowser** для обхода приоритетных сайтов:
- habr.com, meta.discourse.org, stackoverflow.com, github.com
- kubernetes.io/docs, docs.ansible.com, wiki.archlinux.org
5. Отвечает на языке вопроса
### Как использовать
- Упомянуть `@Поиск_по_форуму_bot` в любом топике
- Отправить личное сообщение боту
- Через [AI-бот conversations](/discourse-ai/ai-bot/conversations)
## Замена эмбеддинг-модели: nomic v1.5 -> v2-moe
### Проблема
Модель `nomic-embed-text-v1.5` группирует тексты **по языку, а не по смыслу**. Тест:
| Пара | Cosine similarity |
|---|---|
| RU "vLLM настройка" <-> EN "vLLM config" (одна тема) | **0.634** |
| RU "vLLM настройка" <-> RU "рецепт борща" (разные темы) | **0.650** |
| Gap (разделение по смыслу) | **-0.016** |
Русский текст про vLLM оказывается ближе к русскому рецепту борща, чем к английскому тексту про vLLM. Семантический поиск на русскоязычном форуме с такой моделью работал некорректно.
### Решение
Заменена на `nomic-embed-text-v2-moe` (MoE, 8x277M, 512 MB Q8_0, 100+ языков). Результат:
| Пара | v1.5 | v2-moe |
|---|---|---|
| RU "vLLM" <-> EN "vLLM" (одна тема) | 0.634 | **0.924** |
| RU "vLLM" <-> RU "борщ" (разные темы) | 0.650 | **0.163** |
| Gap | -0.016 | **+0.761** |
### Настройки эмбеддингов (итоговые)
| Параметр | Значение |
|---|---|
| `ai_embeddings_enabled` | true |
| `ai_embeddings_selected_model` | 12 (nomic-embed-text-v2-moe) |
| `ai_embeddings_semantic_search_enabled` | true |
| `ai_embeddings_semantic_search_use_hyde` | true |
| `ai_embeddings_semantic_search_hyde_agent` | -32 ("Автор контента") |
| `ai_embeddings_semantic_quick_search_enabled` | true |
Модель `nomic-embed-text-v2-moe` должна быть загружена в LM Studio постоянно (~488 MB VRAM). Backfill эмбеддингов запускается Sidekiq автоматически после смены модели.
## Ограничение: web search
Инструмент Google (полноценный web search) недоступен - `ai_google_custom_search_api_key` не настроен. Агент использует WebBrowser для обхода конкретных URL. Для полноценного поиска по интернету нужно:
- Зарегистрировать [Google Custom Search Engine](https://programmablesearchengine.google.com/) и получить API key + CX
- Прописать в [настройках AI](/admin/plugins/discourse-ai/settings?filter=google)
## Логи LLM-сервера
Путь: `~/.lmstudio/server-logs/YYYY-MM/YYYY-MM-DD.N.log`
- Ротация по месяцам в папках, внутри по дням
- N - номер ротации за день
- Пример: `~/.lmstudio/server-logs/2026-03/2026-03-30.1.log`
---
**Canonical:** https://discuss.rabkesov.ru/t/ai-agent-poisk-po-forumu-nastrojka-semanticheskogo-poiska-i-embeddingov/382
**Original content:** https://discuss.rabkesov.ru/t/ai-agent-poisk-po-forumu-nastrojka-semanticheskogo-poiska-i-embeddingov/382