[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portal-settings:stajic:fr":3,"public-menus:all":38,"post:ollama-is-not-the-product-building-production-ready-open-llm-applications:fr":221,"related:post:ollama-is-not-the-product-building-production-ready-open-llm-applications:fr:1":1197},{"statusCode":4,"data":5,"message":37},200,{"tenantId":6,"lang":7,"defaultLang":8,"siteUrl":9,"contactEmail":10,"brandName":11,"logoUrl":12,"siteName":11,"siteDescription":13,"ogImage":10,"robotsIndex":14,"socialLinks":10,"reservedSlugs":10,"seoPolicy":15},"stajic","fr","de","https:\u002F\u002Fstajic.de",null,"Stajic Platform","\u002FLogo_Planet.svg","Stajic Portal",true,{"branding":16,"relatedContent":17,"crossDomainLinks":18},{"logoUrl":12},{"enabled":14},[19,22,25,28,31,34],{"url":20,"label":21,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Ffigure.rocks","figure.rocks",{"url":23,"label":24,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Floving.rocks","loving.rocks",{"url":26,"label":27,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.com","bazify.com",{"url":29,"label":30,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.de","bazify.de",{"url":32,"label":33,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.at","bazify.at",{"url":35,"label":36,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.ba","bazify.ba","Portal settings resolved",[39,45],{"id":40,"name":41,"location":42,"isActive":14,"isDefault":43,"items":44},1,"main-navigation","header",false,[],{"id":46,"name":47,"location":48,"isActive":14,"isDefault":14,"items":49},4,"main-menu","sidebar",[50,66,79,93,103,118,133],{"id":51,"title":52,"url":60,"target":61,"icon":62,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":64,"portfolioId":10,"children":65},"item-18",{"de":53,"en":54,"es":55,"fr":56,"it":54,"ru":57,"sr":58,"zh":59},"Startseite","Home","Inicio","Accueil","Главная","Почетна","首页","\u002Ffull-stack-web-developer-munich-performance-seo-and-maintainable-builds","_self","i-lucide-home","page",111,[],{"id":67,"title":68,"url":75,"target":61,"icon":76,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":77,"portfolioId":10,"children":78},"item-22",{"de":69,"en":69,"es":70,"fr":69,"it":71,"ru":72,"sr":73,"zh":74},"Vision","Visión","Visione","Видение","Визија","想象","\u002Fueber-uns-webdesign-muenchen-webaplikation","i-lucide-eye",113,[],{"id":80,"title":81,"url":89,"target":61,"icon":90,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":91,"portfolioId":10,"children":92},"item-19",{"de":82,"en":83,"es":84,"fr":83,"it":85,"ru":86,"sr":87,"zh":88},"Leistungen","Services","Servicios","Servizi","Услуги","Услуге","服务","\u002Fservices-dienstleistungen-muenchen","i-lucide-wrench",116,[],{"id":94,"title":95,"url":99,"target":61,"icon":100,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":101,"portfolioId":10,"children":102},"item-23",{"de":96,"en":96,"es":96,"fr":96,"it":96,"ru":97,"sr":97,"zh":98},"Blog","Блог","博客","\u002Fblog","i-lucide-book-open",112,[],{"id":104,"title":105,"url":114,"target":61,"icon":115,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":116,"portfolioId":10,"children":117},"item-32",{"de":106,"en":107,"es":108,"fr":109,"it":110,"ru":111,"sr":112,"zh":113},"Neue Technologien","New Technologies","Nuevas tecnologías","Nouvelles technologies","Nuove tecnologie","Новые технологии","Нове технологије","新技术！","\u002Fneue-webtechnologien","i-lucide-sparkles",122,[],{"id":119,"title":120,"url":129,"target":61,"icon":130,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":131,"portfolioId":10,"children":132},"item-20",{"de":121,"en":122,"es":123,"fr":124,"it":125,"ru":126,"sr":127,"zh":128},"Kontakt","Contact us!","Contacto","Contact","Contatto","Контакт","Контактирајте нас","联系我们！","\u002Fcontact","i-lucide-mail",115,[],{"id":134,"title":135,"url":144,"target":61,"icon":145,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":146,"portfolioId":10,"children":147},"item-21",{"de":136,"en":137,"es":138,"fr":139,"it":140,"ru":141,"sr":142,"zh":143},"Unsere Arbeit","Our Work","Nuestro trabajo","Nos réalisations","I nostri lavori","Наши работы","Наши радови","文件夹","\u002Fportfolio","i-lucide-briefcase",114,[148,161,175,191,206],{"id":149,"title":150,"url":144,"target":61,"icon":159,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":146,"portfolioId":10,"children":160},"item-24",{"de":151,"en":152,"es":153,"fr":154,"it":155,"ru":156,"sr":157,"zh":158},"Alle Projekte","All Projects","Todos los proyectos","Tous les projets","Tutti i progetti","Все проекты","Сви пројекти","所有项目","i-lucide-grid-3x3",[],{"id":162,"title":163,"url":171,"target":61,"icon":172,"isActive":14,"type":173,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":10,"children":174},"item-29",{"de":164,"en":165,"es":166,"fr":167,"it":168,"ru":169,"sr":170,"zh":143},"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":176,"title":177,"url":186,"target":61,"icon":187,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":189,"children":190},"menu-2916d060-8681-482a-af9a-c107a8bc30d8",{"de":178,"en":179,"es":180,"fr":181,"it":182,"ru":183,"sr":184,"zh":185},"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":192,"title":193,"url":202,"target":61,"icon":203,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":204,"children":205},"menu-e2061cd7-ff53-49d5-a0e8-3d49090577c0",{"de":194,"en":195,"es":196,"fr":197,"it":198,"ru":199,"sr":200,"zh":201},"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":207,"title":208,"url":217,"target":61,"icon":218,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":219,"children":220},"menu-a781582e-e90d-418e-b8c9-b070bc37c37e",{"de":209,"en":210,"es":211,"fr":212,"it":213,"ru":214,"sr":215,"zh":216},"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":222,"message":1196},{"id":223,"title":224,"slug":225,"content":226,"contentJson":227,"excerpt":625,"featuredImage":626,"featuredImageAlt":627,"featuredImageCaption":10,"featuredImageTitle":10,"featuredImageCopyright":10,"featuredImageAuthor":10,"featuredImageSourceUrl":10,"featuredImageLicense":10,"featuredImageIsAiGenerated":43,"status":628,"publishedAt":629,"createdAt":630,"updatedAt":631,"seoLocalePaths":632,"categories":641,"author":662,"translations":667},"459","Ollama n'est pas le produit : construire des applications Open-LLM prêtes pour la production","ollama-is-not-the-product-building-production-ready-open-llm-applications","\u003Ch1>Ollama n'est pas le produit : construire des applications Open-LLM prêtes pour la production\u003C\u002Fh1>\n\u003Cp>Des outils comme \u003Cb>Ollama\u003C\u002Fb> ont rendu l'expérimentation locale des LLM presque sans friction. Installez le runtime, tirez un modèle, envoyez une invite, et un assistant local répond en quelques secondes. C'est utile. C'est aussi la partie la plus facile du parcours.\u003C\u002Fp>\n\u003Cp>Une démo en terminal n'est pas une application. Un modèle local n'est pas un produit. Une application Open-LLM productive nécessite une ingestion de données contrôlée, une récupération, des permissions, une évaluation, une journalisation, une abstraction de fournisseur, une discipline de déploiement et un flux de travail utilisateur qui résout un vrai problème métier.\u003C\u002Fp>\n\u003Cp>La thèse centrale est simple : \u003Cb>Ollama est un runtime, pas le produit\u003C\u002Fb>. Le produit vit dans la couche applicative autour du modèle. Cette couche décide quels documents sont visibles, quels fragments sont récupérés, quelles invites sont utilisées, comment les réponses sont évaluées, comment les échecs sont journalisés et si le système peut être fiable au quotidien.\u003C\u002Fp>\n\u003Cp>C'est là que l'IA locale devient intéressante pour les équipes qui construisent des assistants privés, des outils de connaissance internes, des fonctionnalités SaaS basées sur les LLM ou des copilotes de workflow d'entreprise. Le modèle peut tourner localement, mais la confidentialité, la fiabilité et la valeur métier n'existent que si le système complet est correctement conçu.\u003C\u002Fp>\n\u003Ch2>Ollama est un runtime, pas un produit\u003C\u002Fh2>\n\u003Cp>Ollama est excellent pour exécuter et servir des modèles ouverts localement. Il est particulièrement fort pour l'exploration, les workflows de développement, les POC et les équipes qui souhaitent tester le comportement des modèles sans s'engager immédiatement auprès d'un fournisseur cloud. Il expose l'interaction avec les modèles locaux via des API et des couches de compatibilité qui facilitent la connexion avec les outils existants de type OpenAI.\u003C\u002Fp>\n\u003Cp>Cela ne signifie pas qu'Ollama résout le problème applicatif. Il ne sait pas automatiquement quels documents d'entreprise un utilisateur peut lire. Il ne crée pas d'isolation des locataires, de versionnage des documents, de pistes d'audit, d'attribution des sources, de jeux de données d'évaluation ou de workflows UI spécifiques au métier. Ces responsabilités restent dans l'architecture applicative.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Ollama aide pour :\u003C\u002Fb> l'exécution locale de modèles, l'expérimentation rapide, l'accès aux modèles via API, les POC hors ligne et la productivité des développeurs.\u003C\u002Fli>\u003Cli>\u003Cb>Ollama ne résout pas par lui-même :\u003C\u002Fb> le contrôle d'accès, la qualité du RAG, le cycle de vie des documents, les limites des locataires, l'évaluation, la journalisation d'audit, la surveillance, le comportement de repli ou la conception de workflows d'entreprise.\u003C\u002Fli>\u003Cli>\u003Cb>L'erreur architecturale :\u003C\u002Fb> traiter l'inférence locale comme si elle était déjà un produit IA sécurisé.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cblockquote class=\"border-l-4 border-gray-300 pl-4 italic\">Le modèle est la partie la plus facile. La couche applicative est là où réside la valeur du produit.\u003Ccite class=\"block mt-2 text-sm\">— Principe d'architecture\u003C\u002Fcite>\u003C\u002Fblockquote>\n\u003Ch2>Démo, POC et production sont des étapes différentes\u003C\u002Fh2>\n\u003Cp>De nombreuses initiatives Open-LLM échouent parce que les équipes confondent une démo fonctionnelle avec une capacité de production. La différence n'est pas cosmétique. Chaque niveau de maturité a un objectif différent, un profil de risque différent et une exigence d'ingénierie différente.\u003C\u002Fp>\n\u003Ctable class=\"w-full border-collapse\">\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Étape\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ce qu'elle prouve\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Configuration typique\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ce qui manque encore\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Démo\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Un modèle peut répondre à une invite localement.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ollama sur un ordinateur portable, un modèle, une invite, aucun contrôle réel des données.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Permissions, récupération, journaux, évaluation, déploiement, surveillance, flux de travail utilisateur.\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\">Un petit système contrôlé peut répondre à des questions sur des documents ou workflows sélectionnés.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Interface web basique, script d'ingestion, recherche vectorielle, utilisateurs limités, périmètre documentaire limité.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Échelle, gouvernance, jeux de données de test, stratégie de repli, auditabilité, modèle de support.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Production\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Plusieurs utilisateurs peuvent utiliser le système en toute sécurité et de manière répétée dans le cadre d'un travail réel.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Application authentifiée, isolation des locataires, pipeline RAG, observabilité, abstraction du fournisseur, sauvegardes, processus de publication.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Amélioration continue, expansion de l'évaluation, maturité opérationnelle.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Un POC peut être intentionnellement petit. La production ne peut pas être intentionnellement aveugle. Une fois que de vrais utilisateurs, des données privées, des décisions métier et des attentes de conformité entrent dans le système, l'architecture doit devenir explicite.\u003C\u002Fp>\n\u003Ch2>Où se situe le RAG\u003C\u002Fh2>\n\u003Cp>\u003Cb>La génération augmentée par récupération\u003C\u002Fb> est le pont le plus courant entre un modèle de langage et les connaissances métier privées. Le modèle ne connaît pas magiquement les documents internes, les contrats, les tickets, les spécifications produits ou les manuels d'exploitation. L'application doit récupérer le contexte pertinent avant de demander au modèle de répondre.\u003C\u002Fp>\n\u003Cp>Un flux RAG pratique ressemble à ceci :\u003C\u002Fp>\n\u003Col>\u003Cli>Les documents sont téléchargés ou synchronisés à partir de sources contrôlées.\u003C\u002Fli>\u003Cli>Le texte est extrait, nettoyé et divisé en fragments.\u003C\u002Fli>\u003Cli>Les fragments reçoivent des métadonnées telles que le locataire, le propriétaire, la version du document, l'URL source, le périmètre d'accès et l'horodatage.\u003C\u002Fli>\u003Cli>Des embeddings sont générés pour chaque fragment.\u003C\u002Fli>\u003Cli>Les vecteurs sont stockés dans pgvector, Qdrant ou une autre couche de récupération.\u003C\u002Fli>\u003Cli>Au moment de la requête, l'application vérifie les permissions avant la récupération.\u003C\u002Fli>\u003Cli>Les fragments pertinents sont récupérés par recherche de similarité et filtres de métadonnées.\u003C\u002Fli>\u003Cli>Le constructeur d'invite injecte le contexte sélectionné dans la requête du modèle.\u003C\u002Fli>\u003Cli>La réponse est générée avec des citations, des limites de confiance et un repli sans réponse lorsque la récupération est faible.\u003C\u002Fli>\u003C\u002Fol>\n\u003Cp>Le RAG réduit les hallucinations, mais ne les élimine pas. Une mauvaise stratégie de découpage, des métadonnées faibles, des filtres de permission manquants, des embeddings de faible qualité ou une récupération trop large peuvent toujours produire des réponses convaincantes mais erronées. Les systèmes RAG sérieux nécessitent des seuils, des citations, des journaux de récupération et une évaluation.\u003C\u002Fp>\n\u003Ch2>Une architecture pratique pour un LLM ouvert local\u003C\u002Fh2>\n\u003Cp>Un chemin de production réaliste ne nécessite pas d'infrastructure exotique. Pour de nombreuses équipes, une première architecture solide peut utiliser une pile web normale : Nuxt pour le frontend, une API Nitro ou Node, PostgreSQL comme système d'enregistrement, pgvector pour la récupération, Ollama comme runtime local, Prisma pour l'accès aux données et des workers en arrière-plan pour l'ingestion et les embeddings.\u003C\u002Fp>\n\u003Cpre class=\"code-block\">\u003Ccode>Question utilisateur | v\nInterface utilisateur frontend | v\nAPI \u002F Backend | +--&gt; Authentification +--&gt; Vérification des permissions du locataire et du rôle | v\nCouche de récupération | +--&gt; Métadonnées PostgreSQL +--&gt; Recherche vectorielle pgvector ou Qdrant +--&gt; Seuil de similarité | v\nConstructeur de prompt | +--&gt; Prompt système +--&gt; Morceaux récupérés +--&gt; Références sources +--&gt; Règles de non-réponse | v\nAbstraction du fournisseur LLM | +--&gt; Ollama \u002F modèle local +--&gt; Repli vers modèle cloud +--&gt; Futur runtime auto-hébergé | v\nRéponse avec sources | v\nJournaux, traces, métriques, jeu de données d&#39;évaluation\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Cette architecture maintient le modèle remplaçable. Ollama peut être le premier runtime, mais le système ne doit pas être verrouillé sur un seul moteur d'inférence. Une architecture propre sépare le flux de travail utilisateur, la récupération, la construction du prompt, le fournisseur de modèle et l'observabilité.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Frontend :\u003C\u002Fb> Nuxt ou une autre interface web pour les flux de travail utilisateur authentifiés.\u003C\u002Fli>\u003Cli>\u003Cb>Backend\u002FAPI :\u003C\u002Fb> Nitro, Node.js ou FastAPI pour l'orchestration, les permissions et le routage des fournisseurs.\u003C\u002Fli>\u003Cli>\u003Cb>Base de données :\u003C\u002Fb> PostgreSQL pour les documents, utilisateurs, locataires, rôles, prompts, journaux et métadonnées.\u003C\u002Fli>\u003Cli>\u003Cb>Recherche vectorielle :\u003C\u002Fb> pgvector pour une récupération intégrée simple ou Qdrant lorsque la recherche vectorielle devient un service dédié.\u003C\u002Fli>\u003Cli>\u003Cb>Runtime du modèle :\u003C\u002Fb> Ollama pour l'exécution locale, serveur llama.cpp pour un service léger, ou vLLM pour un service GPU à plus haut débit.\u003C\u002Fli>\u003Cli>\u003Cb>Stockage :\u003C\u002Fb> système de fichiers local ou stockage d'objets compatible S3 pour les fichiers téléchargés et les artefacts extraits.\u003C\u002Fli>\u003Cli>\u003Cb>Workers :\u003C\u002Fb> ingestion en arrière-plan, découpage, embedding, ré-indexation et traitement des versions de documents.\u003C\u002Fli>\u003Cli>\u003Cb>Observabilité :\u003C\u002Fb> journaux, métriques, traces de prompt, traces de récupération, suivi de latence et résultats d'évaluation.\u003C\u002Fli>\u003C\u002Ful>\n\u003Ch2>La checklist de préparation à la production\u003C\u002Fh2>\n\u003Cp>La checklist suivante fait la différence entre une démo de modèle local et une application Open-LLM utilisable :\u003C\u002Fp>\n\u003Cul>\u003Cli>Chaque document et morceau a un tenant_id.\u003C\u002Fli>\u003Cli>La récupération est bloquée jusqu'à ce que les permissions de l'utilisateur et du rôle soient vérifiées.\u003C\u002Fli>\u003Cli>Les documents incluent des métadonnées, la source, le propriétaire, la version, l'état du cycle de vie et la politique de conservation.\u003C\u002Fli>\u003Cli>La stratégie de découpage est documentée et testée sur des documents réels.\u003C\u002Fli>\u003Cli>La sélection du modèle d'embedding est explicite et versionnée.\u003C\u002Fli>\u003Cli>La configuration de l'index vectoriel est reproductible.\u003C\u002Fli>\u003Cli>Un seuil de similarité empêche l'utilisation aveugle d'un contexte faible.\u003C\u002Fli>\u003Cli>Les réponses incluent des citations de sources ou des références sources lorsque c'est possible.\u003C\u002Fli>\u003Cli>Un repli sans réponse est utilisé lorsque la confiance dans la récupération est trop faible.\u003C\u002Fli>\u003Cli>Les modèles de prompt sont versionnés et contrôlés par version.\u003C\u002Fli>\u003Cli>L'abstraction du fournisseur LLM est construite dès le départ.\u003C\u002Fli>\u003Cli>La sortie structurée est validée avant une utilisation en aval.\u003C\u002Fli>\u003Cli>Le jeu de données d'évaluation contient des questions réelles, des sources attendues et des réponses inacceptables.\u003C\u002Fli>\u003Cli>Les journaux de récupération montrent quels morceaux ont été utilisés pour chaque réponse.\u003C\u002Fli>\u003Cli>La latence, l'utilisation des tokens, la charge GPU\u002FCPU et les taux d'erreur sont surveillés.\u003C\u002Fli>\u003Cli>Les règles de confidentialité et de conservation couvrent les téléchargements, le texte extrait, les morceaux, les embeddings, les prompts, les réponses et les journaux.\u003C\u002Fli>\u003Cli>Les chemins de déploiement, sauvegarde, restauration, rollback et incident sont documentés.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Cela se connecte directement avec \u003Ca href=\"\u002Ffr\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa> : une IA utile n'est pas seulement une décision de modèle. C'est une discipline de livraison, des preuves, des contrôles, des métriques et une propriété opérationnelle.\u003C\u002Fp>\n\u003Ch2>Abstraction du fournisseur : ne pas épouser un seul modèle\u003C\u002Fh2>\n\u003Cp>Les modèles locaux sont précieux pour les cas d'usage sensibles à la vie privée, les scénarios hors ligne, le contrôle des coûts et l'expérimentation interne. Les modèles cloud peuvent encore être plus performants pour le raisonnement difficile, le codage, la précision multilingue ou le travail multimodal. Une application de production ne doit traiter aucun modèle comme une infrastructure permanente.\u003C\u002Fp>\n\u003Cp>Une abstraction du fournisseur permet au même flux de travail applicatif d'appeler Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM ou un autre point de terminaison auto-hébergé sans réécrire le produit. L'application décide du fournisseur en fonction du cas d'usage, de la sensibilité des données, de la latence, du coût et des exigences de qualité.\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;Answer only from provided context when possible.&quot;, &quot;Cite source titles.&quot;, &quot;Say when the context is insufficient.&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>L'idée clé n'est pas la syntaxe TypeScript. L'idée clé est la frontière. L'application possède les permissions, la récupération, les règles de prompt, le traçage et l'évaluation. Le fournisseur ne produit que la sortie du modèle.\u003C\u002Fp>\n\u003Ch2>pgvector vs Qdrant\u003C\u002Fh2>\n\u003Cp>Pour de nombreuses applications Open-LLM, la décision concernant le magasin vectoriel est simple au début : si PostgreSQL est déjà votre système d'enregistrement, \u003Cb>pgvector\u003C\u002Fb> est un bon point de départ. Il garde les métadonnées, les permissions, les enregistrements de documents et les vecteurs proches les uns des autres. Cela réduit la complexité opérationnelle.\u003C\u002Fp>\n\u003Cp>\u003Cb>Qdrant\u003C\u002Fb> devient plus attractif lorsque la recherche vectorielle doit devenir un service dédié : échelle de récupération plus grande, filtrage avancé, indexation spécialisée, modèles de recherche hybrides ou mise à l'échelle indépendante de l'infrastructure de récupération.\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\">Meilleur ajustement\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Points forts\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Compromis\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\">PoC, début de production, systèmes déjà construits sur PostgreSQL.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Base de données unique, jointures SQL, comportement ACID, opérations simplifiées, métadonnées proches des vecteurs.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Moins spécialisé qu'une base de données vectorielles dédiée à grande échelle de récupération.\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\">Services de recherche sémantique dédiés, charges de travail vectorielles plus importantes, filtrage avancé et modèles de récupération.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Recherche vectorielle conçue sur mesure, modèle de filtrage robuste, mise à l'échelle indépendante, API axées sur la récupération.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ajoute un composant d'infrastructure supplémentaire et une surface opérationnelle.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Commencer simplement\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">La plupart des équipes d'entreprise commençant par des applications RAG privées.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Risque architectural réduit, livraison plus rapide, chemin d'audit plus facile.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Peut nécessiter une migration ultérieure si la récupération devient centrale et à grande échelle.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Une règle pratique : commencez avec pgvector lorsque PostgreSQL possède déjà vos données métier et que l'échelle de récupération est modérée. Passez à Qdrant lorsque la recherche vectorielle devient une capacité produit à part entière.\u003C\u002Fp>\n\u003Ch2>Vérification de la réalité en matière de sécurité et de confidentialité\u003C\u002Fh2>\n\u003Cp>L'inférence locale ne signifie pas automatiquement une IA sécurisée. Cela signifie seulement que l'exécution du modèle peut avoir lieu localement. Le chemin complet des données compte toujours : fichiers téléchargés, texte extrait, morceaux, embeddings, journaux, invites, réponses, sauvegardes, accès développeur, outils d'administration et exportations analytiques.\u003C\u002Fp>\n\u003Cp>Les embeddings méritent également de l'attention. Ils ne sont pas le document original, mais ils représentent toujours des informations dérivées de contenu sensible. Traitez-les comme faisant partie du chemin de données protégé, surtout lorsqu'ils sont liés à des métadonnées, des enregistrements sources, des requêtes utilisateur ou des identifiants de locataire.\u003C\u002Fp>\n\u003Cul>\u003Cli>N'indexez pas les documents avant que les règles d'accès ne soient connues.\u003C\u002Fli>\u003Cli>Ne récupérez pas de morceaux sans filtres de locataire et de rôle.\u003C\u002Fli>\u003Cli>Ne journalisez pas les invites et réponses complètes sans règles de conservation.\u003C\u002Fli>\u003Cli>N'envoyez pas de contexte sensible à un modèle cloud à moins que la politique ne le permette.\u003C\u002Fli>\u003Cli>Ne supposez pas que local équivaut à conforme au RGPD ; la conformité dépend de la conception complète du traitement.\u003C\u002Fli>\u003Cli>Ne laissez pas les copies d'évaluation et de débogage devenir des ensembles de données fantômes non contrôlés.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>C'est là que l'\u003Ca href=\"\u002Ffr\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">architecture SaaS multi-instance\u003C\u002Fa> compte. Si les locataires, les rôles, la propriété des données et les limites opérationnelles sont faibles, l'ajout d'un LLM local peut amplifier le risque au lieu de le réduire.\u003C\u002Fp>\n\u003Ch2>L'évaluation n'est pas facultative\u003C\u002Fh2>\n\u003Cp>Une application Open-LLM en production a besoin d'une boucle d'évaluation. Sans elle, les équipes n'ont que des anecdotes. Quelques bonnes réponses de démonstration ne prouvent pas que la récupération fonctionne, que l'invite est stable ou que le modèle se comporte de manière sécurisée dans une utilisation réelle.\u003C\u002Fp>\n\u003Cp>Un ensemble de données d'évaluation minimal devrait inclure des questions réelles d'utilisateurs, les documents sources attendus, les réponses inacceptables, les cas sans réponse et les tests de régression pour les échecs précédents. Chaque modification du découpage, des embeddings, des invites, du fournisseur de modèle ou du seuil de récupération devrait être testée par rapport à cet ensemble de données.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Évaluation de la récupération :\u003C\u002Fb> Le système a-t-il récupéré les bons morceaux sources ?\u003C\u002Fli>\u003Cli>\u003Cb>Évaluation de la réponse :\u003C\u002Fb> La réponse est-elle restée ancrée dans le contexte récupéré ?\u003C\u002Fli>\u003Cli>\u003Cb>Évaluation de la sécurité :\u003C\u002Fb> Le système a-t-il évité les divulgations interdites ou les données non autorisées ?\u003C\u002Fli>\u003Cli>\u003Cb>Évaluation opérationnelle :\u003C\u002Fb> La latence, le taux d'échec et le coût sont-ils restés dans des limites acceptables ?\u003C\u002Fli>\u003Cli>\u003Cb>Évaluation de régression :\u003C\u002Fb> Une mise à niveau du modèle ou de l'invite a-t-elle cassé un comportement auparavant correct ?\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Le RAG réduit les hallucinations, mais il ne supprime pas le besoin d'évaluation. L'évaluation est la boucle de contrôle qui transforme un prototype astucieux en un produit en amélioration.\u003C\u002Fp>\n\u003Ch2>Discipline de déploiement : le modèle est un événement de version\u003C\u002Fh2>\n\u003Cp>Changer de modèle n'est pas une simple modification de configuration inoffensive. Cela peut changer le style de réponse, le comportement de raisonnement, la qualité de la langue, la latence, l'utilisation des jetons, la discipline de citation et les modes d'échec. En production, les mises à niveau de modèle doivent être traitées comme des événements de version.\u003C\u002Fp>\n\u003Cp>Cela signifie versionner les invites, les modèles d'embedding, les paramètres de récupération, les identifiants de modèle, les routes de fournisseur et les résultats d'évaluation. Cela signifie également avoir une logique de retour arrière. Si un nouveau modèle provoque des réponses moins bien ancrées dans la récupération ou casse la sortie structurée, le système a besoin d'un chemin contrôlé pour revenir à la configuration connue comme bonne.\u003C\u002Fp>\n\u003Cp>Cela correspond à la même logique de fonctionnement que \u003Ca href=\"\u002Ffr\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Livraison et changement\u003C\u002Fa> et \u003Ca href=\"\u002Ffr\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">l'architecture de plateforme prête pour l'IA\u003C\u002Fa> : une livraison stable nécessite des contrôles reproductibles, pas des correctifs manuels héroïques.\u003C\u002Fp>\n\u003Ch2>Conclusion : la production commence là où la démo se termine\u003C\u002Fh2>\n\u003Cp>Ollama peut démarrer le voyage. Il rend l'exécution locale du modèle accessible et abaisse la barrière à l'expérimentation. C'est précieux. Mais l'application de production commence là où la démo se termine.\u003C\u002Fp>\n\u003Cp>Le modèle n'est qu'un composant remplaçable. Le véritable produit est le système contrôlé qui l'entoure : ingestion, autorisations, récupération, prompts, routage des fournisseurs, évaluation, journaux, surveillance, déploiement, sauvegarde et flux de travail de l'utilisateur. C'est là que la confidentialité devient réelle, que la qualité devient mesurable et que la valeur commerciale devient reproductible.\u003C\u002Fp>\n\u003Cp>Une application Open-LLM sérieuse se construit grâce à une discipline d'ingénierie, et non en exécutant un modèle local une seule fois. Ollama peut commencer le voyage, mais l'application de production commence là où la démo s'arrête.\u003C\u002Fp>\n\u003Cp>Thème :\u003C\u002Fp>\n\u003Cp>Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Abstraction de fournisseurs, Architecture IA d'entreprise\u003C\u002Fp>",{"time":228,"blocks":229,"version":624},1782679936570,[230,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":231,"data":232,"type":42,"tunes":233},"HsB_-_Sdzh",{"text":224,"level":40},{},{"id":235,"data":236,"type":238,"tunes":239},"G_FTnJiMVo",{"text":237},"Des outils comme \u003Cb>Ollama\u003C\u002Fb> ont rendu l'expérimentation locale des LLM presque sans friction. Installez le runtime, tirez un modèle, envoyez une invite, et un assistant local répond en quelques secondes. C'est utile. C'est aussi la partie la plus facile du parcours.","paragraph",{},{"id":241,"data":242,"type":238,"tunes":244},"fVa1sJxmy6",{"text":243},"Une démo en terminal n'est pas une application. Un modèle local n'est pas un produit. Une application Open-LLM productive nécessite une ingestion de données contrôlée, une récupération, des permissions, une évaluation, une journalisation, une abstraction de fournisseur, une discipline de déploiement et un flux de travail utilisateur qui résout un vrai problème métier.",{},{"id":246,"data":247,"type":238,"tunes":249},"f6EzZPNhRc",{"text":248},"La thèse centrale est simple : \u003Cb>Ollama est un runtime, pas le produit\u003C\u002Fb>. Le produit vit dans la couche applicative autour du modèle. Cette couche décide quels documents sont visibles, quels fragments sont récupérés, quelles invites sont utilisées, comment les réponses sont évaluées, comment les échecs sont journalisés et si le système peut être fiable au quotidien.",{},{"id":251,"data":252,"type":238,"tunes":254},"wjgsXAJQ-i",{"text":253},"C'est là que l'IA locale devient intéressante pour les équipes qui construisent des assistants privés, des outils de connaissance internes, des fonctionnalités SaaS basées sur les LLM ou des copilotes de workflow d'entreprise. Le modèle peut tourner localement, mais la confidentialité, la fiabilité et la valeur métier n'existent que si le système complet est correctement conçu.",{},{"id":256,"data":257,"type":42,"tunes":260},"NnYUiRBtwJ",{"text":258,"level":259},"Ollama est un runtime, pas un produit",2,{},{"id":262,"data":263,"type":238,"tunes":265},"nVrpsWCll3",{"text":264},"Ollama est excellent pour exécuter et servir des modèles ouverts localement. Il est particulièrement fort pour l'exploration, les workflows de développement, les POC et les équipes qui souhaitent tester le comportement des modèles sans s'engager immédiatement auprès d'un fournisseur cloud. Il expose l'interaction avec les modèles locaux via des API et des couches de compatibilité qui facilitent la connexion avec les outils existants de type OpenAI.",{},{"id":267,"data":268,"type":238,"tunes":270},"_aQOCMkaG8",{"text":269},"Cela ne signifie pas qu'Ollama résout le problème applicatif. Il ne sait pas automatiquement quels documents d'entreprise un utilisateur peut lire. Il ne crée pas d'isolation des locataires, de versionnage des documents, de pistes d'audit, d'attribution des sources, de jeux de données d'évaluation ou de workflows UI spécifiques au métier. Ces responsabilités restent dans l'architecture applicative.",{},{"id":272,"data":273,"type":280,"tunes":281},"jeeZbnQvh7",{"meta":274,"items":275,"style":279},{},[276,277,278],"\u003Cb>Ollama aide pour :\u003C\u002Fb> l'exécution locale de modèles, l'expérimentation rapide, l'accès aux modèles via API, les POC hors ligne et la productivité des développeurs.","\u003Cb>Ollama ne résout pas par lui-même :\u003C\u002Fb> le contrôle d'accès, la qualité du RAG, le cycle de vie des documents, les limites des locataires, l'évaluation, la journalisation d'audit, la surveillance, le comportement de repli ou la conception de workflows d'entreprise.","\u003Cb>L'erreur architecturale :\u003C\u002Fb> traiter l'inférence locale comme si elle était déjà un produit IA sécurisé.","unordered","list",{},{"id":283,"data":284,"type":288,"tunes":289},"U8K0Qat9xz",{"text":285,"caption":286,"alignment":287},"Le modèle est la partie la plus facile. La couche applicative est là où réside la valeur du produit.","Principe d'architecture","left","quote",{},{"id":291,"data":292,"type":42,"tunes":294},"NYU66FQDT8",{"text":293,"level":259},"Démo, POC et production sont des étapes différentes",{},{"id":296,"data":297,"type":238,"tunes":299},"-EGq4eScAy",{"text":298},"De nombreuses initiatives Open-LLM échouent parce que les équipes confondent une démo fonctionnelle avec une capacité de production. La différence n'est pas cosmétique. Chaque niveau de maturité a un objectif différent, un profil de risque différent et une exigence d'ingénierie différente.",{},{"id":301,"data":302,"type":324,"tunes":325},"V_OydBfVSx",{"content":303,"stretched":43,"withHeadings":14},[304,309,314,319],[305,306,307,308],"Étape","Ce qu'elle prouve","Configuration typique","Ce qui manque encore",[310,311,312,313],"Démo","Un modèle peut répondre à une invite localement.","Ollama sur un ordinateur portable, un modèle, une invite, aucun contrôle réel des données.","Permissions, récupération, journaux, évaluation, déploiement, surveillance, flux de travail utilisateur.",[315,316,317,318],"POC","Un petit système contrôlé peut répondre à des questions sur des documents ou workflows sélectionnés.","Interface web basique, script d'ingestion, recherche vectorielle, utilisateurs limités, périmètre documentaire limité.","Échelle, gouvernance, jeux de données de test, stratégie de repli, auditabilité, modèle de support.",[320,321,322,323],"Production","Plusieurs utilisateurs peuvent utiliser le système en toute sécurité et de manière répétée dans le cadre d'un travail réel.","Application authentifiée, isolation des locataires, pipeline RAG, observabilité, abstraction du fournisseur, sauvegardes, processus de publication.","Amélioration continue, expansion de l'évaluation, maturité opérationnelle.","table",{},{"id":327,"data":328,"type":238,"tunes":330},"ikp3g9j4So",{"text":329},"Un POC peut être intentionnellement petit. La production ne peut pas être intentionnellement aveugle. Une fois que de vrais utilisateurs, des données privées, des décisions métier et des attentes de conformité entrent dans le système, l'architecture doit devenir explicite.",{},{"id":332,"data":333,"type":42,"tunes":335},"f1xN0TAU53",{"text":334,"level":259},"Où se situe le RAG",{},{"id":337,"data":338,"type":238,"tunes":340},"wVTJ2-nEg8",{"text":339},"\u003Cb>La génération augmentée par récupération\u003C\u002Fb> est le pont le plus courant entre un modèle de langage et les connaissances métier privées. Le modèle ne connaît pas magiquement les documents internes, les contrats, les tickets, les spécifications produits ou les manuels d'exploitation. L'application doit récupérer le contexte pertinent avant de demander au modèle de répondre.",{},{"id":342,"data":343,"type":238,"tunes":345},"fvxr_M2czf",{"text":344},"Un flux RAG pratique ressemble à ceci :",{},{"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],"Les documents sont téléchargés ou synchronisés à partir de sources contrôlées.","Le texte est extrait, nettoyé et divisé en fragments.","Les fragments reçoivent des métadonnées telles que le locataire, le propriétaire, la version du document, l'URL source, le périmètre d'accès et l'horodatage.","Des embeddings sont générés pour chaque fragment.","Les vecteurs sont stockés dans pgvector, Qdrant ou une autre couche de récupération.","Au moment de la requête, l'application vérifie les permissions avant la récupération.","Les fragments pertinents sont récupérés par recherche de similarité et filtres de métadonnées.","Le constructeur d'invite injecte le contexte sélectionné dans la requête du modèle.","La réponse est générée avec des citations, des limites de confiance et un repli sans réponse lorsque la récupération est faible.","ordered",{},{"id":364,"data":365,"type":238,"tunes":367},"5VP9OTHrad",{"text":366},"Le RAG réduit les hallucinations, mais ne les élimine pas. Une mauvaise stratégie de découpage, des métadonnées faibles, des filtres de permission manquants, des embeddings de faible qualité ou une récupération trop large peuvent toujours produire des réponses convaincantes mais erronées. Les systèmes RAG sérieux nécessitent des seuils, des citations, des journaux de récupération et une évaluation.",{},{"id":369,"data":370,"type":42,"tunes":372},"6R3G0KzeXf",{"text":371,"level":259},"Une architecture pratique pour un LLM ouvert local",{},{"id":374,"data":375,"type":238,"tunes":377},"hsYURnHqGd",{"text":376},"Un chemin de production réaliste ne nécessite pas d'infrastructure exotique. Pour de nombreuses équipes, une première architecture solide peut utiliser une pile web normale : Nuxt pour le frontend, une API Nitro ou Node, PostgreSQL comme système d'enregistrement, pgvector pour la récupération, Ollama comme runtime local, Prisma pour l'accès aux données et des workers en arrière-plan pour l'ingestion et les embeddings.",{},{"id":379,"data":380,"type":382,"tunes":383},"ie58nqmk5o",{"code":381},"Question utilisateur | v\nInterface utilisateur frontend | v\nAPI \u002F Backend | +--> Authentification +--> Vérification des permissions du locataire et du rôle | v\nCouche de récupération | +--> Métadonnées PostgreSQL +--> Recherche vectorielle pgvector ou Qdrant +--> Seuil de similarité | v\nConstructeur de prompt | +--> Prompt système +--> Morceaux récupérés +--> Références sources +--> Règles de non-réponse | v\nAbstraction du fournisseur LLM | +--> Ollama \u002F modèle local +--> Repli vers modèle cloud +--> Futur runtime auto-hébergé | v\nRéponse avec sources | v\nJournaux, traces, métriques, jeu de données d'évaluation","code",{},{"id":385,"data":386,"type":238,"tunes":388},"HCdDDntKaG",{"text":387},"Cette architecture maintient le modèle remplaçable. Ollama peut être le premier runtime, mais le système ne doit pas être verrouillé sur un seul moteur d'inférence. Une architecture propre sépare le flux de travail utilisateur, la récupération, la construction du prompt, le fournisseur de modèle et l'observabilité.",{},{"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 ou une autre interface web pour les flux de travail utilisateur authentifiés.","\u003Cb>Backend\u002FAPI :\u003C\u002Fb> Nitro, Node.js ou FastAPI pour l'orchestration, les permissions et le routage des fournisseurs.","\u003Cb>Base de données :\u003C\u002Fb> PostgreSQL pour les documents, utilisateurs, locataires, rôles, prompts, journaux et métadonnées.","\u003Cb>Recherche vectorielle :\u003C\u002Fb> pgvector pour une récupération intégrée simple ou Qdrant lorsque la recherche vectorielle devient un service dédié.","\u003Cb>Runtime du modèle :\u003C\u002Fb> Ollama pour l'exécution locale, serveur llama.cpp pour un service léger, ou vLLM pour un service GPU à plus haut débit.","\u003Cb>Stockage :\u003C\u002Fb> système de fichiers local ou stockage d'objets compatible S3 pour les fichiers téléchargés et les artefacts extraits.","\u003Cb>Workers :\u003C\u002Fb> ingestion en arrière-plan, découpage, embedding, ré-indexation et traitement des versions de documents.","\u003Cb>Observabilité :\u003C\u002Fb> journaux, métriques, traces de prompt, traces de récupération, suivi de latence et résultats d'évaluation.",{},{"id":404,"data":405,"type":42,"tunes":407},"CG1PJLbPuV",{"text":406,"level":259},"La checklist de préparation à la production",{},{"id":409,"data":410,"type":238,"tunes":412},"aOHxNXO4Mk",{"text":411},"La checklist suivante fait la différence entre une démo de modèle local et une application Open-LLM utilisable :",{},{"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],"Chaque document et morceau a un tenant_id.","La récupération est bloquée jusqu'à ce que les permissions de l'utilisateur et du rôle soient vérifiées.","Les documents incluent des métadonnées, la source, le propriétaire, la version, l'état du cycle de vie et la politique de conservation.","La stratégie de découpage est documentée et testée sur des documents réels.","La sélection du modèle d'embedding est explicite et versionnée.","La configuration de l'index vectoriel est reproductible.","Un seuil de similarité empêche l'utilisation aveugle d'un contexte faible.","Les réponses incluent des citations de sources ou des références sources lorsque c'est possible.","Un repli sans réponse est utilisé lorsque la confiance dans la récupération est trop faible.","Les modèles de prompt sont versionnés et contrôlés par version.","L'abstraction du fournisseur LLM est construite dès le départ.","La sortie structurée est validée avant une utilisation en aval.","Le jeu de données d'évaluation contient des questions réelles, des sources attendues et des réponses inacceptables.","Les journaux de récupération montrent quels morceaux ont été utilisés pour chaque réponse.","La latence, l'utilisation des tokens, la charge GPU\u002FCPU et les taux d'erreur sont surveillés.","Les règles de confidentialité et de conservation couvrent les téléchargements, le texte extrait, les morceaux, les embeddings, les prompts, les réponses et les journaux.","Les chemins de déploiement, sauvegarde, restauration, rollback et incident sont documentés.",{},{"id":437,"data":438,"type":238,"tunes":440},"tdTcmD4DEO",{"text":439},"Cela se connecte directement avec \u003Ca href=\"\u002Ffr\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa> : une IA utile n'est pas seulement une décision de modèle. C'est une discipline de livraison, des preuves, des contrôles, des métriques et une propriété opérationnelle.",{},{"id":442,"data":443,"type":42,"tunes":445},"zOuV7s1ByX",{"text":444,"level":259},"Abstraction du fournisseur : ne pas épouser un seul modèle",{},{"id":447,"data":448,"type":238,"tunes":450},"gPuC35eEAc",{"text":449},"Les modèles locaux sont précieux pour les cas d'usage sensibles à la vie privée, les scénarios hors ligne, le contrôle des coûts et l'expérimentation interne. Les modèles cloud peuvent encore être plus performants pour le raisonnement difficile, le codage, la précision multilingue ou le travail multimodal. Une application de production ne doit traiter aucun modèle comme une infrastructure permanente.",{},{"id":452,"data":453,"type":238,"tunes":455},"ssy1KKIyUv",{"text":454},"Une abstraction du fournisseur permet au même flux de travail applicatif d'appeler Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM ou un autre point de terminaison auto-hébergé sans réécrire le produit. L'application décide du fournisseur en fonction du cas d'usage, de la sensibilité des données, de la latence, du coût et des exigences de qualité.",{},{"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: [ \"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":463,"type":238,"tunes":465},"TqpI4xqkq1",{"text":464},"L'idée clé n'est pas la syntaxe TypeScript. L'idée clé est la frontière. L'application possède les permissions, la récupération, les règles de prompt, le traçage et l'évaluation. Le fournisseur ne produit que la sortie du modèle.",{},{"id":467,"data":468,"type":42,"tunes":470},"RuZt2H8Qtd",{"text":469,"level":259},"pgvector vs Qdrant",{},{"id":472,"data":473,"type":238,"tunes":475},"-nl0_dtw9s",{"text":474},"Pour de nombreuses applications Open-LLM, la décision concernant le magasin vectoriel est simple au début : si PostgreSQL est déjà votre système d'enregistrement, \u003Cb>pgvector\u003C\u002Fb> est un bon point de départ. Il garde les métadonnées, les permissions, les enregistrements de documents et les vecteurs proches les uns des autres. Cela réduit la complexité opérationnelle.",{},{"id":477,"data":478,"type":238,"tunes":480},"mJJZ9Vhiy4",{"text":479},"\u003Cb>Qdrant\u003C\u002Fb> devient plus attractif lorsque la recherche vectorielle doit devenir un service dédié : échelle de récupération plus grande, filtrage avancé, indexation spécialisée, modèles de recherche hybrides ou mise à l'échelle indépendante de l'infrastructure de récupération.",{},{"id":482,"data":483,"type":324,"tunes":505},"ZNBNQmWTqi",{"content":484,"stretched":43,"withHeadings":14},[485,490,495,500],[486,487,488,489],"Option","Meilleur ajustement","Points forts","Compromis",[491,492,493,494],"pgvector","PoC, début de production, systèmes déjà construits sur PostgreSQL.","Base de données unique, jointures SQL, comportement ACID, opérations simplifiées, métadonnées proches des vecteurs.","Moins spécialisé qu'une base de données vectorielles dédiée à grande échelle de récupération.",[496,497,498,499],"Qdrant","Services de recherche sémantique dédiés, charges de travail vectorielles plus importantes, filtrage avancé et modèles de récupération.","Recherche vectorielle conçue sur mesure, modèle de filtrage robuste, mise à l'échelle indépendante, API axées sur la récupération.","Ajoute un composant d'infrastructure supplémentaire et une surface opérationnelle.",[501,502,503,504],"Commencer simplement","La plupart des équipes d'entreprise commençant par des applications RAG privées.","Risque architectural réduit, livraison plus rapide, chemin d'audit plus facile.","Peut nécessiter une migration ultérieure si la récupération devient centrale et à grande échelle.",{},{"id":507,"data":508,"type":238,"tunes":510},"EaNwvz0Ala",{"text":509},"Une règle pratique : commencez avec pgvector lorsque PostgreSQL possède déjà vos données métier et que l'échelle de récupération est modérée. Passez à Qdrant lorsque la recherche vectorielle devient une capacité produit à part entière.",{},{"id":512,"data":513,"type":42,"tunes":515},"Xm3eJKCflO",{"text":514,"level":259},"Vérification de la réalité en matière de sécurité et de confidentialité",{},{"id":517,"data":518,"type":238,"tunes":520},"rdIR5uvVuv",{"text":519},"L'inférence locale ne signifie pas automatiquement une IA sécurisée. Cela signifie seulement que l'exécution du modèle peut avoir lieu localement. Le chemin complet des données compte toujours : fichiers téléchargés, texte extrait, morceaux, embeddings, journaux, invites, réponses, sauvegardes, accès développeur, outils d'administration et exportations analytiques.",{},{"id":522,"data":523,"type":238,"tunes":525},"IhqG3kxPSc",{"text":524},"Les embeddings méritent également de l'attention. Ils ne sont pas le document original, mais ils représentent toujours des informations dérivées de contenu sensible. Traitez-les comme faisant partie du chemin de données protégé, surtout lorsqu'ils sont liés à des métadonnées, des enregistrements sources, des requêtes utilisateur ou des identifiants de locataire.",{},{"id":527,"data":528,"type":280,"tunes":537},"QvcBrg8G6B",{"meta":529,"items":530,"style":279},{},[531,532,533,534,535,536],"N'indexez pas les documents avant que les règles d'accès ne soient connues.","Ne récupérez pas de morceaux sans filtres de locataire et de rôle.","Ne journalisez pas les invites et réponses complètes sans règles de conservation.","N'envoyez pas de contexte sensible à un modèle cloud à moins que la politique ne le permette.","Ne supposez pas que local équivaut à conforme au RGPD ; la conformité dépend de la conception complète du traitement.","Ne laissez pas les copies d'évaluation et de débogage devenir des ensembles de données fantômes non contrôlés.",{},{"id":539,"data":540,"type":238,"tunes":542},"_YLdd4iHrS",{"text":541},"C'est là que l'\u003Ca href=\"\u002Ffr\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">architecture SaaS multi-instance\u003C\u002Fa> compte. Si les locataires, les rôles, la propriété des données et les limites opérationnelles sont faibles, l'ajout d'un LLM local peut amplifier le risque au lieu de le réduire.",{},{"id":544,"data":545,"type":42,"tunes":547},"I6V0KMIQjb",{"text":546,"level":259},"L'évaluation n'est pas facultative",{},{"id":549,"data":550,"type":238,"tunes":552},"yaKCxuptHO",{"text":551},"Une application Open-LLM en production a besoin d'une boucle d'évaluation. Sans elle, les équipes n'ont que des anecdotes. Quelques bonnes réponses de démonstration ne prouvent pas que la récupération fonctionne, que l'invite est stable ou que le modèle se comporte de manière sécurisée dans une utilisation réelle.",{},{"id":554,"data":555,"type":238,"tunes":557},"Kq_qe2AL-v",{"text":556},"Un ensemble de données d'évaluation minimal devrait inclure des questions réelles d'utilisateurs, les documents sources attendus, les réponses inacceptables, les cas sans réponse et les tests de régression pour les échecs précédents. Chaque modification du découpage, des embeddings, des invites, du fournisseur de modèle ou du seuil de récupération devrait être testée par rapport à cet ensemble de données.",{},{"id":559,"data":560,"type":280,"tunes":568},"oBlROQd5Li",{"meta":561,"items":562,"style":279},{},[563,564,565,566,567],"\u003Cb>Évaluation de la récupération :\u003C\u002Fb> Le système a-t-il récupéré les bons morceaux sources ?","\u003Cb>Évaluation de la réponse :\u003C\u002Fb> La réponse est-elle restée ancrée dans le contexte récupéré ?","\u003Cb>Évaluation de la sécurité :\u003C\u002Fb> Le système a-t-il évité les divulgations interdites ou les données non autorisées ?","\u003Cb>Évaluation opérationnelle :\u003C\u002Fb> La latence, le taux d'échec et le coût sont-ils restés dans des limites acceptables ?","\u003Cb>Évaluation de régression :\u003C\u002Fb> Une mise à niveau du modèle ou de l'invite a-t-elle cassé un comportement auparavant correct ?",{},{"id":570,"data":571,"type":238,"tunes":573},"9gDXPLZ6Rp",{"text":572},"Le RAG réduit les hallucinations, mais il ne supprime pas le besoin d'évaluation. L'évaluation est la boucle de contrôle qui transforme un prototype astucieux en un produit en amélioration.",{},{"id":575,"data":576,"type":42,"tunes":578},"Hi1K8JLPUo",{"text":577,"level":259},"Discipline de déploiement : le modèle est un événement de version",{},{"id":580,"data":581,"type":238,"tunes":583},"sEpigdnlkD",{"text":582},"Changer de modèle n'est pas une simple modification de configuration inoffensive. Cela peut changer le style de réponse, le comportement de raisonnement, la qualité de la langue, la latence, l'utilisation des jetons, la discipline de citation et les modes d'échec. En production, les mises à niveau de modèle doivent être traitées comme des événements de version.",{},{"id":585,"data":586,"type":238,"tunes":588},"sLXBCBh3E0",{"text":587},"Cela signifie versionner les invites, les modèles d'embedding, les paramètres de récupération, les identifiants de modèle, les routes de fournisseur et les résultats d'évaluation. Cela signifie également avoir une logique de retour arrière. Si un nouveau modèle provoque des réponses moins bien ancrées dans la récupération ou casse la sortie structurée, le système a besoin d'un chemin contrôlé pour revenir à la configuration connue comme bonne.",{},{"id":590,"data":591,"type":238,"tunes":593},"pcbe8eGMbe",{"text":592},"Cela correspond à la même logique de fonctionnement que \u003Ca href=\"\u002Ffr\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Livraison et changement\u003C\u002Fa> et \u003Ca href=\"\u002Ffr\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">l'architecture de plateforme prête pour l'IA\u003C\u002Fa> : une livraison stable nécessite des contrôles reproductibles, pas des correctifs manuels héroïques.",{},{"id":595,"data":596,"type":42,"tunes":598},"mOhI-jF1zx",{"text":597,"level":259},"Conclusion : la production commence là où la démo se termine",{},{"id":600,"data":601,"type":238,"tunes":603},"3mXK980w23",{"text":602},"Ollama peut démarrer le voyage. Il rend l'exécution locale du modèle accessible et abaisse la barrière à l'expérimentation. C'est précieux. Mais l'application de production commence là où la démo se termine.",{},{"id":605,"data":606,"type":238,"tunes":608},"9O27eQ_Svm",{"text":607},"Le modèle n'est qu'un composant remplaçable. Le véritable produit est le système contrôlé qui l'entoure : ingestion, autorisations, récupération, prompts, routage des fournisseurs, évaluation, journaux, surveillance, déploiement, sauvegarde et flux de travail de l'utilisateur. C'est là que la confidentialité devient réelle, que la qualité devient mesurable et que la valeur commerciale devient reproductible.",{},{"id":610,"data":611,"type":238,"tunes":613},"4Lyy3E4ZsF",{"text":612},"Une application Open-LLM sérieuse se construit grâce à une discipline d'ingénierie, et non en exécutant un modèle local une seule fois. Ollama peut commencer le voyage, mais l'application de production commence là où la démo s'arrête.",{},{"id":615,"data":616,"type":238,"tunes":618},"eKPRtinG5L",{"text":617},"Thème :",{},{"id":620,"data":621,"type":238,"tunes":623},"GMa6lE1NNl",{"text":622},"Ollama, Open LLM, RAG, pgvector, Qdrant, Local AI, LLMOps, Abstraction de fournisseurs, Architecture IA d'entreprise",{},"2.31","Exécuter un modèle local avec Ollama est facile. Construire une application Open-LLM prête pour la production est plus difficile : cela nécessite du RAG, du contrôle d'accès, de l'abstraction de fournisseur, de l'évaluation, de la journalisation, de la discipline de déploiement et une couche applicative contrôlée autour du modèle.","\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,"Évaluation et garde-fous qualité","evaluation",{"id":655,"name":656,"slug":657},89,"Harnais d’évaluation","evaluation-harness",{"id":659,"name":660,"slug":661},85,"Garde-fous qualité","quality-gates",{"id":663,"login":664,"email":665,"displayName":666},"20","rooth8233","","Aleksandar Stajić",[668,997],{"lang":669,"title":670,"content":671,"contentJson":672,"excerpt":996},"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":673,"blocks":674,"version":995},1782679301267,[675,678,682,686,690,694,698,702,706,714,719,723,727,750,754,758,762,766,780,784,788,792,796,800,813,817,821,843,847,851,855,859,862,866,869,873,877,898,902,906,910,914,925,929,933,937,941,951,955,959,963,967,971,975,979,983,987,991],{"id":231,"data":676,"type":42,"tunes":677},{"text":670,"level":40},{},{"id":235,"data":679,"type":238,"tunes":681},{"text":680},"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":683,"type":238,"tunes":685},{"text":684},"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":687,"type":238,"tunes":689},{"text":688},"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":691,"type":238,"tunes":693},{"text":692},"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":695,"type":42,"tunes":697},{"text":696,"level":259},"Ollama Is a Runtime, Not a Product",{},{"id":262,"data":699,"type":238,"tunes":701},{"text":700},"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":703,"type":238,"tunes":705},{"text":704},"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":707,"type":280,"tunes":713},{"meta":708,"items":709,"style":279},{},[710,711,712],"\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":715,"type":288,"tunes":718},{"text":716,"caption":717,"alignment":287},"The model is the easiest part. The application layer is where the product value lives.","Architecture principle",{},{"id":291,"data":720,"type":42,"tunes":722},{"text":721,"level":259},"Demo, PoC, and Production Are Different Stages",{},{"id":296,"data":724,"type":238,"tunes":726},{"text":725},"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":728,"type":324,"tunes":749},{"content":729,"stretched":43,"withHeadings":14},[730,735,740,745],[731,732,733,734],"Stage","What it proves","Typical setup","What is still missing",[736,737,738,739],"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.",[741,742,743,744],"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.",[320,746,747,748],"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":751,"type":238,"tunes":753},{"text":752},"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":755,"type":42,"tunes":757},{"text":756,"level":259},"Where RAG Fits In",{},{"id":337,"data":759,"type":238,"tunes":761},{"text":760},"\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":763,"type":238,"tunes":765},{"text":764},"A practical RAG flow looks like this:",{},{"id":347,"data":767,"type":280,"tunes":779},{"meta":768,"items":769,"style":361},{"counterType":350},[770,771,772,773,774,775,776,777,778],"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":781,"type":238,"tunes":783},{"text":782},"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":785,"type":42,"tunes":787},{"text":786,"level":259},"A Practical Local Open-LLM Architecture",{},{"id":374,"data":789,"type":238,"tunes":791},{"text":790},"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":793,"type":382,"tunes":795},{"code":794},"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":797,"type":238,"tunes":799},{"text":798},"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":801,"type":280,"tunes":812},{"meta":802,"items":803,"style":279},{},[804,805,806,807,808,809,810,811],"\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":814,"type":42,"tunes":816},{"text":815,"level":259},"The Production Readiness Checklist",{},{"id":409,"data":818,"type":238,"tunes":820},{"text":819},"The following checklist is the difference between a local model demo and a usable Open-LLM application:",{},{"id":414,"data":822,"type":280,"tunes":842},{"meta":823,"items":824,"style":279},{},[825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841],"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":844,"type":238,"tunes":846},{"text":845},"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":848,"type":42,"tunes":850},{"text":849,"level":259},"Provider Abstraction: Do Not Marry One Model",{},{"id":447,"data":852,"type":238,"tunes":854},{"text":853},"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":856,"type":238,"tunes":858},{"text":857},"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":860,"type":382,"tunes":861},{"code":459},{},{"id":462,"data":863,"type":238,"tunes":865},{"text":864},"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":867,"type":42,"tunes":868},{"text":469,"level":259},{},{"id":472,"data":870,"type":238,"tunes":872},{"text":871},"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":874,"type":238,"tunes":876},{"text":875},"\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":878,"type":324,"tunes":897},{"content":879,"stretched":43,"withHeadings":14},[880,884,888,892],[486,881,882,883],"Best fit","Strengths","Trade-offs",[491,885,886,887],"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,889,890,891],"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.",[893,894,895,896],"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":899,"type":238,"tunes":901},{"text":900},"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":903,"type":42,"tunes":905},{"text":904,"level":259},"Security and Privacy Reality Check",{},{"id":517,"data":907,"type":238,"tunes":909},{"text":908},"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":911,"type":238,"tunes":913},{"text":912},"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":915,"type":280,"tunes":924},{"meta":916,"items":917,"style":279},{},[918,919,920,921,922,923],"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":926,"type":238,"tunes":928},{"text":927},"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":930,"type":42,"tunes":932},{"text":931,"level":259},"Evaluation Is Not Optional",{},{"id":549,"data":934,"type":238,"tunes":936},{"text":935},"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":938,"type":238,"tunes":940},{"text":939},"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":942,"type":280,"tunes":950},{"meta":943,"items":944,"style":279},{},[945,946,947,948,949],"\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":952,"type":238,"tunes":954},{"text":953},"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":956,"type":42,"tunes":958},{"text":957,"level":259},"Deployment Discipline: The Model Is a Release Event",{},{"id":580,"data":960,"type":238,"tunes":962},{"text":961},"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":964,"type":238,"tunes":966},{"text":965},"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":968,"type":238,"tunes":970},{"text":969},"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":972,"type":42,"tunes":974},{"text":973,"level":259},"Conclusion: Production Begins Where the Demo Ends",{},{"id":600,"data":976,"type":238,"tunes":978},{"text":977},"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":980,"type":238,"tunes":982},{"text":981},"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":984,"type":238,"tunes":986},{"text":985},"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":988,"type":238,"tunes":990},{"text":989},"Theme:",{},{"id":620,"data":992,"type":238,"tunes":994},{"text":993},"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",{"lang":7,"title":224,"content":226,"contentJson":998,"excerpt":625},{"time":228,"blocks":999,"version":624},[1000,1003,1006,1009,1012,1015,1018,1021,1024,1029,1032,1035,1038,1046,1049,1052,1055,1058,1063,1066,1069,1072,1075,1078,1083,1086,1089,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1129,1132,1135,1138,1141,1146,1149,1152,1155,1158,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193],{"id":231,"data":1001,"type":42,"tunes":1002},{"text":224,"level":40},{},{"id":235,"data":1004,"type":238,"tunes":1005},{"text":237},{},{"id":241,"data":1007,"type":238,"tunes":1008},{"text":243},{},{"id":246,"data":1010,"type":238,"tunes":1011},{"text":248},{},{"id":251,"data":1013,"type":238,"tunes":1014},{"text":253},{},{"id":256,"data":1016,"type":42,"tunes":1017},{"text":258,"level":259},{},{"id":262,"data":1019,"type":238,"tunes":1020},{"text":264},{},{"id":267,"data":1022,"type":238,"tunes":1023},{"text":269},{},{"id":272,"data":1025,"type":280,"tunes":1028},{"meta":1026,"items":1027,"style":279},{},[276,277,278],{},{"id":283,"data":1030,"type":288,"tunes":1031},{"text":285,"caption":286,"alignment":287},{},{"id":291,"data":1033,"type":42,"tunes":1034},{"text":293,"level":259},{},{"id":296,"data":1036,"type":238,"tunes":1037},{"text":298},{},{"id":301,"data":1039,"type":324,"tunes":1045},{"content":1040,"stretched":43,"withHeadings":14},[1041,1042,1043,1044],[305,306,307,308],[310,311,312,313],[315,316,317,318],[320,321,322,323],{},{"id":327,"data":1047,"type":238,"tunes":1048},{"text":329},{},{"id":332,"data":1050,"type":42,"tunes":1051},{"text":334,"level":259},{},{"id":337,"data":1053,"type":238,"tunes":1054},{"text":339},{},{"id":342,"data":1056,"type":238,"tunes":1057},{"text":344},{},{"id":347,"data":1059,"type":280,"tunes":1062},{"meta":1060,"items":1061,"style":361},{"counterType":350},[352,353,354,355,356,357,358,359,360],{},{"id":364,"data":1064,"type":238,"tunes":1065},{"text":366},{},{"id":369,"data":1067,"type":42,"tunes":1068},{"text":371,"level":259},{},{"id":374,"data":1070,"type":238,"tunes":1071},{"text":376},{},{"id":379,"data":1073,"type":382,"tunes":1074},{"code":381},{},{"id":385,"data":1076,"type":238,"tunes":1077},{"text":387},{},{"id":390,"data":1079,"type":280,"tunes":1082},{"meta":1080,"items":1081,"style":279},{},[394,395,396,397,398,399,400,401],{},{"id":404,"data":1084,"type":42,"tunes":1085},{"text":406,"level":259},{},{"id":409,"data":1087,"type":238,"tunes":1088},{"text":411},{},{"id":414,"data":1090,"type":280,"tunes":1093},{"meta":1091,"items":1092,"style":279},{},[418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434],{},{"id":437,"data":1095,"type":238,"tunes":1096},{"text":439},{},{"id":442,"data":1098,"type":42,"tunes":1099},{"text":444,"level":259},{},{"id":447,"data":1101,"type":238,"tunes":1102},{"text":449},{},{"id":452,"data":1104,"type":238,"tunes":1105},{"text":454},{},{"id":457,"data":1107,"type":382,"tunes":1108},{"code":459},{},{"id":462,"data":1110,"type":238,"tunes":1111},{"text":464},{},{"id":467,"data":1113,"type":42,"tunes":1114},{"text":469,"level":259},{},{"id":472,"data":1116,"type":238,"tunes":1117},{"text":474},{},{"id":477,"data":1119,"type":238,"tunes":1120},{"text":479},{},{"id":482,"data":1122,"type":324,"tunes":1128},{"content":1123,"stretched":43,"withHeadings":14},[1124,1125,1126,1127],[486,487,488,489],[491,492,493,494],[496,497,498,499],[501,502,503,504],{},{"id":507,"data":1130,"type":238,"tunes":1131},{"text":509},{},{"id":512,"data":1133,"type":42,"tunes":1134},{"text":514,"level":259},{},{"id":517,"data":1136,"type":238,"tunes":1137},{"text":519},{},{"id":522,"data":1139,"type":238,"tunes":1140},{"text":524},{},{"id":527,"data":1142,"type":280,"tunes":1145},{"meta":1143,"items":1144,"style":279},{},[531,532,533,534,535,536],{},{"id":539,"data":1147,"type":238,"tunes":1148},{"text":541},{},{"id":544,"data":1150,"type":42,"tunes":1151},{"text":546,"level":259},{},{"id":549,"data":1153,"type":238,"tunes":1154},{"text":551},{},{"id":554,"data":1156,"type":238,"tunes":1157},{"text":556},{},{"id":559,"data":1159,"type":280,"tunes":1162},{"meta":1160,"items":1161,"style":279},{},[563,564,565,566,567],{},{"id":570,"data":1164,"type":238,"tunes":1165},{"text":572},{},{"id":575,"data":1167,"type":42,"tunes":1168},{"text":577,"level":259},{},{"id":580,"data":1170,"type":238,"tunes":1171},{"text":582},{},{"id":585,"data":1173,"type":238,"tunes":1174},{"text":587},{},{"id":590,"data":1176,"type":238,"tunes":1177},{"text":592},{},{"id":595,"data":1179,"type":42,"tunes":1180},{"text":597,"level":259},{},{"id":600,"data":1182,"type":238,"tunes":1183},{"text":602},{},{"id":605,"data":1185,"type":238,"tunes":1186},{"text":607},{},{"id":610,"data":1188,"type":238,"tunes":1189},{"text":612},{},{"id":615,"data":1191,"type":238,"tunes":1192},{"text":617},{},{"id":620,"data":1194,"type":238,"tunes":1195},{"text":622},{},"Post erfolgreich abgerufen",{"items":1198,"source":1281,"manualIds":1282,"manualMatchedIds":1283},[1199,1206,1213,1220,1227,1234,1241,1248,1254,1261,1268,1275],{"id":1200,"slug":1201,"title":1202,"excerpt":1203,"featuredImage":1204,"publishedAt":1205},"479","where-does-an-llm-get-its-data-rag-data-sources-in-python","D'où un LLM tire-t-il ses données ? Sources de données RAG en Python","Un LLM ne connaît pas magiquement vos fichiers, bases de données ou API. Cette suite pratique de la série sur le RAG montre, avec du Python simple, comment des données externes deviennent des preuves récupérables : des fichiers texte et du SQL à la recherche en texte intégral, aux embeddings, à l'assemblage du contexte et à l'appel final au LLM.","\u002Fuploads\u002F2026\u002F09\u002Fwhere-does-an-llm-get-its-data-rag-data-sources-in-python-1790517200521-nfsi5i.webp","2026-09-27T05:51:00.000Z",{"id":1207,"slug":1208,"title":1209,"excerpt":1210,"featuredImage":1211,"publishedAt":1212},"475","managed-agent-harness-vs-self-hosted-agent-loop-what-you-gain-what-you-lose","Harnais d'agent géré vs boucle d'agent auto-hébergée : ce que vous gagnez, ce que vous perdez","“Agent auto-hébergé” peut désigner des architectures très différentes. Ce guide distingue le harnais géré, l'environnement d'exécution auto-hébergé et la boucle d'agent entièrement auto-opérée—et montre de quelle frontière de contrôle les équipes ont réellement besoin.","\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":1214,"slug":1215,"title":1216,"excerpt":1217,"featuredImage":1218,"publishedAt":1219},"361","model-view-controller-mvc","Modèle-Vue-Contrôleur (MVC) : l'épine dorsale structurelle des applications web modernes","Modèle-Vue-Contrôleur, généralement abrégé en MVC, reste l'un des modèles d'architecture les plus durables dans le développement de logiciels. Il offre aux équipes un moyen pratique de séparer la logique métier, la présentation et l'interaction utilisateur afin que les applications restent plus faciles à construire, à étendre, à tester et à maintenir. Cet article explique ce qu'est le MVC, pourquoi il est toujours important, où il s'intègre dans les piles Web d'aujourd'hui et comment il se connecte à l'architecture de plateforme plus large, à la qualité de la livraison, à la stratégie de migration et à la maturité opérationnelle.","\u002Fuploads\u002F2026\u002F03\u002Fmodel-view-controller-mvc-1774872805793-0bjubu.webp","2023-04-12T12:57:00.000Z",{"id":1221,"slug":1222,"title":1223,"excerpt":1224,"featuredImage":1225,"publishedAt":1226},"384","new-qwen-3-5-plus","Nouveau Qwen 3.5-Plus : l'IA open-source passe aux choses sérieuses","Découvrez les fonctionnalités et avantages révolutionnaires de Qwen 3.5-Plus d'Alibaba, une IA open-source qui change la donne pour les développeurs.","\u002Fuploads\u002F2026\u002F02\u002Fnew-qwen-3-5-plus-1771515512741-dcbi9p.webp","2026-02-19T10:23:00.000Z",{"id":1228,"slug":1229,"title":1230,"excerpt":1231,"featuredImage":1232,"publishedAt":1233},"480","when-should-an-ai-stop-trusting-its-own-knowledge-the-retrieval-trigger","Quand une IA devrait-elle cesser de faire confiance à ses propres connaissances ? — Le déclencheur de récupération","Un modèle d'IA n'a pas besoin de récupération pour chaque question. Le problème important est de savoir quand ses connaissances internes ne suffisent plus. Le Déclencheur de Récupération est une frontière de décision pratique qui détermine quand un système d'IA devrait cesser de se fier uniquement aux connaissances du modèle et obtenir des preuves externes avant de répondre.","\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":1235,"slug":1236,"title":1237,"excerpt":1238,"featuredImage":1239,"publishedAt":1240},"468","ai-agent-memory-is-not-rag-how-to-separate-memory-retrieval-state-and-context","La mémoire des agents IA n'est pas le RAG : comment séparer la mémoire, la récupération, l'état et le contexte","La mémoire des agents, le RAG, l'état et le contexte sont souvent utilisés comme s'ils étaient interchangeables. Ils ne le sont pas. Ce modèle d'architecture pratique sépare les quatre couches, montre où chacune se situe et explique ce qui dysfonctionne lorsque les systèmes les fusionnent en une seule.","\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":1242,"slug":1243,"title":1244,"excerpt":1245,"featuredImage":1246,"publishedAt":1247},"493","mlops-vs-llmops-what-changes-when-the-model-is-an-llm","MLOps vs LLMOps : qu'est-ce qui change lorsque le modèle est un LLM","MLOps exploite les systèmes d'apprentissage automatique ; LLMOps étend ces pratiques aux prompts, au contexte, à la récupération, aux fournisseurs, aux outils, aux évaluations et au comportement d'exécution autour des grands modèles de langage.","\u002Fuploads\u002F2026\u002F10\u002Fmlops-vs-llmops-what-changes-when-the-model-is-an-llm-1791487319869-2v7hxo.webp","2026-10-08T15:20:00.000Z",{"id":1249,"slug":657,"title":1250,"excerpt":1251,"featuredImage":1252,"publishedAt":1253},"434","Guide complet d'Evaluation Harness : Maîtriser l'évaluation des performances des LLM","Ce guide propose une présentation détaillée d'Evaluation Harness, un framework essentiel pour évaluer rigoureusement les capacités des grands modèles de langage (LLM) dans les pipelines LLMOps d'entreprise. Découvrez la configuration, les meilleures pratiques et les techniques avancées pour garantir un benchmarking et une optimisation fiables des modèles.","\u002Fuploads\u002F2026\u002F04\u002Fevaluation-harness-1775466944495-4s0xv2.webp","2026-03-01T17:50:00.000Z",{"id":1255,"slug":1256,"title":1257,"excerpt":1258,"featuredImage":1259,"publishedAt":1260},"364","tipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung","Maîtriser le flux de travail SEO : Stratégies d'optimisation essentielles pour la croissance organique","Un flux de travail SEO structuré est crucial pour une croissance organique durable. Découvrez les dix stratégies fondamentales, de la recherche de mots-clés et l'optimisation technique à la qualité du contenu et l'analyse des performances.","\u002Fuploads\u002F2026\u002F03\u002Ftipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung-1774866098131-hwkzrg.webp","2024-01-26T06:35:00.000Z",{"id":1262,"slug":1263,"title":1264,"excerpt":1265,"featuredImage":1266,"publishedAt":1267},"469","rag-failed-but-which-layer-actually-failed-a-diagnostic-method","Échec du RAG — mais quelle couche a réellement échoué ? Une méthode de diagnostic","Lorsqu'une réponse RAG est erronée, blâmer la récupération ou le modèle est trop vague. Cette méthode de diagnostic isole la couverture des sources, la construction de la requête, la récupération, le classement, l'assemblage du contexte, la génération, l'attribution des preuves et la fraîcheur—afin que la défaillance réelle puisse être reproduite et corrigée.","\u002Fuploads\u002F2026\u002F09\u002Frag-failed-but-which-layer-actually-failed-a-diagnostic-method-1790350847177-pior4c.webp","2026-09-24T19:39:00.000Z",{"id":1269,"slug":1270,"title":1271,"excerpt":1272,"featuredImage":1273,"publishedAt":1274},"477","computer-use-agents-why-a-successful-demo-can-still-be-an-unreliable-system","Agents d'utilisation de l'ordinateur : pourquoi une démonstration réussie peut tout de même être un système peu fiable","Les agents d'utilisation de l'ordinateur peuvent désormais accomplir d'impressionnants flux de travail sur navigateur et sur bureau, mais une seule exécution réussie prouve la capacité—non la fiabilité. Cet article montre comment tester la répétabilité, la robustesse environnementale, le contrôle à long horizon, la conscience de l'état, la vérification des résultats et la gestion sécurisée des objectifs.","\u002Fuploads\u002F2026\u002F09\u002Fcomputer-use-agents-why-a-successful-demo-can-still-be-an-unreliable-system-1790352854690-75qnrg.webp","2026-09-25T12:13:00.000Z",{"id":1276,"slug":1277,"title":1278,"excerpt":1279,"featuredImage":1225,"publishedAt":1280},"445","qwen-3-6-in-production-release-runbook-ai-rollback-and-llmops-versioning","Qwen 3.6 en production : Runbook de déploiement, Rollback IA et Versionnage LLMOps","Qwen 3.6 n'est pas seulement une autre mise à jour de modèle. C'est à la fois un événement de déploiement, un scénario de rollback et un problème de versionnage. Cet article explique comment Qwen 3.6 doit être géré en production à travers la discipline LLMOps, la traçabilité des prompts et des modèles, le déploiement contrôlé et une préparation au rollback basée sur des preuves.","2026-05-04T02:49:00.000Z","fallback",[],[]]