# Режимы генерации эмбеддингов
## Обзор
При индексации BSL-кода система создаёт **эмбеддинги** — векторные представления текста для семантического поиска. Режим генерации определяет, какая часть кода попадает в индекс.
## Доступные режимы
### `full` — Полный текст (по умолчанию)
Индексируется **весь код** файла, разбитый на чанки по ~1000 символов с перекрытием.
**Плюсы:**
- Поиск по любому фрагменту кода
- Находит конкретные конструкции (запросы, вызовы методов)
**Минусы:**
- Большой объём индекса
- Медленная индексация
- Много "шума" при поиске (CRUD-код, boilerplate)
**Когда использовать:** для небольших баз, когда нужен поиск по реализации.
---
### `methods` — Методы + комментарии
Индексируются только **объявления методов**:
- Имя процедуры/функции
- Параметры
- Аннотации (`&НаСервере`, `&Перед` и т.д.)
- Комментарии перед методом (doc-comments)
- Первые строки тела (опционально)
**Плюсы:**
- Индекс в 5-10 раз меньше
- Индексация в 5-10 раз быстрее
- Качественный семантический поиск по назначению
**Минусы:**
- Не найдёт код внутри метода
**Когда использовать:** для большинства случаев семантического поиска.
---
### `signatures` — Только сигнатуры
Минимальный режим: только **имя метода + параметры + аннотации**.
Комментарии и тело не индексируются.
**Плюсы:**
- Минимальный размер индекса
- Максимальная скорость индексации
**Минусы:**
- Поиск работает только по названиям методов
- Плохо работает при отсутствии говорящих имён
**Когда использовать:** для огромных баз с хорошим именованием.
---
## Сравнение
| Параметр | `full` | `methods` | `signatures` |
|----------|--------|-----------|--------------|
| Размер индекса | 100% | ~10-20% | ~5% |
| Скорость индексации | 1x | 5-10x | 10-20x |
| Поиск по реализации | ✅ | ❌ | ❌ |
| Поиск по назначению | ⚠️ шумно | ✅ | ⚠️ ограничено |
| Переход к строке | ❌ | ✅ | ✅ |
---
## Как настроить
### Через веб-интерфейс
1. Открыть страницу "Конфигурации"
2. Нажать ⚙️ (настройки) у нужной ИБ
3. Выбрать **Режим эмбеддинга**
4. Сохранить
5. Запустить **Reindex** (переиндексацию)
### Через config.yaml
```yaml
ibs:
- name: erp
title: ERP 2.5
source_dir: C:\src\erp
index_dir: C:\indexes\erp
embedding_mode: methods # <-- здесь
embedding_model: cointegrated/rubert-tiny2
embedding_device: cpu
```
---
## Важно
> ⚠️ **При смене режима требуется полная переиндексация!**
> Инкрементальное обновление не сработает — структура чанков разная.
---
## Примеры поиска
### Режим `full`
```
Запрос: "РегистрНакопления.ОстаткиТоваров"
Результат: все места где используется этот регистр
```
### Режим `methods`
```
Запрос: "получить остатки товаров на складе"
Результат: методы с похожим названием/описанием
```
### Режим `signatures`
```
Запрос: "ПолучитьОстатки"
Результат: методы с этим словом в названии
```
---
## Рекомендации
| Сценарий | Рекомендуемый режим |
|----------|---------------------|
| Первичное знакомство с кодом | `methods` |
| Поиск "как сделано X" | `full` |
| Большая база (>1 млн строк) | `methods` или `signatures` |
| AI-ассистент (MCP) | `methods` |