OpenWebUI Praxistips

Salamimander

Commodore
Registriert
Okt. 2019
Beiträge
5.036
Hi,

Ich habe mir gerade mal OpenWebUI mit Anbindung an openrouter.ai installiert und habe mal Fragen rund um das Thema Datenschutz/RAG/Performance.


Erst die Eckdaten:
  • OpenWebUI und searngx laufen in einem stack
  • Ollama in einem weiteren
Beides auf einem 5700X ohne GPU.

Zielbild:
  • 1 Daily Modell für alles mögliche
  • 1 Coding Modell für HA/nodered usw.
  • 1 Free Modell analog zum Daily nur dümmer :D

Geplant sind erstmal zwei Nutzer, künftig vielleicht 4. Kostentechnisch so auf 20$ gedeckelt.

Wo ich jetzt ein wenig an mein Verständnislimit komme ist das RAG und das ganze Task gedöns. Natürlich sollen alle Modelle im Web suchen können und so wie ich das verstehe werden Titel und suchen von einem extra “Task Modell” erstellt. Performt mein lokales llmama 353b da noch ausreichend? Oder sollte ich das zB a Gemini Flash geben? Kost ja fast Nix…
Dann kommt noch das embedding aus dem RAG, das performt lokal leider null aber andererseits ist das auch wieder ein Datenschutz GAU das RAG an extern zu schicken, oder?

Hintergrund: ich will pro User 1-x Datenbanken für Basis Infos, damit der prompt nicht zu lang wird. Oder macht es ggf. doch Sinn diese Infos ins prompt zu packen? (Hardware Infos, Projekte, etc)
 
Salamimander schrieb:
Da werden deine User viel Geduld brauchen, wenn Du ein halbwegs gescheites Modell zur Verfügung stellen möchtest.

Apropos Modell:
Salamimander schrieb:
Ein solches LLM existiert nicht. Schau bei LMArena, welches Modell für dich den besten Kompromiss darstellt. Bei Inferenz auf einer solchen CPU willst du eigentlich bei kleineren und stärker quantisierten Modellen bleiben.

Sobald die Basis sitzt und die Erwartungen gemanaged worden sind, können wir über das Thema RAG reden.
 
  • Gefällt mir
Reaktionen: madmax2010
Ich habe leider nur bedingt verstanden, was das Problem ist. Ich versuche das einmal in Überschriften zu packen

Datenschutz:
Du hast OpenWebUI an openrouter (inklusive Gemini Flash) angebunden. Damit sendest du alle deine Anfragen in die ganze Welt. Grundsätzlich sollte vermieden werden darüber sensible Daten zu senden. Im unternehmerischen Kontext würde ich gar nicht drüber nachdenken, sowas einzurichten.

Performance:
Du musst einmal für dich definieren, was du mit "performt schlecht" meinst.
  • Braucht das Modelll zu lange zum Antworten?
  • Ist die Qualität der Antworten nicht akzeptabel?
  • oder gar beides?

mit "llmama 353b" meinst entweder llama 3.2 3b (ein sehr kleines Modell) oder llama 3.1 405b (ein sehr großes Modell). Du meinst wahrscheinlich ersteres, da für das große Modell schon ordentlich Infrastruktur vorhanden sein muss.
Modell mit 3b (Parametern) sind sehr kleine Modelle, welche in der Qualität der Antworten sehr schlecht sind. Für mich sind diese Modelle nur Spielerei.

Da du das System auf der CPU laufen lässt, ist die Konsequenz zusätzlich eine sehr lange Ausführungszeit
Also schlechte Qualität und schlechte Laufzeit.

RAG sehe ich nochmal separat, da hier auch die Qualität deiner Dokumente mit reinfließt.
 
  • Gefällt mir
Reaktionen: Backfisch
So, dann versuche es das auf zu droeseln:

Sorry klar, 3.2 3b natürlich. Mein lokales llm war schon da und soll/muss nicht zwangsläufig genutzt werden. Ich habe es zum einen für die RAG im Einsatz (Verarbeiten von pdfs usw) für die User DBs und zum anderen noch für mein paperless setup (ai parsing und taggen, etc).

Meine Frage bezog sich halt darauf, dass ich einigermaßen Performance will (Anfragen gehen generell an externe LLMs, dank openrouter ja wenigstens halbwegs anonym), allerdings will ich nicht, dass die websuchen und die rag daten an extern gehen, es sei denn die Infos helfen dem externen llm bei der Beantwortung (dH Vorabauswertung lokal). Zusätzlich gibt es noch die Aufgaben / Task KI, die aus der Anfrage suchen für searxng bastelt und Titel generiert für die Chats. Hier habe ich auch wenig Bedenken was Datenschutz angeht, da diese Infos ja komplett ohne Metadaten an externe LLMs gehen. Es bleibt halt die Frage, wie mit den RAG Infos umgehen ohne Performance zu verlieren? Welches lokale Modell eignet sich hier am besten um die User Infos auszuwerten und passende Häppchen a die externe KI zu geben oder ist das generell bedenklich und man kann gleich die Vector Daten durch externe LLMs erstellen lassen? (Wobei das erstellen für mich ausreichend schnell ist, das auslesen und verarbeiten beim suchen dauert einfach zu lange)

TL;DR:
  • LLM für Anfrage: zB Gemini 3 Pro (oder whatever)
  • LLM für Tasks: Gemini 2 Flash (Titel und searxng prompt generierung)
  • LLM für Dokumente einlesen (lokal): text-embedding-3-small

Problematisch / Sack lahm sind so, wieso auch immer, alle Anfragen mit websuche Richtung externes llm, weil er, obwohl ich testweise sogar die knowledge base deaktiviert habe, trotzdem ZUSAETZLICH mit meiner lokalen llm Instanz arbeitet. Ich verstehe nicht an welcher Stelle und wieso und auch nicht wieso es so langsam ist, wenn das verarbeiten ganzer pdf doch recht schnell geht
 
Naja, du kannst das schon Local machen, aber wie gesagt ist das nicht flott! und wenn du dann auch noch andere mit anbinden willst, wird es noch schwieriger.

Der 5700 ist auch nicht besonders geeignet, da seine Bandbreite zum RAM nicht besonders groß ist.
Besser und trotzdem recht günstig wäre zum Beispiel ein HP Z440, für den wären 128 GB ram auch nicht sooo teuer, da RDIMM
Obwohl die CPU deutlich älter ist, hat er eine schnellere Anbindung an den Arbeitsspeicher (Etwa doppelt so schnell)

Modelle ab 30B sind meiner Meinung nach der Sweetspot für localen Einsatz. Für spezielle EInsätze (z.B. coden) tun es teilweise auch 14B Modelle oder noch kleinere.
Es hilft bei der Qualität der Antworten mit kleinen Modellen nur englisch zu chatten.

Mit 128 GB RAM könntest du wahrscheinlich 3 Modelle im RAM vorhalten 30b Qualität, 14B coden und 7B geringe Qualität

Die Auswahl der Modelle ist schwierig und hängt von deine Anforderungen ab.
 
Irgendwie vorbei geantwortet, wenn auch nett gemeint. Ich will schon die Public LLMs nutzen, nur halt nicht für das Verarbeiten der RAC Daten ;)
 
Salamimander schrieb:
Anfragen gehen generell an externe LLMs, dank openrouter ja wenigstens halbwegs anonym

Nochmal zur Klarstellung, nehmen wir folgendes Szenario an:
Wenn du eine Tabelle mit Bestellungen hast. Diese Liste enthält typische Daten wie Namen, Adressen, Telefonnummern, Produkte und Umsätze. Diese Tabelle gibst du nun im Prompt mit oder holst diese aus der RAG Implementierung.
Und du jetzt die KI fragst, "Was waren meine Umsätze in den letzten drei Monaten?". Dann sendet du personenbezogene Daten sowohl an die Systeme von openrouter als auch dem LLM Anbieter und dort werden diese Daten auf irgendeine Art und Weise verarbeitet. Ob diese Daten dann gespeichert oder gar zum Training verwendet werden, ist dann ein zusätzliches Thema.
Openai wurde vor einigen Monaten dazu verdonnert, alle Anfragen bis auf weiteres zu speichern. Microsoft hat selbst mal gesagt, dass Behörden Zugang zu diesen Daten haben (unabhängig dessen, ob ein LLM gehosted wird)

Wenn du diese Informationen direkt im Prompt dem Anfrage LLM mitgibst, dann hast du bereits die Daten an Google und Gemini 3 Pro gesendet (um bei deinem Beispiel zu bleiben), völlig egal, ob später dein Task LLM oder Embedding LLM befragt wird.
Du müsstest an dieser Stelle schon ein lokales LLM einsetzen (Gemma3 27b, GPT-OSS:20b, QWEN3 coder30b, Mistral-small 24b )

Möchtest du bei den bekannten großen Namen bleiben ( wie bei dir Google Gemini 3 pro) und das verhindern, dann müsstest du schon sehr präzise Guardrails bauen. Ich weiß nicht ob OpenWebUI das abbilden kann ohne das Bauen von extra Pipelines. Auch müsstest du deine Anfragen so gestallten, dass dein Anfrage LLM diese Infos von vornherein nicht von dir erhält, also sowas wie "wieviel Umsatz hat Max Mustermann in meinem Shop generiert?", dürfte nicht gestellt werden.

Für dein embedding Modell kannst du nomic-embedded-text oder embeddinggemma nehmen ( das von dir genannte text-embedding-3-small gehört zu openai und wäre wieder kritisch im Sinne des Datenschutzes). Aber mach dir da nichts vor, es wird nicht annähernd so schnell sein, schon gar nicht ohne dedizierte GPU.

Ne Pipeline wäre zum besipiel:
->Anfrage an openrouter
-> Anfrage an Googe Gemini
-> Anfrage an gpt-oss:20b
->Anfrage an die RAG Instanz
-> RAG gibt Antwort
-> zurück an gpt-oss20b
-> gpt-oss20b bereitet die Daten auf ( was auch immer an sensitiven Daten rausgefiltert werden soll, aber dennoch sinnvoll als Antwort relevant bleibt)
-> und gibt es zurück an Gemini bzw dann über openrouter wieder zu dir

Zwischendurch kannst du Absicherungen implementieren, dass dass LLM nur Zugriff auf einen ganz bestimmten Endpunkt erhält (und nicht gleich die ganze Datenbank). Das hilft auch der Performance und ist wahrscheinlich mit ein Grund, warum dein System so lange braucht. Das LLM muss erst die Eingabe verarbeiten. Beim Suchen gibt das System dem LLM alle Ergebnisse als Kontext wieder mit und wird dann als Input erstmal verarbeitet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JumpingCat, Salamimander und Backfisch
Danke soweit, für MICH lese ich da raus, dass das verarbeiten der rohdaten lokal erfolgen wird, das füttern mit den Kontext Daten aber bereits Remote erfolgen kann, da ich keinen Vorteil habe es lokal zu tun ohne Riesen Aufwand. Und ob meine Frau ihr Zeug direkt OpenAI gibt, sondern über Umwege ist dann auch egal, wobei der Umweg über openrouter wenigstens “etwas” anonymer ist, da keinen Login zuzuordnen. Danke fürs erklären, hat mich weiter gebracht :)
 
Salamimander schrieb:
Wo ich jetzt ein wenig an mein Verständnislimit komme ist das RAG und das ganze Task gedöns. Natürlich sollen alle Modelle im Web suchen können und so wie ich das verstehe werden Titel und suchen von einem extra “Task Modell” erstellt. Performt mein lokales llmama 353b da noch ausreichend? Oder sollte ich das zB a Gemini Flash geben? Kost ja fast Nix…
Dann kommt noch das embedding aus dem RAG, das performt lokal leider null aber andererseits ist das auch wieder ein Datenschutz GAU das RAG an extern zu schicken, oder?
Was genau möchtest du mit RAG machen? Alles in der Open WebUI? D.h. Dokument(e) im Prompt oder als Collection hochladen und dann dazu Fragen stellen?

Man muss sagen, dass die RAG Implementierung in der Open WebUI eher rudimentär ist. Du musst schon paar Einstellungen in
1765997228230.png

vornehmen. Hier meine ich:
  • Context Extraction Engine -> Tike wäre meine Empfehlung
  • Chunk Size
  • Chunk Overlap
  • Embedding Model
  • RAG-Template -> ist sehr wichtig - die Voreinstellung ist nicht so dolle

RAG ist schon komplexer als man denkt. Man kann nicht die gleichen Parameter, die ich oben aufgelistet habe, für alle Dokumenttypen gleich einsetzen.

Interessant ist https://github.com/HKUDS/LightRAG . Aber das ist nicht Multiuserfähig. Ich habe mir das vor Monaten angesehen und ich denke nicht, dass sich hier was verändert hat.
 
Ja ich wollte das integrierte nehmen. Hier reicht es tatsächlich einfach Dokumente wie pdf zu uploaden. In der aktuellen Version kann man sogar gewisse Infos manuell als TXT zum RAG dazu packen, auch praktisch :). Und ja, alles recht komplex, ich wollte mir nur die 25€ bei ChatGPT sparen und gleichzeitig mehrere User abfruehstuecken. Mal sehen wie weit ich da mit 25$ komme. Die Modelle teste ich durch, sowohl kosten als auch Nutzen. Die Auto Funktion wirkt auch ganz okay, gerade wenn der Cache sich mal aufgebaut hat auch bezahlbar
 
Naja. Zum parsen dann vielleicht so was wie docling. Um die Ergebnisse lokal zu verarbeiten brauchst du auch wieder eine starke GPU wenn du Wert auf Privatsphäre legst.
 
Ja das ist es mir nicht wert. (Alleine die Stromkosten…). RAM habe ich mit 128GB genug aber der hilft hier auch nicht weiter.
 
RAG.... das RAG von OpenWebUI ist ganz normales naive RAG. Sprich das Dokument wird in Schnipsel aufgeteilt und die X (Setting) besten werden in den Kontext eingefügt. Ist der richtige Schnipsel nicht dabei - oder noch häufiger, verteilt sich die für die Antwort notwendige Informationen über angrenzende Schnipsel, dann schlägt die Aktion fehl. Ein "Fasse mir XYZ zusammen" schlägt bei naive RAG immer fehl, weil eben nicht alles als Kontext hinzugefügt werden kann. Das funktioniert nur dann noch, wenn die Daten auch vorher schon im Modell beim Training enthalten sind.
Was ich damit sagen will, überbewerte einfaches RAG bitte nicht. An vielen Stellen ist das einfach .... Grütze.
 
  • Gefällt mir
Reaktionen: Backfisch
Für sowas wie pdf einlernen und als dummes Gedächtnis reicht es aber noch. Ich will halt vermeiden, jedes Mal der Ai sagen zu müssen, welche gpu ich habe oder welches os (als Beispiel) und das klappt aktuell ganz gut. Als Allheilmittel dient es natürlich nicht :)
 
Einzelne Informationen wie dein GPU und OS-Beispiel kannst du auch gut in den Systemprompt packen. (Machst du bei OpenWebUI als Nutzer bei dir selbst.) Da habe ich so etwas drin wie z.B., dass ich nicht Nano nutze, sondern vi als Editor. Dafür würde ich nicht unbedingt Chunks aus dem RAG verwenden. Wenn die Information, die du suchst, sehr kompakt lokalisierbar ist, dann funktioniert RAG gut. Ist dein PDF 800 Seiten lang wirds spannend. Steckt die Info in den Grafiken, dann klappt es schon wieder nicht mehr.
Probiere es aus! Ich will dir RAG nicht ausreden. Es hat schon seine Daseinsberechtigung. Für mich ist RAG aktuell aber noch die KI-Technik, die am wenigsten abliefert. Aber da kommen gefühlt auch alle 2 Monate neue Papers zu raus, die neue Methodiken vorschlagen.
 
  • Gefällt mir
Reaktionen: Backfisch
Azdak schrieb:
Für mich ist RAG aktuell aber noch die KI-Technik, die am wenigsten abliefert. Aber da kommen gefühlt auch alle 2 Monate neue Papers zu raus, die neue Methodiken vorschlagen.
Danke. Mein anfänglicher Enthusiasmus für diese Technologie ist mittlerweile auch abgeklungen. Zumeist vereinigen RAG-LLMs die Nachteile zweier Welten: Die mangelhafte Flexibilität einer Datenbank mit der mangelhaften Präzision eines LLMs.
 
Zurück
Oben