(KÕIGE OLULISEM)
Kuna sul on suured JSON failid (186K tokenit) ja palju dokumente (1000+), pead RAG seadeid täpsustama:
- CHUNK_SIZE=600 # ✅ Hea algus
- CHUNK_OVERLAP=80 # ✅ Hea algus
- RAG_TOP_K=5 # ✅ Hea algus
# 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
Praegu kasutad: nomic-embed-text:latest
# 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
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.
Pärast RAG parameetrite muutmist PEAD reindexeerima olemasolevaid teadmiste baase:
# 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"
Qdrant loob automaatselt kollektsioone, aga võid parameetreid optimeerida.
# Vaata kollektsioone
curl http://localhost:6333/collections
# Peaks nägema midagi stiilis:
# {
# "result": {
# "collections": [
# {"name": "documents"}
# ]
# }
# }
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
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
Praegu:
- FILE_UPLOAD_MAX_SIZE=100 # 100MB
- FILE_UPLOAD_ALLOWED_TYPES=.pdf,.txt,.md,.csv,.json,.xml
# 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
Pärast sisselogimist Open WebUI-sse:
Chunk Size: 600
Chunk Overlap: 80
Top K: 5
Embedding Model: nomic-embed-text:latest
Hybrid Search: ☑️ Enabled
Default Model: (vali oma llama.cpp mudel)
Context Length: 32768 (või 65536)
Enable Message Suggestions: ☑️
Show Username: ☑️
Kui kasutad häälesisestust (Whisper):
STT Engine: Whisper
STT Model: http://100.87.1.24:8070/v1
TTS Engine: openedai-speech
Nüüd saad luua kohandatud mudeleid:
Seaded:
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
Salvesta
Loo sagedasti kasutatavaid prompte:
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
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
# 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
# Vaata RAG toiminguid
docker logs open-webui | grep -i "rag\|embedding\|chunk"
# Vaata Qdrant ühendusi
docker logs open-webui | grep -i "qdrant"
# 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/
# 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
# docker-compose.yml - lisa open-webui alla:
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
# docker-compose.yml - qdrant sektsioon:
environment:
- QDRANT__STORAGE__OPTIMIZERS__INDEXING_THRESHOLD=20000 # Optimeeri indekseerimist
- QDRANT__STORAGE__WAL__WAL_CAPACITY_MB=256 # Suurenda WAL puhvrit
# 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
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())
ollama list)