RAG Parameetrite Optimeerimine.md 11 KB

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:

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

Soovituslikud täiendused:

# 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:

# 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:

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:

- CHAT_CONTEXT_WINDOW=8192

Kuna sinu mudel toetab suuremat konteksti, suurenda:

- 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:

# 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:

# 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:

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:

# Ü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:

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

Täiendused:

# 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:

# 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:

# 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:

# 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:

# 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:

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

Kui Qdrant on aeglane:

# 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)

# 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:

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:

  1. Lisa PostgreSQL indeksid (jõudlus)
  2. Loo kasulikud promptid (/analyysi, /kirjandus)
  3. Optimeeri Qdrant seaded (kui >10K dokumenti)
  4. Seadista backup'id

🔮 Tee tulevikus:

  1. Lisa Reranking mudel (täpsem RAG)
  2. Integreeri SearXNG web search
  3. Loo API skriptid automatiseerimiseks
  4. Lisa SSL ja täiustatud turvalisus