- New: src/rag/engine/ — in-process hybrid search (FTS5 BM25 + sqlite-vec + LLM rerank) - New: src/rag/qmd/ — compatibility layer (qmd_query, qmd_chat, qmd_chat_stream, qmd_index_*) - New: src/ingest/stub_writer.py — .md stubs for binary files (videos, archives) - New: scripts/deploy.sh + scripts/pull_models.sh + Makefile + .env.example - Removed: LightRAG, sentence-transformers embedding via separate package, rag_standalone/ - Removed: @nousresearch/qmd npm dep (package not published); Node.js from Dockerfile - Updated: tests/ (46 passed), docker-compose, .dockerignore, config.yaml, README Engine: in-process Python (no daemon, no npm), sentence-transformers 384-dim, RRF fusion (k=60), BM25 + vector with numpy fallback. WebSocket API unchanged. Deploy: 'git clone' + 'make init' + 'make pull-models MODELS_SOURCE=...' + 'make up'. Models (5.83 GB) live outside git; pulled via rsync from dev host.
118 lines
3.9 KiB
YAML
118 lines
3.9 KiB
YAML
# Конфигурация пайплайна транскрибации совещаний
|
||
|
||
# Профили оборудования
|
||
profiles:
|
||
# Текущий: MacBook Air M4, 16GB RAM
|
||
mac_m4:
|
||
device: cpu # MPS на Mac может быть медленнее/багован; CPU + int8 стабильнее
|
||
compute_type: int8
|
||
batch_size: 2 # Оптимум для CPU (1.2-1.3x быстрее, RAM ~4.5 GB)
|
||
model: large-v3
|
||
language: ru
|
||
diarize: true
|
||
|
||
# Будущий: GPU с 8GB VRAM
|
||
gpu_8gb:
|
||
device: cuda
|
||
compute_type: float16 # или int8 если не хватает памяти
|
||
batch_size: 1 # large-v3 + alignment + diarization в ~8GB
|
||
model: large-v3
|
||
language: ru
|
||
diarize: true
|
||
|
||
# Универсальный CPU (без GPU)
|
||
cpu_best:
|
||
device: cpu
|
||
compute_type: int8
|
||
batch_size: 1
|
||
model: large-v3
|
||
language: ru
|
||
diarize: true
|
||
|
||
# Активный профиль (можно переопределить через CLI: --profile gpu_8gb)
|
||
active_profile: mac_m4
|
||
|
||
# Настройки диаризации
|
||
hf_token: null # HuggingFace токен для pyannote. Установите через env: HF_TOKEN
|
||
|
||
# Настройки выходного документа
|
||
output:
|
||
formats: [docx, md] # Список форматов: docx, md, txt. Можно указать один или несколько.
|
||
include_timestamps: true
|
||
speaker_label_style: name # name | id | none
|
||
paragraph_pause_sec: 2.0 # новый абзац, если пауза > N секунд
|
||
|
||
# Настройки RAG (native Python engine: BM25/FTS5 + sqlite-vec + LLM rerank)
|
||
# Движок работает in-process; внешние сервисы не требуются.
|
||
rag:
|
||
enabled: true
|
||
auto_index: true
|
||
sections:
|
||
- Планировка
|
||
- Конструкции
|
||
- MEP
|
||
- Отделка
|
||
- Общие вопросы
|
||
- Согласование
|
||
- Контроль качества
|
||
|
||
# Native RAG engine (in-process, без демонов)
|
||
qmd_collection_root: ./processed # ENV override: QMD_COLLECTION_ROOT
|
||
qmd_use_rerank: true # LLM-реранкер (2-3 сек warm)
|
||
embed_model: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 # ENV: RAG_EMBED_MODEL
|
||
|
||
# OpenCode LLM (чат-генерация ответов поверх найденного контекста)
|
||
chat_backend: opencode
|
||
chat_model: deepseek-v4-flash-free
|
||
chat_max_tokens: 8192
|
||
opencode_api_key: "sk-4jJBUMS7WJyBOtZZAexsSy6aT4NKOYp2gA19WLlaux8jHMw0HvyCl1V45Jf8SONz" # Или через env: OPENCODE_API_KEY
|
||
opencode_url: "https://opencode.ai/zen/v1"
|
||
|
||
# Классификация и summary (metadata layer, поверх движка)
|
||
summary_auto: true
|
||
summary_model: deepseek-v4-flash-free
|
||
summary_chunk_size: 10000
|
||
classify_chunk_size: 7000
|
||
classify_model: mimo-v2.5-free
|
||
index_model: mimo-v2.5-free # legacy alias, используется в legacy-классификации
|
||
|
||
# Очередь обработки
|
||
queue:
|
||
transcribe_workers: 2
|
||
postprocess_workers: 1
|
||
ingest_workers: 1
|
||
|
||
# Ingest документов (MD, PDF, DOCX, XLSX, TXT)
|
||
ingest:
|
||
auto_classify: true
|
||
pdf_ocr: true
|
||
doc_types:
|
||
- meeting
|
||
- specification
|
||
- estimate
|
||
- contract
|
||
- report
|
||
- correspondence
|
||
- other
|
||
|
||
# Авторизация и multi-tenant (org + projects)
|
||
auth:
|
||
jwt_secret: "" # Обязательно задайте JWT_SECRET в .env для production
|
||
jwt_expire_hours: 168
|
||
database_path: ./data/transcriba.db
|
||
bootstrap:
|
||
org_slug: merakom
|
||
org_name: "МЕРАКОМ"
|
||
admin_username: admin
|
||
admin_password: "admin123" # Смените после первого входа; или AUTH_ADMIN_PASSWORD в .env
|
||
default_projects:
|
||
- slug: "2026"
|
||
name: "2026"
|
||
- slug: "gp-merakom"
|
||
name: "ГП МЕРАКОМ"
|
||
|
||
# Пути
|
||
paths:
|
||
output_dir: ./output
|
||
temp_dir: ./tmp
|