## 1. RAG Parameetrite Optimeerimine 
(KÕIGE OLULISEM)

Kuna sul on **suured JSON failid** (186K tokenit) ja **palju dokumente** (1000+), pead RAG seadeid täpsustama:

### Praegu sinu docker-compose'is:

```yaml
- CHUNK_SIZE=600          # ✅ Hea algus
- CHUNK_OVERLAP=80        # ✅ Hea algus
- RAG_TOP_K=5             # ✅ Hea algus
```


### Soovituslikud täiendused:

```yaml
# RAG & EMBEDDINGS - Optimeeritud suurte andmekogumite jaoks
- ENABLE_RAG_WEB_SEARCH=true
- RAG_EMBEDDING_ENGINE=ollama
- RAG_EMBEDDING_MODEL=nomic-embed-text:latest

# CHUNK SEADED (teadusartiklitele)
- CHUNK_SIZE=600                    # Hea artikli lõikude jaoks
- CHUNK_OVERLAP=80                  # 13% overlap (piisav kontekst)
- CHUNK_MIN_SIZE=200                # Väldi liiga väikseid chunke

# RETRIEVAL SEADED
- RAG_TOP_K=5                       # Mitu chunki tuuakse (5-10 on hea)
- RAG_RELEVANCE_THRESHOLD=0.5       # Minimaalne relevantsi skoor (0.0-1.0)
- RAG_RERANKING_MODEL=               # Tühi = ei kasuta reranking'ut (lisa kui vaja)

# TEXT EXTRACTION
- PDF_EXTRACT_IMAGES=true           # Ekstraheeri ka pildid PDF-dest
- ENABLE_RAG_LOCAL_WEB_FETCH=true   # Luba kohalike URL-ide fetch
- CONTENT_EXTRACTION_ENGINE=default  # 'default' või 'tika' (Tika = rohkem formaate)

# HYBRID SEARCH (täpsustab otsingutulemusi)
- RAG_ENABLE_HYBRID_SEARCH=true     # Kombineerib vektori- ja tekstiotsingut
- RAG_HYBRID_SEARCH_ALPHA=0.5       # 0.5 = 50% vektor, 50% tekst

# FILE UPLOAD SEADED
- ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION=true
```


***

## 2. Embedding Mudeli Optimeerimine

Praegu kasutad: `nomic-embed-text:latest`

### Alternatiivid suurematele andmekogumitele:

```yaml
# Variant A: Nomic (praegune, hea üldine)
- RAG_EMBEDDING_MODEL=nomic-embed-text:latest
- RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE=true

# Variant B: all-minilm (kiirem, väiksem, vähem täpne)
- RAG_EMBEDDING_MODEL=all-minilm:latest

# Variant C: BGE (parem teadusartiklitele, suurem)
- RAG_EMBEDDING_MODEL=bge-large:latest
```

**Soovitus:** Jää `nomic-embed-text` juurde - hea kompromiss kiiruse ja kvaliteedi vahel.

**Kontrolli, et mudel on alla laaditud:**

```bash
docker exec ollama ollama list
# Peaks nägema: nomic-embed-text:latest

# Kui puudub, laadi alla:
docker exec ollama ollama pull nomic-embed-text:latest
```


***

## 3. Konteksti Akna Suurendamine

Praegu:

```yaml
- CHAT_CONTEXT_WINDOW=8192
```

Kuna sinu mudel toetab suuremat konteksti, **suurenda**:

```yaml
- CHAT_CONTEXT_WINDOW=32768  # Või 65536 kui llama-server toetab
```

See peab vastama llama-serveri `--ctx-size` väärtusele.

***

## 4. Knowledge Base Reindexeerimine

Pärast RAG parameetrite muutmist **PEAD reindexeerima** olemasolevaid teadmiste baase:

### UI kaudu:

1. **Open WebUI → Workspace → Knowledge**
2. **Vali oma Knowledge baas** (nt "Teadusartiklid")
3. **Kolm punkti (...) → "Reindex"**
4. **Oota, kuni valmis** (võib võtta aega)

### Või API kaudu:

```bash
# Hangi Knowledge ID
curl http://localhost:3000/api/v1/knowledge \
  -H "Authorization: Bearer YOUR_API_KEY"

# Reindex
curl -X POST http://localhost:3000/api/v1/knowledge/KNOWLEDGE_ID/reindex \
  -H "Authorization: Bearer YOUR_API_KEY"
```


***

## 5. Qdrant Kollektsioonide Optimeerimine

Qdrant loob automaatselt kollektsioone, aga võid parameetreid optimeerida.

### Kontrolli Qdrant'i:

```bash
# Vaata kollektsioone
curl http://localhost:6333/collections

# Peaks nägema midagi stiilis:
# {
#   "result": {
#     "collections": [
#       {"name": "documents"}
#     ]
#   }
# }
```


### Optimeeri Qdrant (valikuline):

Loo `/data/docker/open-webui/qdrant-config.yaml`:

```yaml
storage:
  # Optimeeri suurtele andmekogumitele
  hnsw_ef_construct: 100  # Default: 100 (suurendades = täpsem, aeglasem indekseerimine)
  hnsw_m: 16              # Default: 16 (suurendades = täpsem otsing, rohkem mälu)
  
  # Mälu optimeerimine
  on_disk: false          # Hoia vektorid RAM-is (kiirem, aga vajab rohkem mälu)
  # on_disk: true         # Kui vektoreid on väga palju (>1M)

service:
  max_request_size_mb: 256  # Suurenda kui suur failide hulk
```


***

## 6. PostgreSQL Indeksite Lisamine

Open WebUI kasutab Postgres'i metadata jaoks. Lisa indeksid parema jõudluse jaoks:

```bash
# Ühenda Postgresega
docker exec -it postgres_postgis psql -U ai_user -d openwebui_db

# Lisa indeksid
CREATE INDEX IF NOT EXISTS idx_knowledge_created_at ON knowledge (created_at DESC);
CREATE INDEX IF NOT EXISTS idx_knowledge_user_id ON knowledge (user_id);
CREATE INDEX IF NOT EXISTS idx_document_knowledge_id ON document (knowledge_id);
CREATE INDEX IF NOT EXISTS idx_chat_user_id ON chat (user_id);
CREATE INDEX IF NOT EXISTS idx_message_chat_id ON message (chat_id);

# Väljumine
\q
```


***

## 7. Failide Üleslaadimise Optimeerim

Praegu:

```yaml
- FILE_UPLOAD_MAX_SIZE=100  # 100MB
- FILE_UPLOAD_ALLOWED_TYPES=.pdf,.txt,.md,.csv,.json,.xml
```


### Täiendused:

```yaml
# FAILIDE ÜLESLAADMINE
- UPLOAD_DIR=/app/backend/data/uploads
- ENABLE_FILE_UPLOAD=true
- FILE_UPLOAD_MAX_SIZE=100                            # MB (suurenda kui vaja)
- FILE_UPLOAD_ALLOWED_TYPES=.pdf,.txt,.md,.csv,.json,.xml,.docx,.xlsx,.html

# BATCH UPLOAD (mitme faili korraga)
- FILE_UPLOAD_BATCH_SIZE=10                           # Korraga 10 faili
- FILE_UPLOAD_CONCURRENT_WORKERS=4                    # 4 paralleelset töötlejat

# FILE PROCESSING
- ENABLE_RAG_HYBRID_SEARCH=true
- PDF_EXTRACT_IMAGES=true
- ENABLE_IMAGE_GENERATION=false                       # Kui ei vaja piltide genereerimist
```


***

## 8. Admin Panel Seaded

Pärast sisselogimist Open WebUI-sse:

### Admin Panel → Settings → Documents:

```
Chunk Size: 600
Chunk Overlap: 80
Top K: 5
Embedding Model: nomic-embed-text:latest
Hybrid Search: ☑️ Enabled
```


### Admin Panel → Settings → Interface:

```
Default Model: (vali oma llama.cpp mudel)
Context Length: 32768 (või 65536)
Enable Message Suggestions: ☑️
Show Username: ☑️
```


### Admin Panel → Settings → Audio:

Kui kasutad häälesisestust (Whisper):

```
STT Engine: Whisper
STT Model: http://100.87.1.24:8070/v1
TTS Engine: openedai-speech
```


***

## 9. Workspace'i Kasutamine

Nüüd saad luua kohandatud mudeleid:

### Loo kohandatud teadusartiklite mudel:

1. **Workspace → Models → + New Model**
2. **Seaded:**
    - **Model Name**: "Teadusartiklite Analüüsija"
    - **Base Model**: Vali oma llama.cpp mudel
    - **System Prompt**:

```
Sa oled ekspert teadusartiklite analüüsija. Sinu ülesanded:
- Analüüsida teadusartikleid põhjalikult
- Tuvastada uurimisküsimused, metoodika, tulemused
- Hinnata uuringu kvaliteeti kriitiliselt
- Pakkuda soovitusi uute artiklite kirjutamiseks

Vastused peavad olema:
- Täpsed ja faktilistele andmetele tuginevad
- Struktureeritud ja loogilised
- Eesti keeles (kui ei ole teisiti palutud)
- Akadeemilises stiilis
```

    - **Knowledge**: Vali "Teadusartiklid" (või sinu loodud Knowledge baas)
    - **Temperature**: 0.7
    - **Top P**: 0.9
    - **Max Tokens**: 4096
3. **Salvesta**

***

## 10. Promptide Loomine

Loo sagedasti kasutatavaid prompte:

### Näide 1: Artikli Kokkuvõte

**Workspace → Prompts → + New Prompt**

```
Title: Artikli Analüüs
Command: /analyysi
Content:

Analüüsi järgmist teadusartiklit:

**Artikkel:**
{{article_text | textarea:required}}

**Paku:**
1. Peamine uurimisküsimus
2. Kasutatud metoodika
3. Põhilised tulemused
4. Piirangud ja kriitika
5. Praktiline rakendatavus
6. Seotud uurimissuunad
```


### Näide 2: Kirjanduse Ülevaade

```
Title: Kirjanduse Ülevaade
Command: /kirjandus
Content:

Loo kirjanduse ülevaade järgmisel teemal:

**Teema:**
{{topic | input:required}}

**Ajavahemik:**
{{years | input}}

**Kasuta Knowledge baasi artikleid ja paku:**
1. Peamised uurimissuunad
2. Olulisemad leiud
3. Uurimislüngad
4. Tuleviku perspektiivid
```


***

## 11. Monitoring ja Logid

### Kontrolli Qdrant'i kasutust:

```bash
# Vaata Qdrant kollektsioone
curl http://localhost:6333/collections | jq

# Vaata kollektsiooni infot
curl http://localhost:6333/collections/documents | jq

# Peaks nägema:
# - vectors_count: mitu vektorit on salvestatud
# - indexed_vectors_count: mitu on indekseeritud
```


### Kontrolli Open WebUI logisid:

```bash
# Vaata RAG toiminguid
docker logs open-webui | grep -i "rag\|embedding\|chunk"

# Vaata Qdrant ühendusi
docker logs open-webui | grep -i "qdrant"
```


***

## 12. Backup ja Restore

### Qdrant backup:

```bash
# Loo snapshot
curl -X POST http://localhost:6333/collections/documents/snapshots

# Lae alla snapshot
# Vaata Docker volume'i: qdrant_data:/qdrant/storage/snapshots/

# Kopeeri backup
docker cp qdrant:/qdrant/storage/snapshots/ /backup/qdrant/
```


### PostgreSQL backup:

```bash
# Loo dump
docker exec postgres_postgis pg_dump -U ai_user openwebui_db > /backup/openwebui_db.sql

# Restore
docker exec -i postgres_postgis psql -U ai_user openwebui_db < /backup/openwebui_db.sql
```


***

## 13. Jõudluse Optimeerimine

### Kui Open WebUI on aeglane:

```yaml
# docker-compose.yml - lisa open-webui alla:
deploy:
  resources:
    limits:
      cpus: '4'
      memory: 8G
    reservations:
      cpus: '2'
      memory: 4G
```


### Kui Qdrant on aeglane:

```yaml
# docker-compose.yml - qdrant sektsioon:
environment:
  - QDRANT__STORAGE__OPTIMIZERS__INDEXING_THRESHOLD=20000  # Optimeeri indekseerimist
  - QDRANT__STORAGE__WAL__WAL_CAPACITY_MB=256             # Suurenda WAL puhvrit
```


***

## 14. Turvalisuse Parandused (Production'is)

```yaml
# Eemalda CORS wildcard
- CORS_ALLOW_ORIGIN=http://localhost:3000,http://100.87.1.24:3000

# Lisa JWT secret
- WEBUI_JWT_SECRET_KEY=genereeri_turvaline_random_string_256bit

# Keela signup
- ENABLE_SIGNUP=false

# SSL Cookie
- WEBUI_SESSION_COOKIE_SECURE=true  # Ainult HTTPS-ga
- WEBUI_SESSION_COOKIE_SAME_SITE=strict
```


***

## 15. API Integratsioon (Programmiline Kasutus)

Kui tahad kasutada Python skripte:

```python
import requests

# Open WebUI API
BASE_URL = "http://localhost:3000"
API_KEY = "sk-xxxxx"  # Hangi Admin Panel → Settings → Account → API Keys

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# Küsi mudelilt
response = requests.post(
    f"{BASE_URL}/api/chat",
    headers=headers,
    json={
        "model": "llama-cpp-server",
        "messages": [
            {"role": "user", "content": "Analüüsi artikklit ID 123"}
        ],
        "stream": False
    }
)

print(response.json())
```


***

## Kokkuvõte - Prioriteedid

### ✅ Tee kindlasti:

1. **Reindex Knowledge baasi** pärast chunk size muutmist
2. **Kontrolli embedding mudeli olemasolu** (`ollama list`)
3. **Suurenda CHAT_CONTEXT_WINDOW** → 32768 või 65536
4. **Loo kohandatud mudel** teadusartiklitele (Workspace → Models)

### ⚡ Tee kui on aega:

5. Lisa PostgreSQL indeksid (jõudlus)
6. Loo kasulikud promptid (/analyysi, /kirjandus)
7. Optimeeri Qdrant seaded (kui >10K dokumenti)
8. Seadista backup'id

### 🔮 Tee tulevikus:

9. Lisa Reranking mudel (täpsem RAG)
10. Integreeri SearXNG web search
11. Loo API skriptid automatiseerimiseks
12. Lisa SSL ja täiustatud turvalisus



