[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portal-settings:stajic:de":3,"public-menus:all":37,"post:ollama-is-not-the-product-building-production-ready-open-llm-applications:de":220,"related:post:ollama-is-not-the-product-building-production-ready-open-llm-applications:de:1":1197},{"statusCode":4,"data":5,"message":36},200,{"tenantId":6,"lang":7,"defaultLang":7,"siteUrl":8,"contactEmail":9,"brandName":10,"logoUrl":11,"siteName":10,"siteDescription":12,"ogImage":9,"robotsIndex":13,"socialLinks":9,"reservedSlugs":9,"seoPolicy":14},"stajic","de","https:\u002F\u002Fstajic.de",null,"Stajic Platform","\u002FLogo_Planet.svg","Stajic Portal",true,{"branding":15,"relatedContent":16,"crossDomainLinks":17},{"logoUrl":11},{"enabled":13},[18,21,24,27,30,33],{"url":19,"label":20,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Ffigure.rocks","figure.rocks",{"url":22,"label":23,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Floving.rocks","loving.rocks",{"url":25,"label":26,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.com","bazify.com",{"url":28,"label":29,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.de","bazify.de",{"url":31,"label":32,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.at","bazify.at",{"url":34,"label":35,"isActive":13,"showInFooter":13,"includeInSameAs":13},"https:\u002F\u002Fbazify.ba","bazify.ba","Portal settings resolved",[38,44],{"id":39,"name":40,"location":41,"isActive":13,"isDefault":42,"items":43},1,"main-navigation","header",false,[],{"id":45,"name":46,"location":47,"isActive":13,"isDefault":13,"items":48},4,"main-menu","sidebar",[49,65,78,92,102,117,132],{"id":50,"title":51,"url":59,"target":60,"icon":61,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":63,"portfolioId":9,"children":64},"item-18",{"de":52,"en":53,"es":54,"fr":55,"it":53,"ru":56,"sr":57,"zh":58},"Startseite","Home","Inicio","Accueil","Главная","Почетна","首页","\u002Ffull-stack-web-developer-munich-performance-seo-and-maintainable-builds","_self","i-lucide-home","page",111,[],{"id":66,"title":67,"url":74,"target":60,"icon":75,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":76,"portfolioId":9,"children":77},"item-22",{"de":68,"en":68,"es":69,"fr":68,"it":70,"ru":71,"sr":72,"zh":73},"Vision","Visión","Visione","Видение","Визија","想象","\u002Fueber-uns-webdesign-muenchen-webaplikation","i-lucide-eye",113,[],{"id":79,"title":80,"url":88,"target":60,"icon":89,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":90,"portfolioId":9,"children":91},"item-19",{"de":81,"en":82,"es":83,"fr":82,"it":84,"ru":85,"sr":86,"zh":87},"Leistungen","Services","Servicios","Servizi","Услуги","Услуге","服务","\u002Fservices-dienstleistungen-muenchen","i-lucide-wrench",116,[],{"id":93,"title":94,"url":98,"target":60,"icon":99,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":100,"portfolioId":9,"children":101},"item-23",{"de":95,"en":95,"es":95,"fr":95,"it":95,"ru":96,"sr":96,"zh":97},"Blog","Блог","博客","\u002Fblog","i-lucide-book-open",112,[],{"id":103,"title":104,"url":113,"target":60,"icon":114,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":115,"portfolioId":9,"children":116},"item-32",{"de":105,"en":106,"es":107,"fr":108,"it":109,"ru":110,"sr":111,"zh":112},"Neue Technologien","New Technologies","Nuevas tecnologías","Nouvelles technologies","Nuove tecnologie","Новые технологии","Нове технологије","新技术！","\u002Fneue-webtechnologien","i-lucide-sparkles",122,[],{"id":118,"title":119,"url":128,"target":60,"icon":129,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":130,"portfolioId":9,"children":131},"item-20",{"de":120,"en":121,"es":122,"fr":123,"it":124,"ru":125,"sr":126,"zh":127},"Kontakt","Contact us!","Contacto","Contact","Contatto","Контакт","Контактирајте нас","联系我们！","\u002Fcontact","i-lucide-mail",115,[],{"id":133,"title":134,"url":143,"target":60,"icon":144,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":145,"portfolioId":9,"children":146},"item-21",{"de":135,"en":136,"es":137,"fr":138,"it":139,"ru":140,"sr":141,"zh":142},"Unsere Arbeit","Our Work","Nuestro trabajo","Nos réalisations","I nostri lavori","Наши работы","Наши радови","文件夹","\u002Fportfolio","i-lucide-briefcase",114,[147,160,174,190,205],{"id":148,"title":149,"url":143,"target":60,"icon":158,"isActive":13,"type":62,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":145,"portfolioId":9,"children":159},"item-24",{"de":150,"en":151,"es":152,"fr":153,"it":154,"ru":155,"sr":156,"zh":157},"Alle Projekte","All Projects","Todos los proyectos","Tous les projets","Tutti i progetti","Все проекты","Сви пројекти","所有项目","i-lucide-grid-3x3",[],{"id":161,"title":162,"url":170,"target":60,"icon":171,"isActive":13,"type":172,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":9,"children":173},"item-29",{"de":163,"en":164,"es":165,"fr":166,"it":167,"ru":168,"sr":169,"zh":142},"Local Roots, Global Reach","Local Roots - Global Reach","Empresa local ","Entreprise locale","Azienda locale","Местная компания","Локално предузеће глобално тржиште","\u002Fportfolio\u002Flocal-roots-global-reach-communication-media-systems-for-modern-business","i-lucide-globe-2","custom",[],{"id":175,"title":176,"url":185,"target":60,"icon":186,"isActive":13,"type":187,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":188,"children":189},"menu-2916d060-8681-482a-af9a-c107a8bc30d8",{"de":177,"en":178,"es":179,"fr":180,"it":181,"ru":182,"sr":183,"zh":184},"Von Rohdaten zu verifizierbarem KI-Kontext: Eine praktische Architektur für agentenbereite Informationen","From Raw Data to Verifiable AI Context:","De datos sin procesar a contexto de IA verificable: una arquitectura práctica para información lista para agentes","Des données brutes au contexte d'IA vérifiable : une architecture pratique pour des informations prêtes pour les agents","Dai dati grezzi a un contesto IA verificabile: Un'architettura pratica per informazioni pronte per gli agenti","От необработанных данных к верифицируемому контексту ИИ: практическая архитектура информации, готовой для агентов","Od sirovih podataka do proverljivog AI konteksta: Praktična arhitektura za informacije spremne za agente","从原始数据到可验证的 AI 上下文：面向智能体就绪信息的实用架构","\u002Fportfolio\u002Ffrom-raw-data-to-verifiable-ai-context-a-practical-architecture-for-agent-ready-information","i-lucide-database","portfolio",22,[],{"id":191,"title":192,"url":201,"target":60,"icon":202,"isActive":13,"type":187,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":203,"children":204},"menu-e2061cd7-ff53-49d5-a0e8-3d49090577c0",{"de":193,"en":194,"es":195,"fr":196,"it":197,"ru":198,"sr":199,"zh":200},"Präsenzplattformen — Unternehmenskommunikation","Presence Platforms — Enterprise Communication","Plataformas de presencia — Comunicación empresarial","Plateformes de présence — Communication d'entreprise","Presence Platforms — Comunicazione aziendale","Платформы присутствия — Корпоративные коммуникации","Presence platforme — Poslovna komunikacija","Presence 平台 — 企业通信","\u002Fportfolio\u002Fpresence-platforms-enterprise-communication-that-wins-without-competing","i-lucide-badge-percent",21,[],{"id":206,"title":207,"url":216,"target":60,"icon":217,"isActive":13,"type":187,"productId":9,"categoryId":9,"shopCategoryId":9,"articleId":9,"pageId":9,"portfolioId":218,"children":219},"menu-a781582e-e90d-418e-b8c9-b070bc37c37e",{"de":208,"en":209,"es":210,"fr":211,"it":212,"ru":213,"sr":214,"zh":215},"Maximierung des POS-ROI durch Konsistenz","Maximizing POS ROI Through Consistent","Maximizar el ROI del POS a través de constante","Maximiser le ROI du PDV grâce à la cohérence","Massimizzare il ROI del POS attraverso costante","Максимизация ROI POS за счет последовательного","Maksimizacija POS ROI-ja kroz dosledno","通过持续最大化 POS 投资回报率","\u002Fportfolio\u002Ffrom-vision-to-value-maximizing-pos-roi-through-consistent-ci-creation-and-strategic-branding","i-lucide-briefcase-business",11,[],{"statusCode":4,"data":221,"message":1196},{"id":222,"title":223,"slug":224,"content":225,"contentJson":226,"excerpt":625,"featuredImage":626,"featuredImageAlt":627,"featuredImageCaption":9,"featuredImageTitle":9,"featuredImageCopyright":9,"featuredImageAuthor":9,"featuredImageSourceUrl":9,"featuredImageLicense":9,"featuredImageIsAiGenerated":42,"status":628,"publishedAt":629,"createdAt":630,"updatedAt":631,"seoLocalePaths":632,"categories":641,"author":662,"translations":667},"459","Ollama ist nicht das Produkt: Entwicklung produktionsreifer Open-LLM-Anwendungen","ollama-is-not-the-product-building-production-ready-open-llm-applications","\u003Ch1>Ollama ist nicht das Produkt: Produktionsreife Open-LLM-Anwendungen entwickeln\u003C\u002Fh1>\n\u003Cp>Werkzeuge wie \u003Cb>Ollama\u003C\u002Fb> haben die lokale LLM-Experimentierung nahezu reibungslos gemacht. Installieren Sie die Laufzeitumgebung, laden Sie ein Modell, senden Sie eine Eingabeaufforderung, und ein lokaler Assistent antwortet in Sekunden. Das ist nützlich. Es ist auch der einfachste Teil der Reise.\u003C\u002Fp>\n\u003Cp>Eine Terminal-Demo ist keine Anwendung. Ein lokales Modell ist kein Produkt. Eine produktive Open-LLM-Anwendung benötigt kontrollierte Datenerfassung, Abruf, Berechtigungen, Bewertung, Protokollierung, Anbieterabstraktion, Bereitstellungsdisziplin und einen Benutzerworkflow, der ein echtes Geschäftsproblem löst.\u003C\u002Fp>\n\u003Cp>Die Kernthese ist einfach: \u003Cb>Ollama ist eine Laufzeitumgebung, nicht das Produkt\u003C\u002Fb>. Das Produkt lebt in der Anwendungsschicht um das Modell herum. Diese Schicht entscheidet, welche Dokumente sichtbar sind, welche Abschnitte abgerufen werden, welche Eingabeaufforderungen verwendet werden, wie Antworten bewertet werden, wie Fehler protokolliert werden und ob das System im täglichen Betrieb vertrauenswürdig ist.\u003C\u002Fp>\n\u003Cp>Hier wird lokale KI für Teams interessant, die private Assistenten, interne Wissenswerkzeuge, LLM-gestützte SaaS-Funktionen oder Unternehmens-Workflow-Copiloten entwickeln. Das Modell kann lokal laufen, aber Datenschutz, Zuverlässigkeit und Geschäftswert existieren nur, wenn das gesamte System ordnungsgemäß entwickelt ist.\u003C\u002Fp>\n\u003Ch2>Ollama ist eine Laufzeitumgebung, kein Produkt\u003C\u002Fh2>\n\u003Cp>Ollama eignet sich hervorragend zum Ausführen und Bereitstellen offener Modelle lokal. Es ist besonders stark für Erkundungen, Entwickler-Workflows, Proof-of-Concepts und Teams, die das Modellverhalten testen möchten, ohne sich sofort auf einen Cloud-Anbieter festzulegen. Es ermöglicht die lokale Modellinteraktion über APIs und Kompatibilitätsschichten, die es einfacher machen, bestehende OpenAI-ähnliche Werkzeuge zu verbinden.\u003C\u002Fp>\n\u003Cp>Das bedeutet nicht, dass Ollama das Anwendungsproblem löst. Es weiß nicht automatisch, welche Unternehmensdokumente ein Benutzer lesen darf. Es erstellt keine Mandantentrennung, Dokumentenversionierung, Prüfpfade, Quellenangaben, Bewertungsdatensätze oder geschäftsspezifische UI-Workflows. Diese Verantwortlichkeiten bleiben bei der Anwendungsarchitektur.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Ollama hilft bei:\u003C\u002Fb> lokaler Modellausführung, schneller Experimentierung, API-basiertem Modellzugriff, Offline-First-PoCs und Entwicklerproduktivität.\u003C\u002Fli>\u003Cli>\u003Cb>Ollama löst nicht von selbst:\u003C\u002Fb> Zugriffskontrolle, RAG-Qualität, Dokumentenlebenszyklus, Mandantengrenzen, Bewertung, Prüfprotokollierung, Überwachung, Fallback-Verhalten oder Unternehmens-Workflow-Design.\u003C\u002Fli>\u003Cli>\u003Cb>Der architektonische Fehler:\u003C\u002Fb> lokale Inferenz so zu behandeln, als wäre sie bereits ein sicheres KI-Produkt.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cblockquote class=\"border-l-4 border-gray-300 pl-4 italic\">Das Modell ist der einfachste Teil. Die Anwendungsschicht ist der Ort, an dem der Produktwert liegt.\u003Ccite class=\"block mt-2 text-sm\">— Architekturprinzip\u003C\u002Fcite>\u003C\u002Fblockquote>\n\u003Ch2>Demo, PoC und Produktion sind unterschiedliche Phasen\u003C\u002Fh2>\n\u003Cp>Viele Open-LLM-Initiativen scheitern, weil Teams eine funktionierende Demo mit einer Produktionsfähigkeit verwechseln. Der Unterschied ist nicht kosmetisch. Jede Reifegradstufe hat ein anderes Ziel, ein anderes Risikoprofil und eine andere technische Anforderung.\u003C\u002Fp>\n\u003Ctable class=\"w-full border-collapse\">\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Phase\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was sie beweist\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Typisches Setup\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Was noch fehlt\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Demo\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ein Modell kann lokal auf eine Eingabeaufforderung antworten.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ollama auf einem Laptop, ein Modell, eine Eingabeaufforderung, keine echte Datenkontrolle.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Berechtigungen, Abruf, Protokolle, Bewertung, Bereitstellung, Überwachung, Benutzerworkflow.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">PoC\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ein kleines kontrolliertes System kann Fragen zu ausgewählten Dokumenten oder Workflows beantworten.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einfache Weboberfläche, Erfassungsskript, Vektorsuche, begrenzte Benutzer, begrenzter Dokumentenumfang.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Skalierung, Governance, Testdatensätze, Fallback-Strategie, Prüfbarkeit, Support-Modell.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Produktion\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Mehrere Benutzer können das System sicher und wiederholt in der realen Arbeit nutzen.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Authentifizierte App, Mandantentrennung, RAG-Pipeline, Beobachtbarkeit, Anbieterabstraktion, Backups, Release-Prozess.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Kontinuierliche Verbesserung, Erweiterung der Bewertung, operative Reife.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Ein PoC kann absichtlich klein sein. Produktion kann nicht absichtlich blind sein. Sobald echte Benutzer, private Daten, Geschäftsentscheidungen und Compliance-Erwartungen in das System eintreten, muss die Architektur explizit werden.\u003C\u002Fp>\n\u003Ch2>Wo RAG ins Spiel kommt\u003C\u002Fh2>\n\u003Cp>\u003Cb>Retrieval-Augmented Generation\u003C\u002Fb> ist die häufigste Brücke zwischen einem Sprachmodell und privatem Geschäftswissen. Das Modell kennt nicht magisch interne Dokumente, Verträge, Tickets, Produktspezifikationen oder Runbooks. Die Anwendung muss den relevanten Kontext abrufen, bevor sie das Modell um eine Antwort bittet.\u003C\u002Fp>\n\u003Cp>Ein praktischer RAG-Ablauf sieht so aus:\u003C\u002Fp>\n\u003Col>\u003Cli>Dokumente werden hochgeladen oder aus kontrollierten Quellen synchronisiert.\u003C\u002Fli>\u003Cli>Text wird extrahiert, bereinigt und in Abschnitte aufgeteilt.\u003C\u002Fli>\u003Cli>Abschnitte erhalten Metadaten wie Mandant, Eigentümer, Dokumentenversion, Quell-URL, Zugriffsbereich und Zeitstempel.\u003C\u002Fli>\u003Cli>Für jeden Abschnitt werden Embeddings generiert.\u003C\u002Fli>\u003Cli>Vektoren werden in pgvector, Qdrant oder einer anderen Abrufschicht gespeichert.\u003C\u002Fli>\u003Cli>Zur Abfragezeit prüft die Anwendung die Berechtigungen vor dem Abruf.\u003C\u002Fli>\u003Cli>Relevante Abschnitte werden mit Ähnlichkeitssuche und Metadatenfiltern abgerufen.\u003C\u002Fli>\u003Cli>Der Prompt-Builder injiziert den ausgewählten Kontext in die Modellanfrage.\u003C\u002Fli>\u003Cli>Die Antwort wird mit Zitaten, Konfidenzgrenzen und einem No-Answer-Fallback generiert, wenn der Abruf schwach ist.\u003C\u002Fli>\u003C\u002Fol>\n\u003Cp>RAG reduziert Halluzinationen, beseitigt sie jedoch nicht. Eine schlechte Chunking-Strategie, schwache Metadaten, fehlende Berechtigungsfilter, minderwertige Embeddings oder eine zu breite Abfrage können immer noch überzeugende, aber falsche Antworten liefern. Ernsthafte RAG-Systeme benötigen Schwellenwerte, Quellenangaben, Abfrageprotokolle und Evaluierung.\u003C\u002Fp>\n\u003Ch2>Eine praktische lokale Open-LLM-Architektur\u003C\u002Fh2>\n\u003Cp>Ein realistischer Produktionsweg erfordert keine exotische Infrastruktur. Für viele Teams kann eine solide erste Architektur einen normalen Web-Stack verwenden: Nuxt für das Frontend, eine Nitro- oder Node-API, PostgreSQL als System of Record, pgvector für die Abfrage, Ollama als lokale Laufzeitumgebung, Prisma für den Datenzugriff und Hintergrund-Worker für die Aufnahme und Embeddings.\u003C\u002Fp>\n\u003Cpre class=\"code-block\">\u003Ccode>Benutzerfrage | v\nFrontend-UI | v\nAPI \u002F Backend | +--&gt; Authentifizierung +--&gt; Mandanten- und Rollenberechtigungsprüfung | v\nAbfrageschicht | +--&gt; PostgreSQL-Metadaten +--&gt; pgvector- oder Qdrant-Vektorsuche +--&gt; Ähnlichkeitsschwellenwert | v\nPrompt-Ersteller | +--&gt; System-Prompt +--&gt; abgerufene Chunks +--&gt; Quellenverweise +--&gt; Keine-Antwort-Regeln | v\nLLM-Anbieterabstraktion | +--&gt; Ollama \u002F lokales Modell +--&gt; Cloud-Modell-Fallback +--&gt; zukünftige selbstgehostete Laufzeitumgebung | v\nAntwort mit Quellen | v\nProtokolle, Ablaufverfolgungen, Metriken, Evaluierungsdatensatz\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Diese Architektur hält das Modell austauschbar. Ollama kann die erste Laufzeitumgebung sein, aber das System sollte nicht an eine einzige Inferenz-Engine gebunden sein. Eine saubere Architektur trennt Benutzerworkflow, Abfrage, Prompt-Konstruktion, Modellanbieter und Beobachtbarkeit.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Frontend:\u003C\u002Fb> Nuxt oder eine andere Weboberfläche für authentifizierte Benutzerworkflows.\u003C\u002Fli>\u003Cli>\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js oder FastAPI für Orchestrierung, Berechtigungen und Anbieter-Routing.\u003C\u002Fli>\u003Cli>\u003Cb>Datenbank:\u003C\u002Fb> PostgreSQL für Dokumente, Benutzer, Mandanten, Rollen, Prompts, Protokolle und Metadaten.\u003C\u002Fli>\u003Cli>\u003Cb>Vektorsuche:\u003C\u002Fb> pgvector für einfache integrierte Abfrage oder Qdrant, wenn die Vektorsuche zu einem dedizierten Dienst wird.\u003C\u002Fli>\u003Cli>\u003Cb>Modell-Laufzeitumgebung:\u003C\u002Fb> Ollama für lokale Ausführung, llama.cpp-Server für leichtgewichtiges Serving oder vLLM für GPU-Serving mit höherem Durchsatz.\u003C\u002Fli>\u003Cli>\u003Cb>Speicher:\u003C\u002Fb> lokales Dateisystem oder S3-kompatibler Objektspeicher für hochgeladene Dateien und extrahierte Artefakte.\u003C\u002Fli>\u003Cli>\u003Cb>Worker:\u003C\u002Fb> Hintergrundaufnahme, Chunking, Embedding, Neuindizierung und Dokumentenversionsverarbeitung.\u003C\u002Fli>\u003Cli>\u003Cb>Beobachtbarkeit:\u003C\u002Fb> Protokolle, Metriken, Prompt-Ablaufverfolgungen, Abfrage-Ablaufverfolgungen, Latenzverfolgung und Evaluierungsergebnisse.\u003C\u002Fli>\u003C\u002Ful>\n\u003Ch2>Die Checkliste für die Produktionsreife\u003C\u002Fh2>\n\u003Cp>Die folgende Checkliste ist der Unterschied zwischen einer lokalen Modelldemo und einer nutzbaren Open-LLM-Anwendung:\u003C\u002Fp>\n\u003Cul>\u003Cli>Jedes Dokument und jeder Chunk hat eine tenant_id.\u003C\u002Fli>\u003Cli>Die Abfrage wird blockiert, bis Benutzer- und Rollenberechtigungen überprüft wurden.\u003C\u002Fli>\u003Cli>Dokumente enthalten Metadaten, Quelle, Eigentümer, Version, Lebenszyklusstatus und Aufbewahrungsrichtlinie.\u003C\u002Fli>\u003Cli>Die Chunking-Strategie ist dokumentiert und an echten Dokumenten getestet.\u003C\u002Fli>\u003Cli>Die Auswahl des Embedding-Modells ist explizit und versioniert.\u003C\u002Fli>\u003Cli>Die Vektorindexkonfiguration ist reproduzierbar.\u003C\u002Fli>\u003Cli>Ein Ähnlichkeitsschwellenwert verhindert, dass schwacher Kontext blind verwendet wird.\u003C\u002Fli>\u003Cli>Antworten enthalten nach Möglichkeit Quellenangaben oder Quellenverweise.\u003C\u002Fli>\u003Cli>Ein Keine-Antwort-Fallback wird verwendet, wenn die Abfragesicherheit zu gering ist.\u003C\u002Fli>\u003Cli>Prompt-Vorlagen sind versioniert und release-kontrolliert.\u003C\u002Fli>\u003Cli>Die LLM-Anbieterabstraktion wird von Anfang an aufgebaut.\u003C\u002Fli>\u003Cli>Strukturierte Ausgaben werden vor der weiteren Verwendung validiert.\u003C\u002Fli>\u003Cli>Der Evaluierungsdatensatz enthält echte Fragen, erwartete Quellen und inakzeptable Antworten.\u003C\u002Fli>\u003Cli>Abfrageprotokolle zeigen, welche Chunks für jede Antwort verwendet wurden.\u003C\u002Fli>\u003Cli>Latenz, Token-Nutzung, GPU\u002FCPU-Auslastung und Fehlerraten werden überwacht.\u003C\u002Fli>\u003Cli>Datenschutz- und Aufbewahrungsregeln decken Uploads, extrahierten Text, Chunks, Embeddings, Prompts, Antworten und Protokolle ab.\u003C\u002Fli>\u003Cli>Bereitstellungs-, Backup-, Wiederherstellungs-, Rollback- und Incident-Pfade sind dokumentiert.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Dies steht in direktem Zusammenhang mit \u003Ca href=\"\u002Fde\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa>: Nützliche KI ist nicht nur eine Modellentscheidung. Es ist Lieferdisziplin, Nachweise, Kontrollen, Metriken und operative Verantwortung.\u003C\u002Fp>\n\u003Ch2>Anbieterabstraktion: Heiraten Sie kein Modell\u003C\u002Fh2>\n\u003Cp>Lokale Modelle sind wertvoll für datenschutzsensible Anwendungsfälle, Offline-Szenarien, Kostenkontrolle und interne Experimente. Cloud-Modelle können für schwieriges Denken, Programmierung, mehrsprachige Genauigkeit oder multimodale Arbeit immer noch stärker sein. Eine Produktionsanwendung sollte kein Modell als permanente Infrastruktur behandeln.\u003C\u002Fp>\n\u003Cp>Eine Anbieterabstraktion ermöglicht es demselben Anwendungsworkflow, Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM oder einen anderen selbstgehosteten Endpunkt aufzurufen, ohne das Produkt umschreiben zu müssen. Die Anwendung entscheidet über den Anbieter basierend auf Anwendungsfall, Datensensitivität, Latenz, Kosten und Qualitätsanforderungen.\u003C\u002Fp>\n\u003Cpre class=\"code-block\">\u003Ccode>type LlmProvider = &quot;ollama&quot; | &quot;openai&quot; | &quot;gemini&quot; | &quot;anthropic&quot; | &quot;vllm&quot;; type ChatInput = { provider: LlmProvider; model: string; tenantId: string; userId: string; question: string; context: Array&lt;{ chunkId: string; sourceTitle: string; text: string; }&gt;;\n}; async function chat(input: ChatInput) { await assertUserCanAccessContext(input.userId, input.context); const messages = buildRagMessages({ question: input.question, context: input.context, rules: [ &quot;Antworten Sie nach Möglichkeit nur aus dem bereitgestellten Kontext.&quot;, &quot;Quellentitel angeben.&quot;, &quot;Sagen Sie, wenn der Kontext nicht ausreicht.&quot; ] }); return llm.chat({ provider: input.provider, model: input.model, messages, trace: { tenantId: input.tenantId, userId: input.userId, promptVersion: &quot;rag-v3.2&quot; } });\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Die Kernidee ist nicht die TypeScript-Syntax. Die Kernidee ist die Grenze. Die Anwendung besitzt Berechtigungen, Abfrage, Prompt-Regeln, Ablaufverfolgung und Evaluierung. Der Anbieter erzeugt nur die Modellausgabe.\u003C\u002Fp>\n\u003Ch2>pgvector vs Qdrant\u003C\u002Fh2>\n\u003Cp>Für viele Open-LLM-Anwendungen ist die Entscheidung für den Vektorspeicher am Anfang einfach: Wenn PostgreSQL bereits Ihr System of Record ist, ist \u003Cb>pgvector\u003C\u002Fb> ein starker Ausgangspunkt. Es hält Metadaten, Berechtigungen, Dokumentenaufzeichnungen und Vektoren nahe beieinander. Das reduziert die betriebliche Komplexität.\u003C\u002Fp>\n\u003Cp>\u003Cb>Qdrant\u003C\u002Fb> wird attraktiver, wenn die Vektorsuche zu einem dedizierten Dienst werden muss: größerer Abfrageumfang, erweiterte Filterung, spezialisierte Indizierung, hybride Suchmuster oder unabhängige Skalierung der Abfrageinfrastruktur.\u003C\u002Fp>\n\u003Ctable class=\"w-full border-collapse\">\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Option\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Beste Passform\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Stärken\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Abwägungen\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">pgvector\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">PoCs, frühe Produktion, Systeme, die bereits auf PostgreSQL basieren.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einzelne Datenbank, SQL-Joins, ACID-Verhalten, einfachere Operationen, Metadaten nahe an Vektoren.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Weniger spezialisiert als eine dedizierte Vektordatenbank bei großem Abrufumfang.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Qdrant\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Dedizierte semantische Suchdienste, größere Vektor-Workloads, erweiterte Filter- und Abrufmuster.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Zweckgebundene Vektorsuche, starkes Filtermodel, unabhängige Skalierung, abruforientierte APIs.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Fügt eine weitere Infrastrukturkomponente und operative Oberfläche hinzu.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Einfach starten\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Die meisten Unternehmens-Teams beginnen mit privaten RAG-Anwendungen.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Geringeres Architekturrisiko, schnellere Auslieferung, einfacherer Prüfpfad.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Möglicherweise später Migration erforderlich, wenn der Abruf zentral und hochskalierend wird.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Eine praktische Regel: Beginnen Sie mit pgvector, wenn PostgreSQL bereits Ihre Geschäftsdaten verwaltet und der Abrufumfang moderat ist. Wechseln Sie zu Qdrant, wenn die Vektorsuche zu einer eigenen Produktfähigkeit wird.\u003C\u002Fp>\n\u003Ch2>Realitätscheck zu Sicherheit und Datenschutz\u003C\u002Fh2>\n\u003Cp>Lokale Inferenz bedeutet nicht automatisch sichere KI. Es bedeutet nur, dass die Modellausführung lokal erfolgen kann. Der gesamte Datenpfad ist weiterhin relevant: hochgeladene Dateien, extrahierter Text, Chunks, Embeddings, Protokolle, Eingabeaufforderungen, Antworten, Backups, Entwicklerzugriff, Verwaltungstools und Analyse-Exporte.\u003C\u002Fp>\n\u003Cp>Auch Embeddings verdienen Aufmerksamkeit. Sie sind nicht das Originaldokument, repräsentieren aber dennoch Informationen, die aus sensiblen Inhalten abgeleitet wurden. Behandeln Sie sie als Teil des geschützten Datenpfads, insbesondere wenn sie mit Metadaten, Quellaufzeichnungen, Benutzerabfragen oder Mandantenkennungen verknüpft sind.\u003C\u002Fp>\n\u003Cul>\u003Cli>Indizieren Sie keine Dokumente, bevor die Zugriffsregeln bekannt sind.\u003C\u002Fli>\u003Cli>Rufen Sie keine Chunks ohne Mandanten- und Rollenfilter ab.\u003C\u002Fli>\u003Cli>Protokollieren Sie keine vollständigen Eingabeaufforderungen und Antworten ohne Aufbewahrungsregeln.\u003C\u002Fli>\u003Cli>Senden Sie keinen sensiblen Kontext an ein Cloud-Modell, es sei denn, die Richtlinie erlaubt es.\u003C\u002Fli>\u003Cli>Gehen Sie nicht davon aus, dass lokal gleich DSGVO-konform ist; die Konformität hängt vom gesamten Verarbeitungsdesign ab.\u003C\u002Fli>\u003Cli>Lassen Sie nicht zu, dass Evaluierungs- und Debugging-Kopien zu unkontrollierten Schattendatensätzen werden.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Hier kommt die \u003Ca href=\"\u002Fde\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">Multi-Instanz-SaaS-Architektur\u003C\u002Fa> ins Spiel. Wenn Mandanten, Rollen, Datenbesitz und operative Grenzen schwach sind, kann das Hinzufügen eines lokalen LLM das Risiko verstärken, anstatt es zu reduzieren.\u003C\u002Fp>\n\u003Ch2>Evaluierung ist nicht optional\u003C\u002Fh2>\n\u003Cp>Eine Open-LLM-Produktionsanwendung benötigt eine Evaluierungsschleife. Ohne sie haben Teams nur Anekdoten. Ein paar gute Demo-Antworten beweisen nicht, dass der Abruf funktioniert, dass die Eingabeaufforderung stabil ist oder dass sich das Modell im realen Einsatz sicher verhält.\u003C\u002Fp>\n\u003Cp>Ein minimaler Evaluierungsdatensatz sollte echte Benutzerfragen, erwartete Quelldokumente, inakzeptable Antworten, Fälle ohne Antwort und Regressionstests für frühere Fehler enthalten. Jede Änderung an Chunking, Embeddings, Eingabeaufforderungen, Modellanbieter oder Abrufschwellenwert sollte gegen diesen Datensatz getestet werden.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Abrufevaluierung:\u003C\u002Fb> Hat das System die richtigen Quell-Chunks abgerufen?\u003C\u002Fli>\u003Cli>\u003Cb>Antwortevaluierung:\u003C\u002Fb> Blieb die Antwort im abgerufenen Kontext verankert?\u003C\u002Fli>\u003Cli>\u003Cb>Sicherheitsevaluierung:\u003C\u002Fb> Hat das System verbotene Offenlegungen oder unbefugte Daten vermieden?\u003C\u002Fli>\u003Cli>\u003Cb>Operative Evaluierung:\u003C\u002Fb> Blieben Latenz, Fehlerrate und Kosten innerhalb akzeptabler Grenzen?\u003C\u002Fli>\u003Cli>\u003Cb>Regressionsevaluierung:\u003C\u002Fb> Hat ein Modell- oder Eingabeaufforderungs-Upgrade zuvor korrektes Verhalten beeinträchtigt?\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>RAG reduziert Halluzinationen, beseitigt aber nicht die Notwendigkeit einer Evaluierung. Evaluierung ist die Kontrollschleife, die aus einem cleveren Prototypen ein sich verbesserndes Produkt macht.\u003C\u002Fp>\n\u003Ch2>Bereitstellungsdisziplin: Das Modell ist ein Release-Ereignis\u003C\u002Fh2>\n\u003Cp>Ein Modell zu ändern ist keine harmlose Konfigurationsanpassung. Es kann Antwortstil, Denkverhalten, Sprachqualität, Latenz, Token-Nutzung, Zitierdisziplin und Fehlermodi verändern. In der Produktion sollten Modell-Upgrades wie Release-Ereignisse behandelt werden.\u003C\u002Fp>\n\u003Cp>Das bedeutet Versionierung von Eingabeaufforderungen, Embedding-Modellen, Abrufeinstellungen, Modellkennungen, Anbieterrouten und Evaluierungsergebnissen. Es bedeutet auch, über eine Rollback-Logik zu verfügen. Wenn ein neues Modell zu schlechteren abrufgestützten Antworten führt oder die strukturierte Ausgabe beeinträchtigt, benötigt das System einen kontrollierten Weg zurück zur bekannten guten Konfiguration.\u003C\u002Fp>\n\u003Cp>Dies passt zur gleichen Betriebslogik wie \u003Ca href=\"\u002Fde\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Delivery &amp; Change\u003C\u002Fa> und \u003Ca href=\"\u002Fde\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">KI-fähige Plattformarchitektur\u003C\u002Fa>: Stabile Auslieferung erfordert wiederholbare Kontrollen, keine heldenhaften manuellen Reparaturen.\u003C\u002Fp>\n\u003Ch2>Fazit: Die Produktion beginnt dort, wo die Demo endet\u003C\u002Fh2>\n\u003Cp>Ollama kann die Reise beginnen. Es macht die lokale Modellausführung zugänglich und senkt die Hürde für Experimente. Das ist wertvoll. Aber die Produktionsanwendung beginnt dort, wo die Demo endet.\u003C\u002Fp>\n\u003Cp>Das Modell ist nur eine austauschbare Komponente. Das eigentliche Produkt ist das kontrollierte System darum herum: Ingestion, Berechtigungen, Retrieval, Prompts, Provider-Routing, Evaluierung, Logs, Monitoring, Deployment, Backup und Benutzer-Workflow. Hier wird Datenschutz real, Qualität messbar und Geschäftswert wiederholbar.\u003C\u002Fp>\n\u003Cp>Eine ernsthafte Open-LLM-Anwendung entsteht durch Ingenieursdisziplin, nicht durch das einmalige Ausführen eines lokalen Modells. Ollama kann die Reise beginnen, aber die Produktionsanwendung fängt dort an, wo die Demo aufhört.\u003C\u002Fp>\n\u003Cp>Thema:\u003C\u002Fp>\n\u003Cp>Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Provider-Abstraktion, Enterprise-AI-Architektur\u003C\u002Fp>",{"time":227,"blocks":228,"version":624},1782679515809,[229,234,240,245,250,255,261,266,271,282,290,295,300,326,331,336,341,346,363,368,373,378,384,389,403,408,413,436,441,446,451,456,461,466,471,476,481,506,511,516,521,526,538,543,548,553,558,569,574,579,584,589,594,599,604,609,614,619],{"id":230,"data":231,"type":41,"tunes":233},"HsB_-_Sdzh",{"text":232,"level":39},"Ollama ist nicht das Produkt: Produktionsreife Open-LLM-Anwendungen entwickeln",{},{"id":235,"data":236,"type":238,"tunes":239},"G_FTnJiMVo",{"text":237},"Werkzeuge wie \u003Cb>Ollama\u003C\u002Fb> haben die lokale LLM-Experimentierung nahezu reibungslos gemacht. Installieren Sie die Laufzeitumgebung, laden Sie ein Modell, senden Sie eine Eingabeaufforderung, und ein lokaler Assistent antwortet in Sekunden. Das ist nützlich. Es ist auch der einfachste Teil der Reise.","paragraph",{},{"id":241,"data":242,"type":238,"tunes":244},"fVa1sJxmy6",{"text":243},"Eine Terminal-Demo ist keine Anwendung. Ein lokales Modell ist kein Produkt. Eine produktive Open-LLM-Anwendung benötigt kontrollierte Datenerfassung, Abruf, Berechtigungen, Bewertung, Protokollierung, Anbieterabstraktion, Bereitstellungsdisziplin und einen Benutzerworkflow, der ein echtes Geschäftsproblem löst.",{},{"id":246,"data":247,"type":238,"tunes":249},"f6EzZPNhRc",{"text":248},"Die Kernthese ist einfach: \u003Cb>Ollama ist eine Laufzeitumgebung, nicht das Produkt\u003C\u002Fb>. Das Produkt lebt in der Anwendungsschicht um das Modell herum. Diese Schicht entscheidet, welche Dokumente sichtbar sind, welche Abschnitte abgerufen werden, welche Eingabeaufforderungen verwendet werden, wie Antworten bewertet werden, wie Fehler protokolliert werden und ob das System im täglichen Betrieb vertrauenswürdig ist.",{},{"id":251,"data":252,"type":238,"tunes":254},"wjgsXAJQ-i",{"text":253},"Hier wird lokale KI für Teams interessant, die private Assistenten, interne Wissenswerkzeuge, LLM-gestützte SaaS-Funktionen oder Unternehmens-Workflow-Copiloten entwickeln. Das Modell kann lokal laufen, aber Datenschutz, Zuverlässigkeit und Geschäftswert existieren nur, wenn das gesamte System ordnungsgemäß entwickelt ist.",{},{"id":256,"data":257,"type":41,"tunes":260},"NnYUiRBtwJ",{"text":258,"level":259},"Ollama ist eine Laufzeitumgebung, kein Produkt",2,{},{"id":262,"data":263,"type":238,"tunes":265},"nVrpsWCll3",{"text":264},"Ollama eignet sich hervorragend zum Ausführen und Bereitstellen offener Modelle lokal. Es ist besonders stark für Erkundungen, Entwickler-Workflows, Proof-of-Concepts und Teams, die das Modellverhalten testen möchten, ohne sich sofort auf einen Cloud-Anbieter festzulegen. Es ermöglicht die lokale Modellinteraktion über APIs und Kompatibilitätsschichten, die es einfacher machen, bestehende OpenAI-ähnliche Werkzeuge zu verbinden.",{},{"id":267,"data":268,"type":238,"tunes":270},"_aQOCMkaG8",{"text":269},"Das bedeutet nicht, dass Ollama das Anwendungsproblem löst. Es weiß nicht automatisch, welche Unternehmensdokumente ein Benutzer lesen darf. Es erstellt keine Mandantentrennung, Dokumentenversionierung, Prüfpfade, Quellenangaben, Bewertungsdatensätze oder geschäftsspezifische UI-Workflows. Diese Verantwortlichkeiten bleiben bei der Anwendungsarchitektur.",{},{"id":272,"data":273,"type":280,"tunes":281},"jeeZbnQvh7",{"meta":274,"items":275,"style":279},{},[276,277,278],"\u003Cb>Ollama hilft bei:\u003C\u002Fb> lokaler Modellausführung, schneller Experimentierung, API-basiertem Modellzugriff, Offline-First-PoCs und Entwicklerproduktivität.","\u003Cb>Ollama löst nicht von selbst:\u003C\u002Fb> Zugriffskontrolle, RAG-Qualität, Dokumentenlebenszyklus, Mandantengrenzen, Bewertung, Prüfprotokollierung, Überwachung, Fallback-Verhalten oder Unternehmens-Workflow-Design.","\u003Cb>Der architektonische Fehler:\u003C\u002Fb> lokale Inferenz so zu behandeln, als wäre sie bereits ein sicheres KI-Produkt.","unordered","list",{},{"id":283,"data":284,"type":288,"tunes":289},"U8K0Qat9xz",{"text":285,"caption":286,"alignment":287},"Das Modell ist der einfachste Teil. Die Anwendungsschicht ist der Ort, an dem der Produktwert liegt.","Architekturprinzip","left","quote",{},{"id":291,"data":292,"type":41,"tunes":294},"NYU66FQDT8",{"text":293,"level":259},"Demo, PoC und Produktion sind unterschiedliche Phasen",{},{"id":296,"data":297,"type":238,"tunes":299},"-EGq4eScAy",{"text":298},"Viele Open-LLM-Initiativen scheitern, weil Teams eine funktionierende Demo mit einer Produktionsfähigkeit verwechseln. Der Unterschied ist nicht kosmetisch. Jede Reifegradstufe hat ein anderes Ziel, ein anderes Risikoprofil und eine andere technische Anforderung.",{},{"id":301,"data":302,"type":324,"tunes":325},"V_OydBfVSx",{"content":303,"stretched":42,"withHeadings":13},[304,309,314,319],[305,306,307,308],"Phase","Was sie beweist","Typisches Setup","Was noch fehlt",[310,311,312,313],"Demo","Ein Modell kann lokal auf eine Eingabeaufforderung antworten.","Ollama auf einem Laptop, ein Modell, eine Eingabeaufforderung, keine echte Datenkontrolle.","Berechtigungen, Abruf, Protokolle, Bewertung, Bereitstellung, Überwachung, Benutzerworkflow.",[315,316,317,318],"PoC","Ein kleines kontrolliertes System kann Fragen zu ausgewählten Dokumenten oder Workflows beantworten.","Einfache Weboberfläche, Erfassungsskript, Vektorsuche, begrenzte Benutzer, begrenzter Dokumentenumfang.","Skalierung, Governance, Testdatensätze, Fallback-Strategie, Prüfbarkeit, Support-Modell.",[320,321,322,323],"Produktion","Mehrere Benutzer können das System sicher und wiederholt in der realen Arbeit nutzen.","Authentifizierte App, Mandantentrennung, RAG-Pipeline, Beobachtbarkeit, Anbieterabstraktion, Backups, Release-Prozess.","Kontinuierliche Verbesserung, Erweiterung der Bewertung, operative Reife.","table",{},{"id":327,"data":328,"type":238,"tunes":330},"ikp3g9j4So",{"text":329},"Ein PoC kann absichtlich klein sein. Produktion kann nicht absichtlich blind sein. Sobald echte Benutzer, private Daten, Geschäftsentscheidungen und Compliance-Erwartungen in das System eintreten, muss die Architektur explizit werden.",{},{"id":332,"data":333,"type":41,"tunes":335},"f1xN0TAU53",{"text":334,"level":259},"Wo RAG ins Spiel kommt",{},{"id":337,"data":338,"type":238,"tunes":340},"wVTJ2-nEg8",{"text":339},"\u003Cb>Retrieval-Augmented Generation\u003C\u002Fb> ist die häufigste Brücke zwischen einem Sprachmodell und privatem Geschäftswissen. Das Modell kennt nicht magisch interne Dokumente, Verträge, Tickets, Produktspezifikationen oder Runbooks. Die Anwendung muss den relevanten Kontext abrufen, bevor sie das Modell um eine Antwort bittet.",{},{"id":342,"data":343,"type":238,"tunes":345},"fvxr_M2czf",{"text":344},"Ein praktischer RAG-Ablauf sieht so aus:",{},{"id":347,"data":348,"type":280,"tunes":362},"tVZHbBjBJe",{"meta":349,"items":351,"style":361},{"counterType":350},"numeric",[352,353,354,355,356,357,358,359,360],"Dokumente werden hochgeladen oder aus kontrollierten Quellen synchronisiert.","Text wird extrahiert, bereinigt und in Abschnitte aufgeteilt.","Abschnitte erhalten Metadaten wie Mandant, Eigentümer, Dokumentenversion, Quell-URL, Zugriffsbereich und Zeitstempel.","Für jeden Abschnitt werden Embeddings generiert.","Vektoren werden in pgvector, Qdrant oder einer anderen Abrufschicht gespeichert.","Zur Abfragezeit prüft die Anwendung die Berechtigungen vor dem Abruf.","Relevante Abschnitte werden mit Ähnlichkeitssuche und Metadatenfiltern abgerufen.","Der Prompt-Builder injiziert den ausgewählten Kontext in die Modellanfrage.","Die Antwort wird mit Zitaten, Konfidenzgrenzen und einem No-Answer-Fallback generiert, wenn der Abruf schwach ist.","ordered",{},{"id":364,"data":365,"type":238,"tunes":367},"5VP9OTHrad",{"text":366},"RAG reduziert Halluzinationen, beseitigt sie jedoch nicht. Eine schlechte Chunking-Strategie, schwache Metadaten, fehlende Berechtigungsfilter, minderwertige Embeddings oder eine zu breite Abfrage können immer noch überzeugende, aber falsche Antworten liefern. Ernsthafte RAG-Systeme benötigen Schwellenwerte, Quellenangaben, Abfrageprotokolle und Evaluierung.",{},{"id":369,"data":370,"type":41,"tunes":372},"6R3G0KzeXf",{"text":371,"level":259},"Eine praktische lokale Open-LLM-Architektur",{},{"id":374,"data":375,"type":238,"tunes":377},"hsYURnHqGd",{"text":376},"Ein realistischer Produktionsweg erfordert keine exotische Infrastruktur. Für viele Teams kann eine solide erste Architektur einen normalen Web-Stack verwenden: Nuxt für das Frontend, eine Nitro- oder Node-API, PostgreSQL als System of Record, pgvector für die Abfrage, Ollama als lokale Laufzeitumgebung, Prisma für den Datenzugriff und Hintergrund-Worker für die Aufnahme und Embeddings.",{},{"id":379,"data":380,"type":382,"tunes":383},"ie58nqmk5o",{"code":381},"Benutzerfrage | v\nFrontend-UI | v\nAPI \u002F Backend | +--> Authentifizierung +--> Mandanten- und Rollenberechtigungsprüfung | v\nAbfrageschicht | +--> PostgreSQL-Metadaten +--> pgvector- oder Qdrant-Vektorsuche +--> Ähnlichkeitsschwellenwert | v\nPrompt-Ersteller | +--> System-Prompt +--> abgerufene Chunks +--> Quellenverweise +--> Keine-Antwort-Regeln | v\nLLM-Anbieterabstraktion | +--> Ollama \u002F lokales Modell +--> Cloud-Modell-Fallback +--> zukünftige selbstgehostete Laufzeitumgebung | v\nAntwort mit Quellen | v\nProtokolle, Ablaufverfolgungen, Metriken, Evaluierungsdatensatz","code",{},{"id":385,"data":386,"type":238,"tunes":388},"HCdDDntKaG",{"text":387},"Diese Architektur hält das Modell austauschbar. Ollama kann die erste Laufzeitumgebung sein, aber das System sollte nicht an eine einzige Inferenz-Engine gebunden sein. Eine saubere Architektur trennt Benutzerworkflow, Abfrage, Prompt-Konstruktion, Modellanbieter und Beobachtbarkeit.",{},{"id":390,"data":391,"type":280,"tunes":402},"jx3zLyUEmA",{"meta":392,"items":393,"style":279},{},[394,395,396,397,398,399,400,401],"\u003Cb>Frontend:\u003C\u002Fb> Nuxt oder eine andere Weboberfläche für authentifizierte Benutzerworkflows.","\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js oder FastAPI für Orchestrierung, Berechtigungen und Anbieter-Routing.","\u003Cb>Datenbank:\u003C\u002Fb> PostgreSQL für Dokumente, Benutzer, Mandanten, Rollen, Prompts, Protokolle und Metadaten.","\u003Cb>Vektorsuche:\u003C\u002Fb> pgvector für einfache integrierte Abfrage oder Qdrant, wenn die Vektorsuche zu einem dedizierten Dienst wird.","\u003Cb>Modell-Laufzeitumgebung:\u003C\u002Fb> Ollama für lokale Ausführung, llama.cpp-Server für leichtgewichtiges Serving oder vLLM für GPU-Serving mit höherem Durchsatz.","\u003Cb>Speicher:\u003C\u002Fb> lokales Dateisystem oder S3-kompatibler Objektspeicher für hochgeladene Dateien und extrahierte Artefakte.","\u003Cb>Worker:\u003C\u002Fb> Hintergrundaufnahme, Chunking, Embedding, Neuindizierung und Dokumentenversionsverarbeitung.","\u003Cb>Beobachtbarkeit:\u003C\u002Fb> Protokolle, Metriken, Prompt-Ablaufverfolgungen, Abfrage-Ablaufverfolgungen, Latenzverfolgung und Evaluierungsergebnisse.",{},{"id":404,"data":405,"type":41,"tunes":407},"CG1PJLbPuV",{"text":406,"level":259},"Die Checkliste für die Produktionsreife",{},{"id":409,"data":410,"type":238,"tunes":412},"aOHxNXO4Mk",{"text":411},"Die folgende Checkliste ist der Unterschied zwischen einer lokalen Modelldemo und einer nutzbaren Open-LLM-Anwendung:",{},{"id":414,"data":415,"type":280,"tunes":435},"TBkg7dLMT1",{"meta":416,"items":417,"style":279},{},[418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434],"Jedes Dokument und jeder Chunk hat eine tenant_id.","Die Abfrage wird blockiert, bis Benutzer- und Rollenberechtigungen überprüft wurden.","Dokumente enthalten Metadaten, Quelle, Eigentümer, Version, Lebenszyklusstatus und Aufbewahrungsrichtlinie.","Die Chunking-Strategie ist dokumentiert und an echten Dokumenten getestet.","Die Auswahl des Embedding-Modells ist explizit und versioniert.","Die Vektorindexkonfiguration ist reproduzierbar.","Ein Ähnlichkeitsschwellenwert verhindert, dass schwacher Kontext blind verwendet wird.","Antworten enthalten nach Möglichkeit Quellenangaben oder Quellenverweise.","Ein Keine-Antwort-Fallback wird verwendet, wenn die Abfragesicherheit zu gering ist.","Prompt-Vorlagen sind versioniert und release-kontrolliert.","Die LLM-Anbieterabstraktion wird von Anfang an aufgebaut.","Strukturierte Ausgaben werden vor der weiteren Verwendung validiert.","Der Evaluierungsdatensatz enthält echte Fragen, erwartete Quellen und inakzeptable Antworten.","Abfrageprotokolle zeigen, welche Chunks für jede Antwort verwendet wurden.","Latenz, Token-Nutzung, GPU\u002FCPU-Auslastung und Fehlerraten werden überwacht.","Datenschutz- und Aufbewahrungsregeln decken Uploads, extrahierten Text, Chunks, Embeddings, Prompts, Antworten und Protokolle ab.","Bereitstellungs-, Backup-, Wiederherstellungs-, Rollback- und Incident-Pfade sind dokumentiert.",{},{"id":437,"data":438,"type":238,"tunes":440},"tdTcmD4DEO",{"text":439},"Dies steht in direktem Zusammenhang mit \u003Ca href=\"\u002Fde\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa>: Nützliche KI ist nicht nur eine Modellentscheidung. Es ist Lieferdisziplin, Nachweise, Kontrollen, Metriken und operative Verantwortung.",{},{"id":442,"data":443,"type":41,"tunes":445},"zOuV7s1ByX",{"text":444,"level":259},"Anbieterabstraktion: Heiraten Sie kein Modell",{},{"id":447,"data":448,"type":238,"tunes":450},"gPuC35eEAc",{"text":449},"Lokale Modelle sind wertvoll für datenschutzsensible Anwendungsfälle, Offline-Szenarien, Kostenkontrolle und interne Experimente. Cloud-Modelle können für schwieriges Denken, Programmierung, mehrsprachige Genauigkeit oder multimodale Arbeit immer noch stärker sein. Eine Produktionsanwendung sollte kein Modell als permanente Infrastruktur behandeln.",{},{"id":452,"data":453,"type":238,"tunes":455},"ssy1KKIyUv",{"text":454},"Eine Anbieterabstraktion ermöglicht es demselben Anwendungsworkflow, Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM oder einen anderen selbstgehosteten Endpunkt aufzurufen, ohne das Produkt umschreiben zu müssen. Die Anwendung entscheidet über den Anbieter basierend auf Anwendungsfall, Datensensitivität, Latenz, Kosten und Qualitätsanforderungen.",{},{"id":457,"data":458,"type":382,"tunes":460},"droVs9NwWG",{"code":459},"type LlmProvider = \"ollama\" | \"openai\" | \"gemini\" | \"anthropic\" | \"vllm\"; type ChatInput = { provider: LlmProvider; model: string; tenantId: string; userId: string; question: string; context: Array\u003C{ chunkId: string; sourceTitle: string; text: string; }>;\n}; async function chat(input: ChatInput) { await assertUserCanAccessContext(input.userId, input.context); const messages = buildRagMessages({ question: input.question, context: input.context, rules: [ \"Antworten Sie nach Möglichkeit nur aus dem bereitgestellten Kontext.\", \"Quellentitel angeben.\", \"Sagen Sie, wenn der Kontext nicht ausreicht.\" ] }); return llm.chat({ provider: input.provider, model: input.model, messages, trace: { tenantId: input.tenantId, userId: input.userId, promptVersion: \"rag-v3.2\" } });\n}",{},{"id":462,"data":463,"type":238,"tunes":465},"TqpI4xqkq1",{"text":464},"Die Kernidee ist nicht die TypeScript-Syntax. Die Kernidee ist die Grenze. Die Anwendung besitzt Berechtigungen, Abfrage, Prompt-Regeln, Ablaufverfolgung und Evaluierung. Der Anbieter erzeugt nur die Modellausgabe.",{},{"id":467,"data":468,"type":41,"tunes":470},"RuZt2H8Qtd",{"text":469,"level":259},"pgvector vs Qdrant",{},{"id":472,"data":473,"type":238,"tunes":475},"-nl0_dtw9s",{"text":474},"Für viele Open-LLM-Anwendungen ist die Entscheidung für den Vektorspeicher am Anfang einfach: Wenn PostgreSQL bereits Ihr System of Record ist, ist \u003Cb>pgvector\u003C\u002Fb> ein starker Ausgangspunkt. Es hält Metadaten, Berechtigungen, Dokumentenaufzeichnungen und Vektoren nahe beieinander. Das reduziert die betriebliche Komplexität.",{},{"id":477,"data":478,"type":238,"tunes":480},"mJJZ9Vhiy4",{"text":479},"\u003Cb>Qdrant\u003C\u002Fb> wird attraktiver, wenn die Vektorsuche zu einem dedizierten Dienst werden muss: größerer Abfrageumfang, erweiterte Filterung, spezialisierte Indizierung, hybride Suchmuster oder unabhängige Skalierung der Abfrageinfrastruktur.",{},{"id":482,"data":483,"type":324,"tunes":505},"ZNBNQmWTqi",{"content":484,"stretched":42,"withHeadings":13},[485,490,495,500],[486,487,488,489],"Option","Beste Passform","Stärken","Abwägungen",[491,492,493,494],"pgvector","PoCs, frühe Produktion, Systeme, die bereits auf PostgreSQL basieren.","Einzelne Datenbank, SQL-Joins, ACID-Verhalten, einfachere Operationen, Metadaten nahe an Vektoren.","Weniger spezialisiert als eine dedizierte Vektordatenbank bei großem Abrufumfang.",[496,497,498,499],"Qdrant","Dedizierte semantische Suchdienste, größere Vektor-Workloads, erweiterte Filter- und Abrufmuster.","Zweckgebundene Vektorsuche, starkes Filtermodel, unabhängige Skalierung, abruforientierte APIs.","Fügt eine weitere Infrastrukturkomponente und operative Oberfläche hinzu.",[501,502,503,504],"Einfach starten","Die meisten Unternehmens-Teams beginnen mit privaten RAG-Anwendungen.","Geringeres Architekturrisiko, schnellere Auslieferung, einfacherer Prüfpfad.","Möglicherweise später Migration erforderlich, wenn der Abruf zentral und hochskalierend wird.",{},{"id":507,"data":508,"type":238,"tunes":510},"EaNwvz0Ala",{"text":509},"Eine praktische Regel: Beginnen Sie mit pgvector, wenn PostgreSQL bereits Ihre Geschäftsdaten verwaltet und der Abrufumfang moderat ist. Wechseln Sie zu Qdrant, wenn die Vektorsuche zu einer eigenen Produktfähigkeit wird.",{},{"id":512,"data":513,"type":41,"tunes":515},"Xm3eJKCflO",{"text":514,"level":259},"Realitätscheck zu Sicherheit und Datenschutz",{},{"id":517,"data":518,"type":238,"tunes":520},"rdIR5uvVuv",{"text":519},"Lokale Inferenz bedeutet nicht automatisch sichere KI. Es bedeutet nur, dass die Modellausführung lokal erfolgen kann. Der gesamte Datenpfad ist weiterhin relevant: hochgeladene Dateien, extrahierter Text, Chunks, Embeddings, Protokolle, Eingabeaufforderungen, Antworten, Backups, Entwicklerzugriff, Verwaltungstools und Analyse-Exporte.",{},{"id":522,"data":523,"type":238,"tunes":525},"IhqG3kxPSc",{"text":524},"Auch Embeddings verdienen Aufmerksamkeit. Sie sind nicht das Originaldokument, repräsentieren aber dennoch Informationen, die aus sensiblen Inhalten abgeleitet wurden. Behandeln Sie sie als Teil des geschützten Datenpfads, insbesondere wenn sie mit Metadaten, Quellaufzeichnungen, Benutzerabfragen oder Mandantenkennungen verknüpft sind.",{},{"id":527,"data":528,"type":280,"tunes":537},"QvcBrg8G6B",{"meta":529,"items":530,"style":279},{},[531,532,533,534,535,536],"Indizieren Sie keine Dokumente, bevor die Zugriffsregeln bekannt sind.","Rufen Sie keine Chunks ohne Mandanten- und Rollenfilter ab.","Protokollieren Sie keine vollständigen Eingabeaufforderungen und Antworten ohne Aufbewahrungsregeln.","Senden Sie keinen sensiblen Kontext an ein Cloud-Modell, es sei denn, die Richtlinie erlaubt es.","Gehen Sie nicht davon aus, dass lokal gleich DSGVO-konform ist; die Konformität hängt vom gesamten Verarbeitungsdesign ab.","Lassen Sie nicht zu, dass Evaluierungs- und Debugging-Kopien zu unkontrollierten Schattendatensätzen werden.",{},{"id":539,"data":540,"type":238,"tunes":542},"_YLdd4iHrS",{"text":541},"Hier kommt die \u003Ca href=\"\u002Fde\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">Multi-Instanz-SaaS-Architektur\u003C\u002Fa> ins Spiel. Wenn Mandanten, Rollen, Datenbesitz und operative Grenzen schwach sind, kann das Hinzufügen eines lokalen LLM das Risiko verstärken, anstatt es zu reduzieren.",{},{"id":544,"data":545,"type":41,"tunes":547},"I6V0KMIQjb",{"text":546,"level":259},"Evaluierung ist nicht optional",{},{"id":549,"data":550,"type":238,"tunes":552},"yaKCxuptHO",{"text":551},"Eine Open-LLM-Produktionsanwendung benötigt eine Evaluierungsschleife. Ohne sie haben Teams nur Anekdoten. Ein paar gute Demo-Antworten beweisen nicht, dass der Abruf funktioniert, dass die Eingabeaufforderung stabil ist oder dass sich das Modell im realen Einsatz sicher verhält.",{},{"id":554,"data":555,"type":238,"tunes":557},"Kq_qe2AL-v",{"text":556},"Ein minimaler Evaluierungsdatensatz sollte echte Benutzerfragen, erwartete Quelldokumente, inakzeptable Antworten, Fälle ohne Antwort und Regressionstests für frühere Fehler enthalten. Jede Änderung an Chunking, Embeddings, Eingabeaufforderungen, Modellanbieter oder Abrufschwellenwert sollte gegen diesen Datensatz getestet werden.",{},{"id":559,"data":560,"type":280,"tunes":568},"oBlROQd5Li",{"meta":561,"items":562,"style":279},{},[563,564,565,566,567],"\u003Cb>Abrufevaluierung:\u003C\u002Fb> Hat das System die richtigen Quell-Chunks abgerufen?","\u003Cb>Antwortevaluierung:\u003C\u002Fb> Blieb die Antwort im abgerufenen Kontext verankert?","\u003Cb>Sicherheitsevaluierung:\u003C\u002Fb> Hat das System verbotene Offenlegungen oder unbefugte Daten vermieden?","\u003Cb>Operative Evaluierung:\u003C\u002Fb> Blieben Latenz, Fehlerrate und Kosten innerhalb akzeptabler Grenzen?","\u003Cb>Regressionsevaluierung:\u003C\u002Fb> Hat ein Modell- oder Eingabeaufforderungs-Upgrade zuvor korrektes Verhalten beeinträchtigt?",{},{"id":570,"data":571,"type":238,"tunes":573},"9gDXPLZ6Rp",{"text":572},"RAG reduziert Halluzinationen, beseitigt aber nicht die Notwendigkeit einer Evaluierung. Evaluierung ist die Kontrollschleife, die aus einem cleveren Prototypen ein sich verbesserndes Produkt macht.",{},{"id":575,"data":576,"type":41,"tunes":578},"Hi1K8JLPUo",{"text":577,"level":259},"Bereitstellungsdisziplin: Das Modell ist ein Release-Ereignis",{},{"id":580,"data":581,"type":238,"tunes":583},"sEpigdnlkD",{"text":582},"Ein Modell zu ändern ist keine harmlose Konfigurationsanpassung. Es kann Antwortstil, Denkverhalten, Sprachqualität, Latenz, Token-Nutzung, Zitierdisziplin und Fehlermodi verändern. In der Produktion sollten Modell-Upgrades wie Release-Ereignisse behandelt werden.",{},{"id":585,"data":586,"type":238,"tunes":588},"sLXBCBh3E0",{"text":587},"Das bedeutet Versionierung von Eingabeaufforderungen, Embedding-Modellen, Abrufeinstellungen, Modellkennungen, Anbieterrouten und Evaluierungsergebnissen. Es bedeutet auch, über eine Rollback-Logik zu verfügen. Wenn ein neues Modell zu schlechteren abrufgestützten Antworten führt oder die strukturierte Ausgabe beeinträchtigt, benötigt das System einen kontrollierten Weg zurück zur bekannten guten Konfiguration.",{},{"id":590,"data":591,"type":238,"tunes":593},"pcbe8eGMbe",{"text":592},"Dies passt zur gleichen Betriebslogik wie \u003Ca href=\"\u002Fde\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Delivery &amp; Change\u003C\u002Fa> und \u003Ca href=\"\u002Fde\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">KI-fähige Plattformarchitektur\u003C\u002Fa>: Stabile Auslieferung erfordert wiederholbare Kontrollen, keine heldenhaften manuellen Reparaturen.",{},{"id":595,"data":596,"type":41,"tunes":598},"mOhI-jF1zx",{"text":597,"level":259},"Fazit: Die Produktion beginnt dort, wo die Demo endet",{},{"id":600,"data":601,"type":238,"tunes":603},"3mXK980w23",{"text":602},"Ollama kann die Reise beginnen. Es macht die lokale Modellausführung zugänglich und senkt die Hürde für Experimente. Das ist wertvoll. Aber die Produktionsanwendung beginnt dort, wo die Demo endet.",{},{"id":605,"data":606,"type":238,"tunes":608},"9O27eQ_Svm",{"text":607},"Das Modell ist nur eine austauschbare Komponente. Das eigentliche Produkt ist das kontrollierte System darum herum: Ingestion, Berechtigungen, Retrieval, Prompts, Provider-Routing, Evaluierung, Logs, Monitoring, Deployment, Backup und Benutzer-Workflow. Hier wird Datenschutz real, Qualität messbar und Geschäftswert wiederholbar.",{},{"id":610,"data":611,"type":238,"tunes":613},"4Lyy3E4ZsF",{"text":612},"Eine ernsthafte Open-LLM-Anwendung entsteht durch Ingenieursdisziplin, nicht durch das einmalige Ausführen eines lokalen Modells. Ollama kann die Reise beginnen, aber die Produktionsanwendung fängt dort an, wo die Demo aufhört.",{},{"id":615,"data":616,"type":238,"tunes":618},"eKPRtinG5L",{"text":617},"Thema:",{},{"id":620,"data":621,"type":238,"tunes":623},"GMa6lE1NNl",{"text":622},"Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Provider-Abstraktion, Enterprise-AI-Architektur",{},"2.31","Das Ausführen eines lokalen Modells mit Ollama ist einfach. Das Erstellen einer produktionsreifen Open-LLM-Anwendung ist schwieriger: Es erfordert RAG, Zugriffskontrolle, Anbieterabstraktion, Evaluierung, Protokollierung, Bereitstellungsdisziplin und eine kontrollierte Anwendungsschicht um das Modell herum.","\u002Fuploads\u002F2026\u002F06\u002Follama-is-not-the-product-building-production-ready-open-llm-applications-1782679361640-h0usqf.webp","ollama-is-not-the-product-building-production-ready-open-llm-applications-1782679361640-h0usqf","PUBLISHED","2026-06-28T16:39:00.000Z","2026-06-28T20:39:17.972Z","2026-06-28T20:56:51.719Z",{"en":633,"de":634,"sr":635,"es":636,"fr":637,"it":638,"ru":639,"zh":640},"\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fde\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fsr\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fes\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Ffr\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fit\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fru\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications","\u002Fzh\u002Fblog\u002Follama-is-not-the-product-building-production-ready-open-llm-applications",[642,646,650,654,658],{"id":643,"name":644,"slug":645},39,"Enterprise Delivery OS","enterprise",{"id":647,"name":648,"slug":649},87,"Playbook: LLMOps","llmops",{"id":651,"name":652,"slug":653},58,"Evaluation & Qualitäts-Gates","evaluation",{"id":655,"name":656,"slug":657},89,"Evaluation-Harness","evaluation-harness",{"id":659,"name":660,"slug":661},85,"Qualitäts-Gates","quality-gates",{"id":663,"login":664,"email":665,"displayName":666},"20","rooth8233","","Aleksandar Stajić",[668,867],{"lang":7,"title":223,"content":225,"contentJson":669,"excerpt":625},{"time":227,"blocks":670,"version":624},[671,674,677,680,683,686,689,692,695,700,703,706,709,717,720,723,726,729,734,737,740,743,746,749,754,757,760,765,768,771,774,777,780,783,786,789,792,800,803,806,809,812,817,820,823,826,829,834,837,840,843,846,849,852,855,858,861,864],{"id":230,"data":672,"type":41,"tunes":673},{"text":232,"level":39},{},{"id":235,"data":675,"type":238,"tunes":676},{"text":237},{},{"id":241,"data":678,"type":238,"tunes":679},{"text":243},{},{"id":246,"data":681,"type":238,"tunes":682},{"text":248},{},{"id":251,"data":684,"type":238,"tunes":685},{"text":253},{},{"id":256,"data":687,"type":41,"tunes":688},{"text":258,"level":259},{},{"id":262,"data":690,"type":238,"tunes":691},{"text":264},{},{"id":267,"data":693,"type":238,"tunes":694},{"text":269},{},{"id":272,"data":696,"type":280,"tunes":699},{"meta":697,"items":698,"style":279},{},[276,277,278],{},{"id":283,"data":701,"type":288,"tunes":702},{"text":285,"caption":286,"alignment":287},{},{"id":291,"data":704,"type":41,"tunes":705},{"text":293,"level":259},{},{"id":296,"data":707,"type":238,"tunes":708},{"text":298},{},{"id":301,"data":710,"type":324,"tunes":716},{"content":711,"stretched":42,"withHeadings":13},[712,713,714,715],[305,306,307,308],[310,311,312,313],[315,316,317,318],[320,321,322,323],{},{"id":327,"data":718,"type":238,"tunes":719},{"text":329},{},{"id":332,"data":721,"type":41,"tunes":722},{"text":334,"level":259},{},{"id":337,"data":724,"type":238,"tunes":725},{"text":339},{},{"id":342,"data":727,"type":238,"tunes":728},{"text":344},{},{"id":347,"data":730,"type":280,"tunes":733},{"meta":731,"items":732,"style":361},{"counterType":350},[352,353,354,355,356,357,358,359,360],{},{"id":364,"data":735,"type":238,"tunes":736},{"text":366},{},{"id":369,"data":738,"type":41,"tunes":739},{"text":371,"level":259},{},{"id":374,"data":741,"type":238,"tunes":742},{"text":376},{},{"id":379,"data":744,"type":382,"tunes":745},{"code":381},{},{"id":385,"data":747,"type":238,"tunes":748},{"text":387},{},{"id":390,"data":750,"type":280,"tunes":753},{"meta":751,"items":752,"style":279},{},[394,395,396,397,398,399,400,401],{},{"id":404,"data":755,"type":41,"tunes":756},{"text":406,"level":259},{},{"id":409,"data":758,"type":238,"tunes":759},{"text":411},{},{"id":414,"data":761,"type":280,"tunes":764},{"meta":762,"items":763,"style":279},{},[418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434],{},{"id":437,"data":766,"type":238,"tunes":767},{"text":439},{},{"id":442,"data":769,"type":41,"tunes":770},{"text":444,"level":259},{},{"id":447,"data":772,"type":238,"tunes":773},{"text":449},{},{"id":452,"data":775,"type":238,"tunes":776},{"text":454},{},{"id":457,"data":778,"type":382,"tunes":779},{"code":459},{},{"id":462,"data":781,"type":238,"tunes":782},{"text":464},{},{"id":467,"data":784,"type":41,"tunes":785},{"text":469,"level":259},{},{"id":472,"data":787,"type":238,"tunes":788},{"text":474},{},{"id":477,"data":790,"type":238,"tunes":791},{"text":479},{},{"id":482,"data":793,"type":324,"tunes":799},{"content":794,"stretched":42,"withHeadings":13},[795,796,797,798],[486,487,488,489],[491,492,493,494],[496,497,498,499],[501,502,503,504],{},{"id":507,"data":801,"type":238,"tunes":802},{"text":509},{},{"id":512,"data":804,"type":41,"tunes":805},{"text":514,"level":259},{},{"id":517,"data":807,"type":238,"tunes":808},{"text":519},{},{"id":522,"data":810,"type":238,"tunes":811},{"text":524},{},{"id":527,"data":813,"type":280,"tunes":816},{"meta":814,"items":815,"style":279},{},[531,532,533,534,535,536],{},{"id":539,"data":818,"type":238,"tunes":819},{"text":541},{},{"id":544,"data":821,"type":41,"tunes":822},{"text":546,"level":259},{},{"id":549,"data":824,"type":238,"tunes":825},{"text":551},{},{"id":554,"data":827,"type":238,"tunes":828},{"text":556},{},{"id":559,"data":830,"type":280,"tunes":833},{"meta":831,"items":832,"style":279},{},[563,564,565,566,567],{},{"id":570,"data":835,"type":238,"tunes":836},{"text":572},{},{"id":575,"data":838,"type":41,"tunes":839},{"text":577,"level":259},{},{"id":580,"data":841,"type":238,"tunes":842},{"text":582},{},{"id":585,"data":844,"type":238,"tunes":845},{"text":587},{},{"id":590,"data":847,"type":238,"tunes":848},{"text":592},{},{"id":595,"data":850,"type":41,"tunes":851},{"text":597,"level":259},{},{"id":600,"data":853,"type":238,"tunes":854},{"text":602},{},{"id":605,"data":856,"type":238,"tunes":857},{"text":607},{},{"id":610,"data":859,"type":238,"tunes":860},{"text":612},{},{"id":615,"data":862,"type":238,"tunes":863},{"text":617},{},{"id":620,"data":865,"type":238,"tunes":866},{"text":622},{},{"lang":868,"title":869,"content":870,"contentJson":871,"excerpt":1195},"en","Ollama Is Not the Product: Building Production-Ready Open-LLM Applications","{\"time\":1782679301267,\"blocks\":[{\"id\":\"HsB_-_Sdzh\",\"type\":\"header\",\"data\":{\"text\":\"Ollama Is Not the Product: Building Production-Ready Open-LLM Applications\",\"level\":1},\"tunes\":{}},{\"id\":\"G_FTnJiMVo\",\"type\":\"paragraph\",\"data\":{\"text\":\"Tools like \u003Cb>Ollama\u003C\u002Fb> have made local LLM experimentation almost frictionless. Install the runtime, pull a model, send a prompt, and a local assistant answers in seconds. That is useful. It is also the easiest part of the journey.\"},\"tunes\":{}},{\"id\":\"fVa1sJxmy6\",\"type\":\"paragraph\",\"data\":{\"text\":\"A terminal demo is not an application. A local model is not a product. A productive Open-LLM application needs controlled data ingestion, retrieval, permissions, evaluation, logging, provider abstraction, deployment discipline, and a user workflow that solves a real business problem.\"},\"tunes\":{}},{\"id\":\"f6EzZPNhRc\",\"type\":\"paragraph\",\"data\":{\"text\":\"The core thesis is simple: \u003Cb>Ollama is a runtime, not the product\u003C\u002Fb>. The product lives in the application layer around the model. That layer decides which documents are visible, which chunks are retrieved, which prompts are used, how answers are evaluated, how failures are logged, and whether the system can be trusted in daily work.\"},\"tunes\":{}},{\"id\":\"wjgsXAJQ-i\",\"type\":\"paragraph\",\"data\":{\"text\":\"This is where local AI becomes interesting for teams building private assistants, internal knowledge tools, LLM-enabled SaaS features, or enterprise workflow copilots. The model can run locally, but privacy, reliability, and business value only exist if the full system is engineered properly.\"},\"tunes\":{}},{\"id\":\"NnYUiRBtwJ\",\"type\":\"header\",\"data\":{\"text\":\"Ollama Is a Runtime, Not a Product\",\"level\":2},\"tunes\":{}},{\"id\":\"nVrpsWCll3\",\"type\":\"paragraph\",\"data\":{\"text\":\"Ollama is excellent for running and serving open models locally. It is especially strong for exploration, developer workflows, PoCs, and teams that want to test model behavior without immediately committing to a cloud provider. It exposes local model interaction through APIs and compatibility layers that make it easier to connect existing OpenAI-style tooling.\"},\"tunes\":{}},{\"id\":\"_aQOCMkaG8\",\"type\":\"paragraph\",\"data\":{\"text\":\"That does not mean Ollama solves the application problem. It does not automatically know which company documents a user may read. It does not create tenant isolation, document versioning, audit trails, source attribution, evaluation datasets, or business-specific UI workflows. Those responsibilities stay with the application architecture.\"},\"tunes\":{}},{\"id\":\"jeeZbnQvh7\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"\u003Cb>Ollama helps with:\u003C\u002Fb> local model execution, fast experimentation, API-based model access, offline-first PoCs, and developer productivity.\",\"\u003Cb>Ollama does not solve by itself:\u003C\u002Fb> access control, RAG quality, document lifecycle, tenant boundaries, evaluation, audit logging, monitoring, fallback behavior, or enterprise workflow design.\",\"\u003Cb>The architectural mistake:\u003C\u002Fb> treating local inference as if it were already a secure AI product.\"]},\"tunes\":{}},{\"id\":\"U8K0Qat9xz\",\"type\":\"quote\",\"data\":{\"text\":\"The model is the easiest part. The application layer is where the product value lives.\",\"caption\":\"Architecture principle\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"NYU66FQDT8\",\"type\":\"header\",\"data\":{\"text\":\"Demo, PoC, and Production Are Different Stages\",\"level\":2},\"tunes\":{}},{\"id\":\"-EGq4eScAy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Many Open-LLM initiatives fail because teams confuse a working demo with a production capability. The difference is not cosmetic. Each maturity level has a different goal, different risk profile, and different engineering requirement.\"},\"tunes\":{}},{\"id\":\"V_OydBfVSx\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Stage\",\"What it proves\",\"Typical setup\",\"What is still missing\"],[\"Demo\",\"A model can answer a prompt locally.\",\"Ollama on a laptop, one model, one prompt, no real data control.\",\"Permissions, retrieval, logs, evaluation, deployment, monitoring, user workflow.\"],[\"PoC\",\"A small controlled system can answer questions over selected documents or workflows.\",\"Basic web UI, ingestion script, vector search, limited users, limited document scope.\",\"Scale, governance, test datasets, fallback strategy, auditability, support model.\"],[\"Production\",\"Multiple users can use the system safely and repeatedly inside real work.\",\"Authenticated app, tenant isolation, RAG pipeline, observability, provider abstraction, backups, release process.\",\"Continuous improvement, evaluation expansion, operational maturity.\"]]},\"tunes\":{}},{\"id\":\"ikp3g9j4So\",\"type\":\"paragraph\",\"data\":{\"text\":\"A PoC can be intentionally small. Production cannot be intentionally blind. Once real users, private data, business decisions, and compliance expectations enter the system, the architecture must become explicit.\"},\"tunes\":{}},{\"id\":\"f1xN0TAU53\",\"type\":\"header\",\"data\":{\"text\":\"Where RAG Fits In\",\"level\":2},\"tunes\":{}},{\"id\":\"wVTJ2-nEg8\",\"type\":\"paragraph\",\"data\":{\"text\":\"\u003Cb>Retrieval-Augmented Generation\u003C\u002Fb> is the most common bridge between a language model and private business knowledge. The model does not magically know internal documents, contracts, tickets, product specs, or runbooks. The application must retrieve relevant context before asking the model to answer.\"},\"tunes\":{}},{\"id\":\"fvxr_M2czf\",\"type\":\"paragraph\",\"data\":{\"text\":\"A practical RAG flow looks like this:\"},\"tunes\":{}},{\"id\":\"tVZHbBjBJe\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"meta\":{\"counterType\":\"numeric\"},\"items\":[\"Documents are uploaded or synchronized from controlled sources.\",\"Text is extracted, cleaned, and split into chunks.\",\"Chunks receive metadata such as tenant, owner, document version, source URL, access scope, and timestamp.\",\"Embeddings are generated for each chunk.\",\"Vectors are stored in pgvector, Qdrant, or another retrieval layer.\",\"At query time, the application checks permissions before retrieval.\",\"Relevant chunks are retrieved with similarity search and metadata filters.\",\"The prompt builder injects selected context into the model request.\",\"The answer is generated with citations, confidence boundaries, and no-answer fallback when retrieval is weak.\"]},\"tunes\":{}},{\"id\":\"5VP9OTHrad\",\"type\":\"paragraph\",\"data\":{\"text\":\"RAG reduces hallucinations, but it does not eliminate them. A poor chunking strategy, weak metadata, missing permission filters, low-quality embeddings, or overly broad retrieval can still produce convincing but wrong answers. Serious RAG systems need thresholds, citations, retrieval logs, and evaluation.\"},\"tunes\":{}},{\"id\":\"6R3G0KzeXf\",\"type\":\"header\",\"data\":{\"text\":\"A Practical Local Open-LLM Architecture\",\"level\":2},\"tunes\":{}},{\"id\":\"hsYURnHqGd\",\"type\":\"paragraph\",\"data\":{\"text\":\"A realistic production path does not require exotic infrastructure. For many teams, a strong first architecture can use a normal web stack: Nuxt for the frontend, a Nitro or Node API, PostgreSQL as the system of record, pgvector for retrieval, Ollama as a local runtime, Prisma for data access, and background workers for ingestion and embeddings.\"},\"tunes\":{}},{\"id\":\"ie58nqmk5o\",\"type\":\"code\",\"data\":{\"code\":\"User question | v\\nFrontend UI | v\\nAPI \u002F Backend | +--> Authentication +--> Tenant and role permission check | v\\nRetrieval layer | +--> PostgreSQL metadata +--> pgvector or Qdrant vector search +--> similarity threshold | v\\nPrompt builder | +--> system prompt +--> retrieved chunks +--> source references +--> no-answer rules | v\\nLLM provider abstraction | +--> Ollama \u002F local model +--> cloud model fallback +--> future self-hosted runtime | v\\nAnswer with sources | v\\nLogs, traces, metrics, evaluation dataset\"},\"tunes\":{}},{\"id\":\"HCdDDntKaG\",\"type\":\"paragraph\",\"data\":{\"text\":\"This architecture keeps the model replaceable. Ollama can be the first runtime, but the system should not be locked to one inference engine. A clean architecture separates user workflow, retrieval, prompt construction, model provider, and observability.\"},\"tunes\":{}},{\"id\":\"jx3zLyUEmA\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"\u003Cb>Frontend:\u003C\u002Fb> Nuxt or another web UI for authenticated user workflows.\",\"\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js, or FastAPI for orchestration, permissions, and provider routing.\",\"\u003Cb>Database:\u003C\u002Fb> PostgreSQL for documents, users, tenants, roles, prompts, logs, and metadata.\",\"\u003Cb>Vector search:\u003C\u002Fb> pgvector for simple integrated retrieval or Qdrant when vector search becomes a dedicated service.\",\"\u003Cb>Model runtime:\u003C\u002Fb> Ollama for local execution, llama.cpp server for lightweight serving, or vLLM for higher-throughput GPU serving.\",\"\u003Cb>Storage:\u003C\u002Fb> local filesystem or S3-compatible object storage for uploaded files and extracted artifacts.\",\"\u003Cb>Workers:\u003C\u002Fb> background ingestion, chunking, embedding, re-indexing, and document version processing.\",\"\u003Cb>Observability:\u003C\u002Fb> logs, metrics, prompt traces, retrieval traces, latency tracking, and evaluation results.\"]},\"tunes\":{}},{\"id\":\"CG1PJLbPuV\",\"type\":\"header\",\"data\":{\"text\":\"The Production Readiness Checklist\",\"level\":2},\"tunes\":{}},{\"id\":\"aOHxNXO4Mk\",\"type\":\"paragraph\",\"data\":{\"text\":\"The following checklist is the difference between a local model demo and a usable Open-LLM application:\"},\"tunes\":{}},{\"id\":\"TBkg7dLMT1\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"Every document and chunk has a tenant_id.\",\"Retrieval is blocked until user and role permissions are checked.\",\"Documents include metadata, source, owner, version, lifecycle state, and retention policy.\",\"Chunking strategy is documented and tested against real documents.\",\"Embedding model selection is explicit and versioned.\",\"Vector index configuration is reproducible.\",\"Similarity threshold prevents weak context from being used blindly.\",\"Answers include source citations or source references where possible.\",\"No-answer fallback is used when retrieval confidence is too low.\",\"Prompt templates are versioned and release-controlled.\",\"LLM provider abstraction is built from the start.\",\"Structured output is validated before downstream use.\",\"Evaluation dataset contains real questions, expected sources, and unacceptable answers.\",\"Retrieval logs show which chunks were used for each answer.\",\"Latency, token usage, GPU\u002FCPU load, and error rates are monitored.\",\"Privacy and retention rules cover uploads, extracted text, chunks, embeddings, prompts, responses, and logs.\",\"Deployment, backup, restore, rollback, and incident paths are documented.\"]},\"tunes\":{}},{\"id\":\"tdTcmD4DEO\",\"type\":\"paragraph\",\"data\":{\"text\":\"This connects directly with \u003Ca href=\\\"\u002Fenterprise\\\">Enterprise Delivery OS\u003C\u002Fa>: useful AI is not only a model decision. It is delivery discipline, evidence, controls, metrics, and operational ownership.\"},\"tunes\":{}},{\"id\":\"zOuV7s1ByX\",\"type\":\"header\",\"data\":{\"text\":\"Provider Abstraction: Do Not Marry One Model\",\"level\":2},\"tunes\":{}},{\"id\":\"gPuC35eEAc\",\"type\":\"paragraph\",\"data\":{\"text\":\"Local models are valuable for privacy-sensitive use cases, offline scenarios, cost control, and internal experimentation. Cloud models may still be stronger for difficult reasoning, coding, multilingual accuracy, or multimodal work. A production application should not treat any one model as permanent infrastructure.\"},\"tunes\":{}},{\"id\":\"ssy1KKIyUv\",\"type\":\"paragraph\",\"data\":{\"text\":\"A provider abstraction allows the same application workflow to call Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM, or another self-hosted endpoint without rewriting the product. The application decides the provider based on use case, data sensitivity, latency, cost, and quality requirements.\"},\"tunes\":{}},{\"id\":\"droVs9NwWG\",\"type\":\"code\",\"data\":{\"code\":\"type LlmProvider = \\\"ollama\\\" | \\\"openai\\\" | \\\"gemini\\\" | \\\"anthropic\\\" | \\\"vllm\\\"; type ChatInput = { provider: LlmProvider; model: string; tenantId: string; userId: string; question: string; context: Array\u003C{ chunkId: string; sourceTitle: string; text: string; }>;\\n}; async function chat(input: ChatInput) { await assertUserCanAccessContext(input.userId, input.context); const messages = buildRagMessages({ question: input.question, context: input.context, rules: [ \\\"Answer only from provided context when possible.\\\", \\\"Cite source titles.\\\", \\\"Say when the context is insufficient.\\\" ] }); return llm.chat({ provider: input.provider, model: input.model, messages, trace: { tenantId: input.tenantId, userId: input.userId, promptVersion: \\\"rag-v3.2\\\" } });\\n}\"},\"tunes\":{}},{\"id\":\"TqpI4xqkq1\",\"type\":\"paragraph\",\"data\":{\"text\":\"The key idea is not the TypeScript syntax. The key idea is the boundary. The application owns permissions, retrieval, prompt rules, tracing, and evaluation. The provider only produces the model output.\"},\"tunes\":{}},{\"id\":\"RuZt2H8Qtd\",\"type\":\"header\",\"data\":{\"text\":\"pgvector vs Qdrant\",\"level\":2},\"tunes\":{}},{\"id\":\"-nl0_dtw9s\",\"type\":\"paragraph\",\"data\":{\"text\":\"For many Open-LLM applications, the vector store decision is simple at the beginning: if PostgreSQL is already your system of record, \u003Cb>pgvector\u003C\u002Fb> is a strong starting point. It keeps metadata, permissions, document records, and vectors close together. That reduces operational complexity.\"},\"tunes\":{}},{\"id\":\"mJJZ9Vhiy4\",\"type\":\"paragraph\",\"data\":{\"text\":\"\u003Cb>Qdrant\u003C\u002Fb> becomes more attractive when vector search needs to become a dedicated service: larger retrieval scale, advanced filtering, specialized indexing, hybrid search patterns, or independent scaling of retrieval infrastructure.\"},\"tunes\":{}},{\"id\":\"ZNBNQmWTqi\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"stretched\":false,\"content\":[[\"Option\",\"Best fit\",\"Strengths\",\"Trade-offs\"],[\"pgvector\",\"PoCs, early production, systems already built on PostgreSQL.\",\"Single database, SQL joins, ACID behavior, simpler operations, metadata close to vectors.\",\"Less specialized than a dedicated vector database at large retrieval scale.\"],[\"Qdrant\",\"Dedicated semantic search services, larger vector workloads, advanced filtering and retrieval patterns.\",\"Purpose-built vector search, strong filtering model, independent scaling, retrieval-focused APIs.\",\"Adds another infrastructure component and operational surface.\"],[\"Start simple\",\"Most enterprise teams beginning with private RAG applications.\",\"Lower architecture risk, faster delivery, easier audit path.\",\"May need migration later if retrieval becomes central and high-scale.\"]]},\"tunes\":{}},{\"id\":\"EaNwvz0Ala\",\"type\":\"paragraph\",\"data\":{\"text\":\"A practical rule: start with pgvector when PostgreSQL already owns your business data and the retrieval scale is moderate. Move to Qdrant when vector search becomes a product capability of its own.\"},\"tunes\":{}},{\"id\":\"Xm3eJKCflO\",\"type\":\"header\",\"data\":{\"text\":\"Security and Privacy Reality Check\",\"level\":2},\"tunes\":{}},{\"id\":\"rdIR5uvVuv\",\"type\":\"paragraph\",\"data\":{\"text\":\"Local inference does not automatically mean secure AI. It only means the model execution can happen locally. The full data path still matters: uploaded files, extracted text, chunks, embeddings, logs, prompts, responses, backups, developer access, admin tools, and analytics exports.\"},\"tunes\":{}},{\"id\":\"IhqG3kxPSc\",\"type\":\"paragraph\",\"data\":{\"text\":\"Embeddings also deserve care. They are not the original document, but they still represent information derived from sensitive content. Treat them as part of the protected data path, especially when they are tied to metadata, source records, user queries, or tenant identifiers.\"},\"tunes\":{}},{\"id\":\"QvcBrg8G6B\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"Do not index documents before access rules are known.\",\"Do not retrieve chunks without tenant and role filters.\",\"Do not log full prompts and responses without retention rules.\",\"Do not send sensitive context to a cloud model unless the policy allows it.\",\"Do not assume that local equals GDPR-compliant; compliance depends on the complete processing design.\",\"Do not let evaluation and debugging copies become uncontrolled shadow datasets.\"]},\"tunes\":{}},{\"id\":\"_YLdd4iHrS\",\"type\":\"paragraph\",\"data\":{\"text\":\"This is where \u003Ca href=\\\"\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\\\">multi-instance SaaS architecture\u003C\u002Fa> matters. If tenants, roles, data ownership, and operational boundaries are weak, adding a local LLM can amplify risk instead of reducing it.\"},\"tunes\":{}},{\"id\":\"I6V0KMIQjb\",\"type\":\"header\",\"data\":{\"text\":\"Evaluation Is Not Optional\",\"level\":2},\"tunes\":{}},{\"id\":\"yaKCxuptHO\",\"type\":\"paragraph\",\"data\":{\"text\":\"A production Open-LLM application needs an evaluation loop. Without it, teams only have anecdotes. A few good demo answers do not prove that retrieval works, that the prompt is stable, or that the model behaves safely across real usage.\"},\"tunes\":{}},{\"id\":\"Kq_qe2AL-v\",\"type\":\"paragraph\",\"data\":{\"text\":\"A minimal evaluation dataset should include real user questions, expected source documents, unacceptable answers, no-answer cases, and regression tests for previous failures. Every change to chunking, embeddings, prompts, model provider, or retrieval threshold should be tested against that dataset.\"},\"tunes\":{}},{\"id\":\"oBlROQd5Li\",\"type\":\"list\",\"data\":{\"style\":\"unordered\",\"meta\":{},\"items\":[\"\u003Cb>Retrieval evaluation:\u003C\u002Fb> Did the system fetch the right source chunks?\",\"\u003Cb>Answer evaluation:\u003C\u002Fb> Did the answer stay grounded in the retrieved context?\",\"\u003Cb>Safety evaluation:\u003C\u002Fb> Did the system avoid forbidden disclosures or unauthorized data?\",\"\u003Cb>Operational evaluation:\u003C\u002Fb> Did latency, failure rate, and cost stay inside acceptable limits?\",\"\u003Cb>Regression evaluation:\u003C\u002Fb> Did a model or prompt upgrade break previously correct behavior?\"]},\"tunes\":{}},{\"id\":\"9gDXPLZ6Rp\",\"type\":\"paragraph\",\"data\":{\"text\":\"RAG reduces hallucinations, but it does not remove the need for evaluation. Evaluation is the control loop that turns a clever prototype into an improving product.\"},\"tunes\":{}},{\"id\":\"Hi1K8JLPUo\",\"type\":\"header\",\"data\":{\"text\":\"Deployment Discipline: The Model Is a Release Event\",\"level\":2},\"tunes\":{}},{\"id\":\"sEpigdnlkD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Changing a model is not a harmless configuration tweak. It can change answer style, reasoning behavior, language quality, latency, token usage, citation discipline, and failure modes. In production, model upgrades should be handled like release events.\"},\"tunes\":{}},{\"id\":\"sLXBCBh3E0\",\"type\":\"paragraph\",\"data\":{\"text\":\"That means versioning prompts, embedding models, retrieval settings, model identifiers, provider routes, and evaluation results. It also means having rollback logic. If a new model causes worse retrieval-grounded answers or breaks structured output, the system needs a controlled path back to the known-good configuration.\"},\"tunes\":{}},{\"id\":\"pcbe8eGMbe\",\"type\":\"paragraph\",\"data\":{\"text\":\"This fits the same operating logic as \u003Ca href=\\\"\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\\\">Delivery &amp; Change\u003C\u002Fa> and \u003Ca href=\\\"\u002Fenterprise\u002Freference-models\u002Fdigital-platform\\\">AI-ready platform architecture\u003C\u002Fa>: stable delivery requires repeatable controls, not heroic manual fixes.\"},\"tunes\":{}},{\"id\":\"mOhI-jF1zx\",\"type\":\"header\",\"data\":{\"text\":\"Conclusion: Production Begins Where the Demo Ends\",\"level\":2},\"tunes\":{}},{\"id\":\"3mXK980w23\",\"type\":\"paragraph\",\"data\":{\"text\":\"Ollama can start the journey. It makes local model execution accessible and lowers the barrier to experimentation. That is valuable. But the production application begins where the demo ends.\"},\"tunes\":{}},{\"id\":\"9O27eQ_Svm\",\"type\":\"paragraph\",\"data\":{\"text\":\"The model is only one replaceable component. The real product is the controlled system around it: ingestion, permissions, retrieval, prompts, provider routing, evaluation, logs, monitoring, deployment, backup, and user workflow. That is where privacy becomes real, quality becomes measurable, and business value becomes repeatable.\"},\"tunes\":{}},{\"id\":\"4Lyy3E4ZsF\",\"type\":\"paragraph\",\"data\":{\"text\":\"A serious Open-LLM application is built through engineering discipline, not by running a local model once. Ollama can start the journey, but the production application begins where the demo ends.\"},\"tunes\":{}},{\"id\":\"eKPRtinG5L\",\"type\":\"paragraph\",\"data\":{\"text\":\"Theme:\"},\"tunes\":{}},{\"id\":\"GMa6lE1NNl\",\"type\":\"paragraph\",\"data\":{\"text\":\"Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Provider Abstraction, Enterprise AI Architecture\"},\"tunes\":{}}],\"version\":\"2.31.5\"}",{"time":872,"blocks":873,"version":1194},1782679301267,[874,877,881,885,889,893,897,901,905,913,918,922,926,948,952,956,960,964,978,982,986,990,994,998,1011,1015,1019,1041,1045,1049,1053,1057,1061,1065,1068,1072,1076,1097,1101,1105,1109,1113,1124,1128,1132,1136,1140,1150,1154,1158,1162,1166,1170,1174,1178,1182,1186,1190],{"id":230,"data":875,"type":41,"tunes":876},{"text":869,"level":39},{},{"id":235,"data":878,"type":238,"tunes":880},{"text":879},"Tools like \u003Cb>Ollama\u003C\u002Fb> have made local LLM experimentation almost frictionless. Install the runtime, pull a model, send a prompt, and a local assistant answers in seconds. That is useful. It is also the easiest part of the journey.",{},{"id":241,"data":882,"type":238,"tunes":884},{"text":883},"A terminal demo is not an application. A local model is not a product. A productive Open-LLM application needs controlled data ingestion, retrieval, permissions, evaluation, logging, provider abstraction, deployment discipline, and a user workflow that solves a real business problem.",{},{"id":246,"data":886,"type":238,"tunes":888},{"text":887},"The core thesis is simple: \u003Cb>Ollama is a runtime, not the product\u003C\u002Fb>. The product lives in the application layer around the model. That layer decides which documents are visible, which chunks are retrieved, which prompts are used, how answers are evaluated, how failures are logged, and whether the system can be trusted in daily work.",{},{"id":251,"data":890,"type":238,"tunes":892},{"text":891},"This is where local AI becomes interesting for teams building private assistants, internal knowledge tools, LLM-enabled SaaS features, or enterprise workflow copilots. The model can run locally, but privacy, reliability, and business value only exist if the full system is engineered properly.",{},{"id":256,"data":894,"type":41,"tunes":896},{"text":895,"level":259},"Ollama Is a Runtime, Not a Product",{},{"id":262,"data":898,"type":238,"tunes":900},{"text":899},"Ollama is excellent for running and serving open models locally. It is especially strong for exploration, developer workflows, PoCs, and teams that want to test model behavior without immediately committing to a cloud provider. It exposes local model interaction through APIs and compatibility layers that make it easier to connect existing OpenAI-style tooling.",{},{"id":267,"data":902,"type":238,"tunes":904},{"text":903},"That does not mean Ollama solves the application problem. It does not automatically know which company documents a user may read. It does not create tenant isolation, document versioning, audit trails, source attribution, evaluation datasets, or business-specific UI workflows. Those responsibilities stay with the application architecture.",{},{"id":272,"data":906,"type":280,"tunes":912},{"meta":907,"items":908,"style":279},{},[909,910,911],"\u003Cb>Ollama helps with:\u003C\u002Fb> local model execution, fast experimentation, API-based model access, offline-first PoCs, and developer productivity.","\u003Cb>Ollama does not solve by itself:\u003C\u002Fb> access control, RAG quality, document lifecycle, tenant boundaries, evaluation, audit logging, monitoring, fallback behavior, or enterprise workflow design.","\u003Cb>The architectural mistake:\u003C\u002Fb> treating local inference as if it were already a secure AI product.",{},{"id":283,"data":914,"type":288,"tunes":917},{"text":915,"caption":916,"alignment":287},"The model is the easiest part. The application layer is where the product value lives.","Architecture principle",{},{"id":291,"data":919,"type":41,"tunes":921},{"text":920,"level":259},"Demo, PoC, and Production Are Different Stages",{},{"id":296,"data":923,"type":238,"tunes":925},{"text":924},"Many Open-LLM initiatives fail because teams confuse a working demo with a production capability. The difference is not cosmetic. Each maturity level has a different goal, different risk profile, and different engineering requirement.",{},{"id":301,"data":927,"type":324,"tunes":947},{"content":928,"stretched":42,"withHeadings":13},[929,934,938,942],[930,931,932,933],"Stage","What it proves","Typical setup","What is still missing",[310,935,936,937],"A model can answer a prompt locally.","Ollama on a laptop, one model, one prompt, no real data control.","Permissions, retrieval, logs, evaluation, deployment, monitoring, user workflow.",[315,939,940,941],"A small controlled system can answer questions over selected documents or workflows.","Basic web UI, ingestion script, vector search, limited users, limited document scope.","Scale, governance, test datasets, fallback strategy, auditability, support model.",[943,944,945,946],"Production","Multiple users can use the system safely and repeatedly inside real work.","Authenticated app, tenant isolation, RAG pipeline, observability, provider abstraction, backups, release process.","Continuous improvement, evaluation expansion, operational maturity.",{},{"id":327,"data":949,"type":238,"tunes":951},{"text":950},"A PoC can be intentionally small. Production cannot be intentionally blind. Once real users, private data, business decisions, and compliance expectations enter the system, the architecture must become explicit.",{},{"id":332,"data":953,"type":41,"tunes":955},{"text":954,"level":259},"Where RAG Fits In",{},{"id":337,"data":957,"type":238,"tunes":959},{"text":958},"\u003Cb>Retrieval-Augmented Generation\u003C\u002Fb> is the most common bridge between a language model and private business knowledge. The model does not magically know internal documents, contracts, tickets, product specs, or runbooks. The application must retrieve relevant context before asking the model to answer.",{},{"id":342,"data":961,"type":238,"tunes":963},{"text":962},"A practical RAG flow looks like this:",{},{"id":347,"data":965,"type":280,"tunes":977},{"meta":966,"items":967,"style":361},{"counterType":350},[968,969,970,971,972,973,974,975,976],"Documents are uploaded or synchronized from controlled sources.","Text is extracted, cleaned, and split into chunks.","Chunks receive metadata such as tenant, owner, document version, source URL, access scope, and timestamp.","Embeddings are generated for each chunk.","Vectors are stored in pgvector, Qdrant, or another retrieval layer.","At query time, the application checks permissions before retrieval.","Relevant chunks are retrieved with similarity search and metadata filters.","The prompt builder injects selected context into the model request.","The answer is generated with citations, confidence boundaries, and no-answer fallback when retrieval is weak.",{},{"id":364,"data":979,"type":238,"tunes":981},{"text":980},"RAG reduces hallucinations, but it does not eliminate them. A poor chunking strategy, weak metadata, missing permission filters, low-quality embeddings, or overly broad retrieval can still produce convincing but wrong answers. Serious RAG systems need thresholds, citations, retrieval logs, and evaluation.",{},{"id":369,"data":983,"type":41,"tunes":985},{"text":984,"level":259},"A Practical Local Open-LLM Architecture",{},{"id":374,"data":987,"type":238,"tunes":989},{"text":988},"A realistic production path does not require exotic infrastructure. For many teams, a strong first architecture can use a normal web stack: Nuxt for the frontend, a Nitro or Node API, PostgreSQL as the system of record, pgvector for retrieval, Ollama as a local runtime, Prisma for data access, and background workers for ingestion and embeddings.",{},{"id":379,"data":991,"type":382,"tunes":993},{"code":992},"User question | v\nFrontend UI | v\nAPI \u002F Backend | +--> Authentication +--> Tenant and role permission check | v\nRetrieval layer | +--> PostgreSQL metadata +--> pgvector or Qdrant vector search +--> similarity threshold | v\nPrompt builder | +--> system prompt +--> retrieved chunks +--> source references +--> no-answer rules | v\nLLM provider abstraction | +--> Ollama \u002F local model +--> cloud model fallback +--> future self-hosted runtime | v\nAnswer with sources | v\nLogs, traces, metrics, evaluation dataset",{},{"id":385,"data":995,"type":238,"tunes":997},{"text":996},"This architecture keeps the model replaceable. Ollama can be the first runtime, but the system should not be locked to one inference engine. A clean architecture separates user workflow, retrieval, prompt construction, model provider, and observability.",{},{"id":390,"data":999,"type":280,"tunes":1010},{"meta":1000,"items":1001,"style":279},{},[1002,1003,1004,1005,1006,1007,1008,1009],"\u003Cb>Frontend:\u003C\u002Fb> Nuxt or another web UI for authenticated user workflows.","\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js, or FastAPI for orchestration, permissions, and provider routing.","\u003Cb>Database:\u003C\u002Fb> PostgreSQL for documents, users, tenants, roles, prompts, logs, and metadata.","\u003Cb>Vector search:\u003C\u002Fb> pgvector for simple integrated retrieval or Qdrant when vector search becomes a dedicated service.","\u003Cb>Model runtime:\u003C\u002Fb> Ollama for local execution, llama.cpp server for lightweight serving, or vLLM for higher-throughput GPU serving.","\u003Cb>Storage:\u003C\u002Fb> local filesystem or S3-compatible object storage for uploaded files and extracted artifacts.","\u003Cb>Workers:\u003C\u002Fb> background ingestion, chunking, embedding, re-indexing, and document version processing.","\u003Cb>Observability:\u003C\u002Fb> logs, metrics, prompt traces, retrieval traces, latency tracking, and evaluation results.",{},{"id":404,"data":1012,"type":41,"tunes":1014},{"text":1013,"level":259},"The Production Readiness Checklist",{},{"id":409,"data":1016,"type":238,"tunes":1018},{"text":1017},"The following checklist is the difference between a local model demo and a usable Open-LLM application:",{},{"id":414,"data":1020,"type":280,"tunes":1040},{"meta":1021,"items":1022,"style":279},{},[1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039],"Every document and chunk has a tenant_id.","Retrieval is blocked until user and role permissions are checked.","Documents include metadata, source, owner, version, lifecycle state, and retention policy.","Chunking strategy is documented and tested against real documents.","Embedding model selection is explicit and versioned.","Vector index configuration is reproducible.","Similarity threshold prevents weak context from being used blindly.","Answers include source citations or source references where possible.","No-answer fallback is used when retrieval confidence is too low.","Prompt templates are versioned and release-controlled.","LLM provider abstraction is built from the start.","Structured output is validated before downstream use.","Evaluation dataset contains real questions, expected sources, and unacceptable answers.","Retrieval logs show which chunks were used for each answer.","Latency, token usage, GPU\u002FCPU load, and error rates are monitored.","Privacy and retention rules cover uploads, extracted text, chunks, embeddings, prompts, responses, and logs.","Deployment, backup, restore, rollback, and incident paths are documented.",{},{"id":437,"data":1042,"type":238,"tunes":1044},{"text":1043},"This connects directly with \u003Ca href=\"\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa>: useful AI is not only a model decision. It is delivery discipline, evidence, controls, metrics, and operational ownership.",{},{"id":442,"data":1046,"type":41,"tunes":1048},{"text":1047,"level":259},"Provider Abstraction: Do Not Marry One Model",{},{"id":447,"data":1050,"type":238,"tunes":1052},{"text":1051},"Local models are valuable for privacy-sensitive use cases, offline scenarios, cost control, and internal experimentation. Cloud models may still be stronger for difficult reasoning, coding, multilingual accuracy, or multimodal work. A production application should not treat any one model as permanent infrastructure.",{},{"id":452,"data":1054,"type":238,"tunes":1056},{"text":1055},"A provider abstraction allows the same application workflow to call Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM, or another self-hosted endpoint without rewriting the product. The application decides the provider based on use case, data sensitivity, latency, cost, and quality requirements.",{},{"id":457,"data":1058,"type":382,"tunes":1060},{"code":1059},"type LlmProvider = \"ollama\" | \"openai\" | \"gemini\" | \"anthropic\" | \"vllm\"; type ChatInput = { provider: LlmProvider; model: string; tenantId: string; userId: string; question: string; context: Array\u003C{ chunkId: string; sourceTitle: string; text: string; }>;\n}; async function chat(input: ChatInput) { await assertUserCanAccessContext(input.userId, input.context); const messages = buildRagMessages({ question: input.question, context: input.context, rules: [ \"Answer only from provided context when possible.\", \"Cite source titles.\", \"Say when the context is insufficient.\" ] }); return llm.chat({ provider: input.provider, model: input.model, messages, trace: { tenantId: input.tenantId, userId: input.userId, promptVersion: \"rag-v3.2\" } });\n}",{},{"id":462,"data":1062,"type":238,"tunes":1064},{"text":1063},"The key idea is not the TypeScript syntax. The key idea is the boundary. The application owns permissions, retrieval, prompt rules, tracing, and evaluation. The provider only produces the model output.",{},{"id":467,"data":1066,"type":41,"tunes":1067},{"text":469,"level":259},{},{"id":472,"data":1069,"type":238,"tunes":1071},{"text":1070},"For many Open-LLM applications, the vector store decision is simple at the beginning: if PostgreSQL is already your system of record, \u003Cb>pgvector\u003C\u002Fb> is a strong starting point. It keeps metadata, permissions, document records, and vectors close together. That reduces operational complexity.",{},{"id":477,"data":1073,"type":238,"tunes":1075},{"text":1074},"\u003Cb>Qdrant\u003C\u002Fb> becomes more attractive when vector search needs to become a dedicated service: larger retrieval scale, advanced filtering, specialized indexing, hybrid search patterns, or independent scaling of retrieval infrastructure.",{},{"id":482,"data":1077,"type":324,"tunes":1096},{"content":1078,"stretched":42,"withHeadings":13},[1079,1083,1087,1091],[486,1080,1081,1082],"Best fit","Strengths","Trade-offs",[491,1084,1085,1086],"PoCs, early production, systems already built on PostgreSQL.","Single database, SQL joins, ACID behavior, simpler operations, metadata close to vectors.","Less specialized than a dedicated vector database at large retrieval scale.",[496,1088,1089,1090],"Dedicated semantic search services, larger vector workloads, advanced filtering and retrieval patterns.","Purpose-built vector search, strong filtering model, independent scaling, retrieval-focused APIs.","Adds another infrastructure component and operational surface.",[1092,1093,1094,1095],"Start simple","Most enterprise teams beginning with private RAG applications.","Lower architecture risk, faster delivery, easier audit path.","May need migration later if retrieval becomes central and high-scale.",{},{"id":507,"data":1098,"type":238,"tunes":1100},{"text":1099},"A practical rule: start with pgvector when PostgreSQL already owns your business data and the retrieval scale is moderate. Move to Qdrant when vector search becomes a product capability of its own.",{},{"id":512,"data":1102,"type":41,"tunes":1104},{"text":1103,"level":259},"Security and Privacy Reality Check",{},{"id":517,"data":1106,"type":238,"tunes":1108},{"text":1107},"Local inference does not automatically mean secure AI. It only means the model execution can happen locally. The full data path still matters: uploaded files, extracted text, chunks, embeddings, logs, prompts, responses, backups, developer access, admin tools, and analytics exports.",{},{"id":522,"data":1110,"type":238,"tunes":1112},{"text":1111},"Embeddings also deserve care. They are not the original document, but they still represent information derived from sensitive content. Treat them as part of the protected data path, especially when they are tied to metadata, source records, user queries, or tenant identifiers.",{},{"id":527,"data":1114,"type":280,"tunes":1123},{"meta":1115,"items":1116,"style":279},{},[1117,1118,1119,1120,1121,1122],"Do not index documents before access rules are known.","Do not retrieve chunks without tenant and role filters.","Do not log full prompts and responses without retention rules.","Do not send sensitive context to a cloud model unless the policy allows it.","Do not assume that local equals GDPR-compliant; compliance depends on the complete processing design.","Do not let evaluation and debugging copies become uncontrolled shadow datasets.",{},{"id":539,"data":1125,"type":238,"tunes":1127},{"text":1126},"This is where \u003Ca href=\"\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">multi-instance SaaS architecture\u003C\u002Fa> matters. If tenants, roles, data ownership, and operational boundaries are weak, adding a local LLM can amplify risk instead of reducing it.",{},{"id":544,"data":1129,"type":41,"tunes":1131},{"text":1130,"level":259},"Evaluation Is Not Optional",{},{"id":549,"data":1133,"type":238,"tunes":1135},{"text":1134},"A production Open-LLM application needs an evaluation loop. Without it, teams only have anecdotes. A few good demo answers do not prove that retrieval works, that the prompt is stable, or that the model behaves safely across real usage.",{},{"id":554,"data":1137,"type":238,"tunes":1139},{"text":1138},"A minimal evaluation dataset should include real user questions, expected source documents, unacceptable answers, no-answer cases, and regression tests for previous failures. Every change to chunking, embeddings, prompts, model provider, or retrieval threshold should be tested against that dataset.",{},{"id":559,"data":1141,"type":280,"tunes":1149},{"meta":1142,"items":1143,"style":279},{},[1144,1145,1146,1147,1148],"\u003Cb>Retrieval evaluation:\u003C\u002Fb> Did the system fetch the right source chunks?","\u003Cb>Answer evaluation:\u003C\u002Fb> Did the answer stay grounded in the retrieved context?","\u003Cb>Safety evaluation:\u003C\u002Fb> Did the system avoid forbidden disclosures or unauthorized data?","\u003Cb>Operational evaluation:\u003C\u002Fb> Did latency, failure rate, and cost stay inside acceptable limits?","\u003Cb>Regression evaluation:\u003C\u002Fb> Did a model or prompt upgrade break previously correct behavior?",{},{"id":570,"data":1151,"type":238,"tunes":1153},{"text":1152},"RAG reduces hallucinations, but it does not remove the need for evaluation. Evaluation is the control loop that turns a clever prototype into an improving product.",{},{"id":575,"data":1155,"type":41,"tunes":1157},{"text":1156,"level":259},"Deployment Discipline: The Model Is a Release Event",{},{"id":580,"data":1159,"type":238,"tunes":1161},{"text":1160},"Changing a model is not a harmless configuration tweak. It can change answer style, reasoning behavior, language quality, latency, token usage, citation discipline, and failure modes. In production, model upgrades should be handled like release events.",{},{"id":585,"data":1163,"type":238,"tunes":1165},{"text":1164},"That means versioning prompts, embedding models, retrieval settings, model identifiers, provider routes, and evaluation results. It also means having rollback logic. If a new model causes worse retrieval-grounded answers or breaks structured output, the system needs a controlled path back to the known-good configuration.",{},{"id":590,"data":1167,"type":238,"tunes":1169},{"text":1168},"This fits the same operating logic as \u003Ca href=\"\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Delivery &amp; Change\u003C\u002Fa> and \u003Ca href=\"\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">AI-ready platform architecture\u003C\u002Fa>: stable delivery requires repeatable controls, not heroic manual fixes.",{},{"id":595,"data":1171,"type":41,"tunes":1173},{"text":1172,"level":259},"Conclusion: Production Begins Where the Demo Ends",{},{"id":600,"data":1175,"type":238,"tunes":1177},{"text":1176},"Ollama can start the journey. It makes local model execution accessible and lowers the barrier to experimentation. That is valuable. But the production application begins where the demo ends.",{},{"id":605,"data":1179,"type":238,"tunes":1181},{"text":1180},"The model is only one replaceable component. The real product is the controlled system around it: ingestion, permissions, retrieval, prompts, provider routing, evaluation, logs, monitoring, deployment, backup, and user workflow. That is where privacy becomes real, quality becomes measurable, and business value becomes repeatable.",{},{"id":610,"data":1183,"type":238,"tunes":1185},{"text":1184},"A serious Open-LLM application is built through engineering discipline, not by running a local model once. Ollama can start the journey, but the production application begins where the demo ends.",{},{"id":615,"data":1187,"type":238,"tunes":1189},{"text":1188},"Theme:",{},{"id":620,"data":1191,"type":238,"tunes":1193},{"text":1192},"Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Provider Abstraction, Enterprise AI Architecture",{},"2.31.5","Running a local model with Ollama is easy. Building a production-ready Open-LLM application is harder: it requires RAG, access control, provider abstraction, evaluation, logging, deployment discipline and a controlled application layer around the model.\n","Post erfolgreich abgerufen",{"items":1198,"source":1282,"manualIds":1283,"manualMatchedIds":1284},[1199,1205,1212,1219,1226,1233,1240,1247,1254,1261,1268,1275],{"id":1200,"slug":657,"title":1201,"excerpt":1202,"featuredImage":1203,"publishedAt":1204},"434","Umfassender Leitfaden zum Evaluation Harness: LLM-Leistungsbewertung meistern","Dieser Leitfaden bietet eine detaillierte Einführung in Evaluation Harness, ein unverzichtbares Framework zur strengen Bewertung der Fähigkeiten von Large Language Models (LLMs) in Enterprise-LLMOps-Pipelines. Erfahren Sie mehr über Einrichtung, Best Practices und fortgeschrittene Techniken, um ein zuverlässiges Modell-Benchmarking und eine Optimierung zu gewährleisten.","\u002Fuploads\u002F2026\u002F04\u002Fevaluation-harness-1775466944495-4s0xv2.webp","2026-03-01T17:50:00.000Z",{"id":1206,"slug":1207,"title":1208,"excerpt":1209,"featuredImage":1210,"publishedAt":1211},"478","what-is-rag-the-simplest-explanation-of-how-it-works","Was ist RAG? Die einfachste Erklärung, wie es funktioniert","RAG klingt kompliziert, aber die Idee ist einfach: Bevor eine KI antwortet, sucht sie zunächst nützliche Informationen aus einer Wissensquelle und gibt diese Informationen an das Sprachmodell weiter. Dieser Leitfaden erklärt RAG, LLMs, Zustand, Gedächtnis und Werkzeuge anhand eines einfachen mentalen Modells.","\u002Fuploads\u002F2026\u002F09\u002Fwhat-is-rag-the-simplest-explanation-of-how-it-works-1790377492124-khjagt.webp","2026-09-25T19:03:00.000Z",{"id":1213,"slug":1214,"title":1215,"excerpt":1216,"featuredImage":1217,"publishedAt":1218},"475","managed-agent-harness-vs-self-hosted-agent-loop-what-you-gain-what-you-lose","Managed Agent Harness vs. Self-Hosted Agent Loop: Was Sie gewinnen, was Sie verlieren","“Selbst gehosteter Agent” kann sehr unterschiedliche Architekturen bedeuten. Dieser Leitfaden unterscheidet zwischen dem Managed Harness, der selbst gehosteten Ausführungsumgebung und dem vollständig selbst betriebenen Agent-Loop—und zeigt, welche Kontrollgrenze Teams tatsächlich benötigen.","\u002Fuploads\u002F2026\u002F09\u002Fmanaged-agent-harness-vs-self-hosted-agent-loop-what-you-gain-what-you-lose-1790352403475-kj10jh.webp","2026-09-25T12:05:00.000Z",{"id":1220,"slug":1221,"title":1222,"excerpt":1223,"featuredImage":1224,"publishedAt":1225},"361","model-view-controller-mvc","Model-View-Controller (MVC): Das strukturelle Rückgrat moderner Webanwendungen","Model-View-Controller, meist als MVC abgekürzt, bleibt eines der beständigsten Architekturmuster in der Softwareentwicklung. Es bietet Teams eine praktische Möglichkeit, Geschäftslogik, Präsentation und Benutzerinteraktion zu trennen, damit Anwendungen einfacher zu erstellen, zu erweitern, zu testen und zu warten bleiben. Dieser Artikel erklärt, was MVC ist, warum es immer noch wichtig ist, wo es in die heutigen Web-Stacks passt und wie es mit der umfassenderen Plattformarchitektur, Lieferqualität, Migrationsstrategie und betrieblichen Reife zusammenhängt.","\u002Fuploads\u002F2026\u002F03\u002Fmodel-view-controller-mvc-1774872805793-0bjubu.webp","2023-04-12T12:57:00.000Z",{"id":1227,"slug":1228,"title":1229,"excerpt":1230,"featuredImage":1231,"publishedAt":1232},"468","ai-agent-memory-is-not-rag-how-to-separate-memory-retrieval-state-and-context","KI-Agenten-Gedächtnis ist kein RAG: Wie man Gedächtnis, Retrieval, Zustand und Kontext voneinander trennt","Agentengedächtnis, RAG, Zustand und Kontext werden oft so verwendet, als wären sie austauschbar. Das sind sie nicht. Dieses praktische Architekturmodell trennt die vier Schichten, zeigt, wohin jede gehört, und erklärt, was kaputtgeht, wenn Systeme sie zu einer einzigen zusammenfassen.","\u002Fuploads\u002F2026\u002F09\u002Fai-agent-memory-is-not-rag-how-to-separate-memory-retrieval-state-and-context-1790350560308-np0xy6.webp","2026-09-25T11:34:00.000Z",{"id":1234,"slug":1235,"title":1236,"excerpt":1237,"featuredImage":1238,"publishedAt":1239},"480","when-should-an-ai-stop-trusting-its-own-knowledge-the-retrieval-trigger","Wann sollte eine KI aufhören, ihrem eigenen Wissen zu vertrauen? — Der Retrieval-Trigger","Ein KI-Modell benötigt nicht für jede Frage einen Retrieval. Das wichtige Problem ist zu erkennen, wann sein internes Wissen nicht mehr ausreicht. Der Retrieval-Trigger ist eine praktische Entscheidungsgrenze, die bestimmt, wann ein KI-System aufhören sollte, sich allein auf das Modellwissen zu verlassen, und vor der Beantwortung externe Evidenz einholen sollte.","\u002Fuploads\u002F2026\u002F09\u002Fwhen-should-an-ai-stop-trusting-its-own-knowledge-the-retrieval-trigger-1790574991244-f4rpyg.webp","2026-09-28T01:49:00.000Z",{"id":1241,"slug":1242,"title":1243,"excerpt":1244,"featuredImage":1245,"publishedAt":1246},"445","qwen-3-6-in-production-release-runbook-ai-rollback-and-llmops-versioning","Qwen 3.6 in der Produktion: Release-Runbook, KI-Rollback und LLMOps-Versionierung","Qwen 3.6 ist nicht nur ein weiteres Modell-Upgrade. Es ist gleichzeitig ein Release-Ereignis, ein Rollback-Szenario und ein Versionierungsproblem. Dieser Artikel erklärt, wie Qwen 3.6 in der Produktion durch LLMOps-Disziplin, Prompt- und Modell-Rückverfolgbarkeit, kontrollierten Rollout und evidenzbasierte Rollback-Bereitschaft gehandhabt werden sollte.","\u002Fuploads\u002F2026\u002F02\u002Fnew-qwen-3-5-plus-1771515512741-dcbi9p.webp","2026-05-04T02:49:00.000Z",{"id":1248,"slug":1249,"title":1250,"excerpt":1251,"featuredImage":1252,"publishedAt":1253},"469","rag-failed-but-which-layer-actually-failed-a-diagnostic-method","RAG fehlgeschlagen – aber welche Ebene ist tatsächlich fehlgeschlagen? Eine diagnostische Methode","Wenn eine RAG-Antwort falsch ist, ist es zu vage, das Retrieval oder das Modell verantwortlich zu machen. Diese Diagnosemethode isoliert Quellenabdeckung, Query-Konstruktion, Retrieval, Ranking, Kontextzusammenstellung, Generierung, Evidenzzuordnung und Aktualität – sodass der tatsächliche Fehler reproduziert und behoben werden kann.","\u002Fuploads\u002F2026\u002F09\u002Frag-failed-but-which-layer-actually-failed-a-diagnostic-method-1790350847177-pior4c.webp","2026-09-24T19:39:00.000Z",{"id":1255,"slug":1256,"title":1257,"excerpt":1258,"featuredImage":1259,"publishedAt":1260},"460","ai-agent-reliability-why-the-final-answer-is-not-enough","Zuverlässigkeit von KI-Agenten: Warum die endgültige Antwort nicht ausreicht","Korrekte Ausgabe beweist weder korrektes Denken, sichere Ausführung noch ein vertrauenswürdiges System.","\u002Fuploads\u002F2026\u002F09\u002Fai-agent-reliability-why-the-final-answer-is-not-enough-1788955466306-pl0qhz.webp","2026-09-09T04:01:00.000Z",{"id":1262,"slug":1263,"title":1264,"excerpt":1265,"featuredImage":1266,"publishedAt":1267},"364","tipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung","Meistern des SEO-Workflows: Essenzielle Optimierungsstrategien für organisches Wachstum","Ein strukturierter SEO-Workflow ist entscheidend für nachhaltiges organisches Wachstum. Lerne die zehn grundlegenden Strategien, von der Keyword-Recherche und technischen Optimierung bis hin zur Content-Qualität und Performance-Analyse.","\u002Fuploads\u002F2026\u002F03\u002Ftipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung-1774866098131-hwkzrg.webp","2024-01-26T06:35:00.000Z",{"id":1269,"slug":1270,"title":1271,"excerpt":1272,"featuredImage":1273,"publishedAt":1274},"381","enterprise-grade-multi-tenant-architecture-for-an-international-platform","Unternehmensfähige mandantenfähige Architektur für eine internationale Plattform","Loving Rocks ist eine Hochzeitsplattform auf Unternehmensniveau, konzipiert mit einer echten Mehrmandantenarchitektur, isolierten Datenbanken pro Mandant und integrierter Internationalisierung für globale Skalierbarkeit, Sicherheit und langfristige Betriebsstabilität.","\u002Fuploads\u002F2026\u002F01\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform-1769789121298-b6v7ak.webp","2026-01-30T12:04:00.000Z",{"id":1276,"slug":1277,"title":1278,"excerpt":1279,"featuredImage":1280,"publishedAt":1281},"479","where-does-an-llm-get-its-data-rag-data-sources-in-python","Woher bezieht ein LLM seine Daten? RAG-Datenquellen in Python","Ein LLM kennt deine Dateien, Datenbanken oder APIs nicht auf magische Weise. Diese praktische Fortsetzung der RAG-Reihe zeigt mit einfachem Python, wie externe Daten zu abrufbaren Belegen werden: von Textdateien und SQL bis hin zu Volltextsuche, Embeddings, Kontextzusammenstellung und dem abschließenden LLM-Aufruf.","\u002Fuploads\u002F2026\u002F09\u002Fwhere-does-an-llm-get-its-data-rag-data-sources-in-python-1790517200521-nfsi5i.webp","2026-09-27T05:51:00.000Z","fallback",[],[]]