feat: implement TTS, Document processing, and Memory Service /facts API

- TTS: xtts-v2 integration with voice cloning support
- Document: docling integration for PDF/DOCX/PPTX processing
- Memory Service: added /facts/upsert, /facts/{key}, /facts endpoints
- Added required dependencies (TTS, docling)
This commit is contained in:
Apple
2026-01-17 08:16:37 -08:00
parent a9fcadc6e2
commit 5290287058
121 changed files with 17071 additions and 436 deletions

View File

@@ -0,0 +1,150 @@
# 📄 Встановлення Datalab Chandra на НОДА1
**Дата:** 2026-01-12
---
## ✅ Це нормально!
**Так, встановлення Datalab Chandra для обробки документів та таблиць — відмінна ідея!**
Chandra доповнить поточну обробку документів і надасть:
- ✅ Обробку складних таблиць (зберігає структуру)
- ✅ Розпізнавання рукописного тексту
- ✅ Обробку форм та документів
- ✅ Збереження макету документа (bounding boxes, метадані)
- ✅ Вихід у форматах: Markdown, HTML, JSON
---
## 📊 Поточна ситуація
### НОДА1:
-**GPU:** NVIDIA RTX 4000 SFF Ada (20GB VRAM) — достатньо для Chandra Small
-**Обробка документів:** `gateway-bot/services/doc_service.py`
-**Router:** має `OCR_URL` налаштування
### Що додасть Chandra:
- Покращена обробка таблиць
- Розпізнавання рукопису
- Обробка складних форм
- Детальні метадані документа
---
## 🔧 Встановлення
### Крок 1: Отримати Docker образ Chandra
**Варіант A: Офіційний Datalab образ (потрібна ліцензія)**
```bash
# Потрібно отримати доступ до Datalab registry
docker pull datalab/chandra-inference:latest
```
**Варіант B: HuggingFace модель (open-source)**
```bash
# Використати HuggingFace модель
# Створити власний Dockerfile з моделлю
```
### Крок 2: Налаштувати змінні оточення
Додати в `.env` або `docker-compose.node1.yml`:
```yaml
environment:
- CHANDRA_LICENSE_KEY=${CHANDRA_LICENSE_KEY:-} # Якщо потрібна ліцензія
- CHANDRA_MODEL=chandra-small # або chandra для повної версії
```
### Крок 3: Запустити сервіси
```bash
cd /opt/microdao-daarion
docker compose -f docker-compose.node1.yml up -d chandra-inference chandra-service
```
### Крок 4: Перевірити статус
```bash
# Перевірка health check
curl http://localhost:8002/health
# Перевірка моделей
curl http://localhost:8002/models
```
---
## 🔗 Інтеграція
### Router інтеграція:
-`OCR_URL` оновлено на `http://chandra-service:8002`
- ✅ Додано `CHANDRA_URL` для прямих викликів
### Gateway інтеграція:
- `doc_service.py` може використовувати Chandra через Router
- Або напряму через `chandra-service:8002`
---
## 📝 Використання
### API виклик:
```python
import httpx
async with httpx.AsyncClient() as client:
response = await client.post(
"http://chandra-service:8002/process",
files={"file": ("document.pdf", file_data)},
data={
"output_format": "markdown", # або html, json
"accurate_mode": "false"
}
)
result = response.json()
```
### Інтеграція в doc_service:
```python
# В doc_service.py додати метод:
async def parse_with_chandra(
self,
doc_url: str,
output_format: str = "markdown"
) -> Dict[str, Any]:
"""Parse document using Chandra OCR"""
async with httpx.AsyncClient() as client:
response = await client.post(
"http://chandra-service:8002/process",
json={
"doc_url": doc_url,
"output_format": output_format
}
)
return response.json()
```
---
## ⚠️ Важливо
1. **Ліцензія:** Для повної версії Chandra потрібна ліцензія Datalab
2. **VRAM:** Chandra Small потребує ~8GB VRAM, повна версія ~16GB
3. **Час обробки:** Accurate mode повільніший, але точніший
4. **Docker образ:** Потрібно замінити placeholder на реальний образ Datalab
---
## 🔄 Наступні кроки
1. Отримати Docker образ Chandra (Datalab registry або HuggingFace)
2. Оновити `docker-compose.node1.yml` з правильним образом
3. Налаштувати ліцензію (якщо потрібна)
4. Протестувати обробку таблиць та форм
5. Інтегрувати в `doc_service.py`
---
**Оновлено:** 2026-01-12