LOEMIND.md.bak-embed-20260913-190443 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. # Open WebUI – Docker kasutusjuhend
  2. Professionaalne LLM veebiliides. Vestlus, RAG (dokumentide põhine küsimine), veebiotsing.
  3. ## Arhitektuur (2025-07-05 seisuga)
  4. | Komponent | Asukoht | Staatus |
  5. |-----------|---------|---------|
  6. | **Open WebUI** | Docker konteiner (`open-webui`) | port 3010 |
  7. | **Ollama** | Native systemd teenus (`ollama.service`) | port 11434 |
  8. | **Ollama GPU** | ROCm 7.2.2, gfx1151 (Radeon 8060S) | hostil |
  9. | **mcp-filesystem-sse** | Docker konteiner (`mcp-filesystem-sse`) | port 3100 |
  10. | **mcp-terminal** | Docker konteiner (`mcp-terminal`) | port 3110 |
  11. | **tika** | Docker konteiner (`tika`) | port 9998 |
  12. | **Qdrant** | Docker konteiner (`qdrant`) | port 6333-6334 |
  13. | **SearXNG** | Docker konteiner (`searxng`) | port 8888 |
  14. | **PostgreSQL** | Docker konteiner (`postgres_postgis`) | port 5432 |
  15. **NB!** Ollama EI OLE enam Dockeris. See jookseb native systemd teenusena koos ROCm GPU toega.
  16. Vana Dockeri konteiner (`ollama-rocm`) on eemaldatud.
  17. ## GPU / ROCm
  18. Server: **AZW GTR Pro** mini-PC
  19. - CPU: AMD Ryzen AI Max+ 395 (16C/32T, Zen 5)
  20. - GPU: AMD Radeon 8060S (RDNA 3.5, gfx1151, 40 CU)
  21. - ROCm: 7.2.2 installeeritud hostil (`/opt/rocm/`)
  22. - NPU: AMD RyzenAI (aie2p) – hetkel kasutamata
  23. ROCm teegid on registreeritud süsteemis:
  24. # Kontrolli GPU olekut
  25. rocm-smi
  26. rocminfo
  27. cat /sys/class/drm/card1/device/gpu_busy_percent
  28. # ROCm teegid
  29. ls /opt/rocm/lib/libamdhip64*
  30. ldconfig -p | grep amdhip64
  31. ## Ollama haldus (native, systemd)
  32. Ollama teenus jookseb hostil `ollama.service` nimega:
  33. # Ollama teenuse olek
  34. sudo systemctl status ollama
  35. # Taaskäivita
  36. sudo systemctl restart ollama
  37. # Logid
  38. journalctl -u ollama -f
  39. journalctl -u ollama --no-pager -n 50
  40. # Kontrolli GPU tuvastust
  41. journalctl -u ollama --no-pager | grep -iE 'gpu|rocm|gfx|inference'
  42. # Kasuta ollama CLI-d
  43. ollama list # mudelite nimekiri
  44. ollama ps # hetkel laetud mudelid
  45. ollama show <nimi> # mudeli detailid
  46. Teenuse konfiguratsioon:
  47. - Service fail: `/etc/systemd/system/ollama.service`
  48. - Override: `/etc/systemd/system/ollama.service.d/override.conf`
  49. - Mudelite asukoht: `/home/ardo/.ollama/models`
  50. - Kasutaja: `ollama` (grupid: `render`, `video`, `ardo`)
  51. - GPU override: `HSA_OVERRIDE_GFX_VERSION=11.5.1`
  52. - ROCm teegid: `LD_LIBRARY_PATH=/opt/rocm/lib`
  53. ### Paigaldatud mudelid
  54. | Mudel | Suurus | Kasutus |
  55. |-------|--------|---------|
  56. | `nomic-embed-text:latest` | 274 MB | **RAG embedding (GPU)** |
  57. | `qwen3:30b-fast` | 18 GB | LLM vestlus |
  58. | `deepseek-r1:14b` | 9.0 GB | LLM vestlus (reasoning) |
  59. | `translategemma:12b` | 8.1 GB | Tõlkimine |
  60. | `bge-m3:latest` | 1.2 GB | Varu-embedding |
  61. ### Mudelite haldus
  62. # Lae mudel
  63. ollama pull qwen3:30b-fast
  64. # Eemalda mudel
  65. ollama rm nomic-embed-text-cpu
  66. # Testi mudelit (verbose näitab tok/sek)
  67. ollama run nomic-embed-text "test" --verbose
  68. ## Embedding konfiguratsioon (RAG)
  69. OpenWebUI embeddingud on seadistatud kasutama **nomic-embed-text:latest** mudelit
  70. koos GPU kiirendusega. **Ära kasuta** `nomic-embed-text-cpu` mudelit – see on
  71. ainult CPU jaoks (`num_gpu=0`) ja oluliselt aeglasem.
  72. Compose failis: `RAG_EMBEDDING_MODEL=nomic-embed-text`
  73. ### Jõudluse võrdlus
  74. | Mõõdik | CPU mudel (-cpu) | GPU mudel (latest) | Kiirendus |
  75. |--------|-------------------|---------------------|-----------|
  76. | 901 embedit (batch) | ~39 s | ~9.5 s | **4x** |
  77. | 848 embedit (batch) | ~39 s | ~8.1 s | **5x** |
  78. | Üksik API päring | ~28 s | ~0.3 s | **100x** |
  79. ### Embedding API test
  80. # Testi embeddingut
  81. curl http://localhost:11434/api/embeddings -d '{
  82. "model": "nomic-embed-text",
  83. "prompt": "How to implement semantic search with Python"
  84. }'
  85. ### Vektorbaasi puhastamine
  86. # Qdrant kollektsiooni kustutamine
  87. curl -X DELETE http://qdrant:6333/collections/open-webui_files
  88. # Läbi OpenWebUI skripti
  89. docker exec -ti open-webui bash -c "python /scripts/clean_qdrant.py"
  90. ## Seadistus
  91. Kasutab:
  92. - **Ollama** (native, systemd) – LLM mudelid ja embeddingud
  93. - **SearXNG** – Veebiotsing
  94. - **Qdrant** – Vektorbaas (väljaspool seda compose'i)
  95. - **PostgreSQL** – Andmebaas
  96. Olulised keskkonnamuutujad compose failis:
  97. - `USE_OLLAMA_DOCKER=false` – väldib OpenWebUI sisemist ollama käivitust
  98. - `RAG_EMBEDDING_MODEL=nomic-embed-text` – GPU embedding mudel
  99. - `RAG_EMBEDDING_ENGINE=ollama` – embedding API läbi ollama
  100. - `OLLAMA_API_BASE_URL=http://100.87.1.24:11434` – ollama API
  101. - `VECTOR_DB=qdrant` – vektorbaasi tüüp
  102. ## Docker käsud
  103. # Ava kaust
  104. cd /opt/docker-compose/third/server/openwebui/
  105. # Käivita (ainult open-webui teenus)
  106. docker-compose up -d open-webui
  107. # Käivita kõik teenused
  108. docker-compose up -d
  109. # Peata
  110. docker-compose down
  111. # Taaskäivita
  112. docker-compose restart open-webui
  113. # Logid (ainult open-webui)
  114. docker-compose logs -f open-webui
  115. # Logid (kõik)
  116. docker-compose logs -f
  117. # Uuenda
  118. docker-compose pull open-webui
  119. docker-compose up -d open-webui
  120. ## Docker otse
  121. # Konteinerite seis
  122. docker ps | grep -E "open-webui|tika|mcp"
  123. # Logid nime järgi
  124. docker logs open-webui
  125. docker logs tika
  126. # Sisene konteinerisse
  127. docker exec -it open-webui /bin/bash
  128. docker exec -it tika /bin/bash
  129. ## Teenused
  130. | Teenus | Port | URL |
  131. |--------|------|-----|
  132. | Open WebUI | 3010 | http://100.87.1.24:3010 |
  133. | Ollama API | 11434 | http://100.87.1.24:11434 (native, mitte Docker) |
  134. | MCP Filesystem | 3100 | http://127.0.0.1:3100/mcp (ainult localhost) |
  135. | MCP Terminal | 3110 | http://127.0.0.1:3110/mcp (ainult localhost) |
  136. | Apache Tika | 9998 | http://100.87.1.24:9998 |
  137. ## Tervisekontroll
  138. Open WebUI kontrollib iseenda tervist iga 30 sekundi järel:
  139. # Testi käsitsi
  140. curl http://100.87.1.24:3010/health
  141. # Ollama tervisekontroll
  142. curl http://100.87.1.24:11434/api/tags
  143. ## Olulised kataloogid
  144. | Asukoht | Sisu |
  145. |---------|------|
  146. | `/opt/docker-compose/third/server/openwebui/` | Compose failid ja see dokument |
  147. | `/data/docker/open-webui/scripts` | Skriptid |
  148. | `/backups/docker/open-webui` | Varukoopiad |
  149. | `/home/ardo/.ollama/models` | Ollama mudelid (35 GB) |
  150. | `/opt/rocm/` | ROCm installatsioon |
  151. | `/etc/systemd/system/ollama.service` | Ollama systemd teenus |
  152. | `/etc/systemd/system/ollama.service.d/override.conf` | Ollama teenuse override |
  153. ## Fallback: Dockeri ollama taastamine
  154. Kui on vaja minna tagasi Dockeri ollama peale (nt probleemid native installiga):
  155. # Peata native ollama
  156. sudo systemctl stop ollama
  157. # Käivita Docker ollama (vana startup.sh põhjal)
  158. docker run -d --name ollama-rocm --restart unless-stopped --device /dev/kfd --device /dev/dri --security-opt seccomp=unconfined --security-opt label=disable -p 11434:11434 -v /home/ardo/.ollama/:/root/.ollama/ -e OLLAMA_HOST=0.0.0.0:11434 -e HSA_OVERRIDE_GFX_VERSION=11.5.1 -e OLLAMA_NUM_PARALLEL=4 ollama/ollama:rocm
  159. # Vajadusel muuda OpenWebUI compose failis:
  160. # USE_OLLAMA_DOCKER=true
  161. # ja taaskäivita:
  162. # docker-compose up -d open-webui
  163. ## MCP tööriistade kasutamine OpenWebUIs
  164. Vestluses ava `@` menüü või klõpsa `+` nuppu ja vali **Filesystem** või **Terminal**.
  165. ### @Filesystem — failihaldus (AI tööriist)
  166. | Tööriist | Näide |
  167. |----------|-------|
  168. | `list_directory` | `@Filesystem list directory path=/data` |
  169. | `read_file` | `@Filesystem read file path=/scripts/clean_qdrant.py` |
  170. | `write_file` | `@Filesystem write file path=/backups/märkmed.txt content="Tere!"` |
  171. | `search_files` | `@Filesystem search files path=/scripts pattern=*.py` |
  172. | `get_file_info` | `@Filesystem get file info path=/data` |
  173. | `create_directory` | `@Filesystem create directory path=/backups/test` |
  174. Lubatud kataloogid: `/data`, `/scripts`, `/backups`
  175. ### @Terminal — käsurida (AI tööriist)
  176. | Tööriist | Näide |
  177. |----------|-------|
  178. | `run_command` | `@Terminal run_command: docker ps` |
  179. | | `@Terminal run_command: df -h /` |
  180. | | `@Terminal run_command: docker logs open-webui --tail 20` |
  181. | | `@Terminal run_command: curl -s http://open-webui:8080/health` |
  182. | | `@Terminal run_command: uname -a` |
  183. Lubatud käsud: `ls`, `cat`, `grep`, `df`, `du`, `ps`, `docker ps/logs/inspect`, `curl`, `ping`, `uname`, `echo`, `stat`, `which`, `whoami`, `env`, `tree`, `find`, `head`, `tail`, `sort`, `uniq`, `file`, `free`, `uptime`, `id`, `date`, `host`
  184. Blokeeritud: `rm`, `sudo`, `shutdown`, `|` (torud), `$()`, `>`, `&&`, `docker rm/stop/kill`
  185. Näidisvestlus AI-ga:
  186. > **Sina:** "Vaata, mis toimub – docker logs open-webui --tail 10"
  187. > **AI:** (kasutab @Terminal run_command) "Siin on viimased logiread..."
  188. >
  189. > **Sina:** "Leia /scripts kataloogist kõik Python skriptid"
  190. > **AI:** (kasutab @Filesystem search_files) "Leidsin faili clean_qdrant.py"
  191. ## Tailscale MCP serverite eksponeerimiseks
  192. MCP serverid on seotud ainult `127.0.0.1`-ga (turvalisuse mõttes).
  193. Kui vajad neile ligipääsu läbi Tailscale'i, kasuta:
  194. # MCP Filesystem (Streamable HTTP)
  195. sudo tailscale serve --bg --https 3100 http://127.0.0.1:3100
  196. # MCP Terminal (Streamable HTTP)
  197. sudo tailscale serve --bg --https 3110 http://127.0.0.1:3110
  198. # Kontrolli staatust
  199. sudo tailscale serve status
  200. # Keela
  201. sudo tailscale serve --https=3100 off
  202. sudo tailscale serve --https=3110 off
  203. Pärast seda on MCP serverid kättesaadavad:
  204. - `https://100.87.1.24:3100/mcp`
  205. - `https://100.87.1.24:3110/mcp`
  206. **NB!** Brauseris `/sse` avamine ei tööta, sest SSE on püsiv ühendus (Streamable HTTP),
  207. mitte tavalise GET-päringuga laetav leht. MCP klient (OpenWebUI) haldab ühendust ise.
  208. ## Võrguinfo
  209. - Kõik konteinerid on `main_ai_network` peal (compose'is `ai_network`)
  210. - Ligipääs Ollamale, SearXNG-le ja Qdrantile läbi `host.docker.internal`
  211. - `extra_hosts` on seadistatud compose failis
  212. ## Vead ja tõrkeotsing
  213. ### Embedimine aeglane
  214. - Kontrolli, et `RAG_EMBEDDING_MODEL=nomic-embed-text` (ilma `-cpu`-ta)
  215. - Kontrolli `ollama ps` – peaks näitama "100% GPU"
  216. - Kui mudel on `nomic-embed-text-cpu`, eemalda see: `ollama rm nomic-embed-text-cpu`
  217. - Kontrolli GPU olekut: `cat /sys/class/drm/card1/device/gpu_busy_percent`
  218. ### Failide üleslaadimine ebaõnnestub – "Too many open files"
  219. - Põhjus: compose failis puudub `ulimits:` seadistus, Dockeri vaikimisi limiit on 1024
  220. - Lahendus: kontrolli, et compose failis on `ulimits.nofile.soft=65536` ja `hard=65536`
  221. - Kontrolli konteineri limiiti: `docker exec open-webui cat /proc/1/limits | grep "open files"`
  222. - Peaks näitama: `Max open files 65536 65536`
  223. ### Ollama ei leia GPU-d
  224. # Kontrolli ROCm teeke
  225. ldconfig -p | grep amdhip64
  226. # Kontrolli HSA override
  227. journalctl -u ollama --no-pager | grep HSA_OVERRIDE
  228. # Taaskäivita ollama
  229. sudo systemctl restart ollama
  230. # Kontrolli logisid
  231. journalctl -u ollama -f | grep -i gpu
  232. ### OpenWebUI ei ühendu Ollamaga
  233. # Testi ollama API-t
  234. curl http://100.87.1.24:11434/api/tags
  235. # Kontrolli compose faili
  236. grep OLLAMA /opt/docker-compose/third/server/open-webui/docker-compose.yml
  237. # Taaskäivita OpenWebUI
  238. cd /opt/docker-compose/third/server/openwebui/
  239. docker-compose restart open-webui
  240. ## Ajalugu
  241. | Kuupäev | Muudatus |
  242. |---------|----------|
  243. | 2025-07-05 | Ollama viidud Dockerist native systemd peale (ROCm GPU tugi) |
  244. | 2025-07-05 | Embedding mudel muudetud `nomic-embed-text-cpu` -> `nomic-embed-text:latest` |
  245. | 2025-07-05 | Lisatud `USE_OLLAMA_DOCKER=false` compose faili |
  246. | 2025-07-05 | `startup.sh` OpenWebUI osa asendatud docker-compose haldusega |
  247. | 2025-07-05 | Lisatud `ulimits.nofile=65536` compose faili (parandab "Too many open files") |