[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portal-settings:stajic:es":3,"public-menus:all":38,"post:ollama-is-not-the-product-building-production-ready-open-llm-applications:es":221,"related:post:ollama-is-not-the-product-building-production-ready-open-llm-applications:es:1":1198},{"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","es","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":1197},{"id":223,"title":224,"slug":225,"content":226,"contentJson":227,"excerpt":626,"featuredImage":627,"featuredImageAlt":628,"featuredImageCaption":10,"featuredImageTitle":10,"featuredImageCopyright":10,"featuredImageAuthor":10,"featuredImageSourceUrl":10,"featuredImageLicense":10,"featuredImageIsAiGenerated":43,"status":629,"publishedAt":630,"createdAt":631,"updatedAt":632,"seoLocalePaths":633,"categories":642,"author":663,"translations":668},"459","Ollama no es el producto: Construcción de aplicaciones de LLM abiertos listas para producción","ollama-is-not-the-product-building-production-ready-open-llm-applications","\u003Ch1>Ollama no es el producto: construyendo aplicaciones Open-LLM listas para producción\u003C\u002Fh1>\n\u003Cp>Herramientas como \u003Cb>Ollama\u003C\u002Fb> han hecho que la experimentación local con LLM sea casi sin fricción. Instala el runtime, descarga un modelo, envía un prompt, y un asistente local responde en segundos. Eso es útil. También es la parte más fácil del camino.\u003C\u002Fp>\n\u003Cp>Una demo en terminal no es una aplicación. Un modelo local no es un producto. Una aplicación productiva de Open-LLM necesita ingesta controlada de datos, recuperación, permisos, evaluación, registro, abstracción de proveedores, disciplina de despliegue y un flujo de trabajo de usuario que resuelva un problema empresarial real.\u003C\u002Fp>\n\u003Cp>La tesis central es simple: \u003Cb>Ollama es un runtime, no el producto\u003C\u002Fb>. El producto vive en la capa de aplicación alrededor del modelo. Esa capa decide qué documentos son visibles, qué fragmentos se recuperan, qué prompts se usan, cómo se evalúan las respuestas, cómo se registran los fallos y si el sistema puede ser confiable en el trabajo diario.\u003C\u002Fp>\n\u003Cp>Aquí es donde la IA local se vuelve interesante para equipos que construyen asistentes privados, herramientas internas de conocimiento, funcionalidades SaaS habilitadas por LLM o copilotos de flujo de trabajo empresarial. El modelo puede ejecutarse localmente, pero la privacidad, la confiabilidad y el valor empresarial solo existen si todo el sistema está correctamente diseñado.\u003C\u002Fp>\n\u003Ch2>Ollama es un runtime, no un producto\u003C\u002Fh2>\n\u003Cp>Ollama es excelente para ejecutar y servir modelos abiertos localmente. Es especialmente fuerte para exploración, flujos de trabajo de desarrolladores, PoCs y equipos que quieren probar el comportamiento del modelo sin comprometerse inmediatamente con un proveedor de nube. Expone la interacción local con modelos a través de APIs y capas de compatibilidad que facilitan la conexión con herramientas existentes al estilo OpenAI.\u003C\u002Fp>\n\u003Cp>Eso no significa que Ollama resuelva el problema de la aplicación. No sabe automáticamente qué documentos de la empresa puede leer un usuario. No crea aislamiento de inquilinos, versionado de documentos, pistas de auditoría, atribución de fuentes, conjuntos de datos de evaluación o flujos de trabajo de UI específicos del negocio. Esas responsabilidades recaen en la arquitectura de la aplicación.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Ollama ayuda con:\u003C\u002Fb> ejecución local de modelos, experimentación rápida, acceso a modelos basado en API, PoCs sin conexión y productividad del desarrollador.\u003C\u002Fli>\u003Cli>\u003Cb>Ollama no resuelve por sí mismo:\u003C\u002Fb> control de acceso, calidad de RAG, ciclo de vida de documentos, límites de inquilinos, evaluación, registro de auditoría, monitoreo, comportamiento de respaldo o diseño de flujo de trabajo empresarial.\u003C\u002Fli>\u003Cli>\u003Cb>El error arquitectónico:\u003C\u002Fb> tratar la inferencia local como si ya fuera un producto de IA seguro.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cblockquote class=\"border-l-4 border-gray-300 pl-4 italic\">El modelo es la parte más fácil. La capa de aplicación es donde vive el valor del producto.\u003Ccite class=\"block mt-2 text-sm\">— Principio de arquitectura\u003C\u002Fcite>\u003C\u002Fblockquote>\n\u003Ch2>Demo, PoC y producción son etapas diferentes\u003C\u002Fh2>\n\u003Cp>Muchas iniciativas de Open-LLM fallan porque los equipos confunden una demo funcional con una capacidad de producción. La diferencia no es cosmética. Cada nivel de madurez tiene un objetivo diferente, un perfil de riesgo diferente y un requisito de ingeniería diferente.\u003C\u002Fp>\n\u003Ctable class=\"w-full border-collapse\">\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Etapa\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Qué demuestra\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Configuración típica\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Qué falta aún\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Demo\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Un modelo puede responder a un prompt localmente.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Ollama en un portátil, un modelo, un prompt, sin control real de datos.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Permisos, recuperación, registros, evaluación, despliegue, monitoreo, flujo de trabajo de usuario.\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 sistema pequeño y controlado puede responder preguntas sobre documentos o flujos de trabajo seleccionados.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">UI web básica, script de ingesta, búsqueda vectorial, usuarios limitados, alcance de documentos limitado.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Escalabilidad, gobernanza, conjuntos de datos de prueba, estrategia de respaldo, auditabilidad, modelo de soporte.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Producción\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Múltiples usuarios pueden usar el sistema de forma segura y repetida dentro del trabajo real.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">App autenticada, aislamiento de inquilinos, pipeline de RAG, observabilidad, abstracción de proveedores, copias de seguridad, proceso de lanzamiento.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Mejora continua, expansión de evaluación, madurez operativa.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Una PoC puede ser intencionalmente pequeña. La producción no puede ser intencionalmente ciega. Una vez que usuarios reales, datos privados, decisiones empresariales y expectativas de cumplimiento entran en el sistema, la arquitectura debe volverse explícita.\u003C\u002Fp>\n\u003Ch2>Dónde encaja RAG\u003C\u002Fh2>\n\u003Cp>\u003Cb>Generación Aumentada por Recuperación\u003C\u002Fb> es el puente más común entre un modelo de lenguaje y el conocimiento empresarial privado. El modelo no conoce mágicamente documentos internos, contratos, tickets, especificaciones de producto o manuales de operaciones. La aplicación debe recuperar el contexto relevante antes de pedir al modelo que responda.\u003C\u002Fp>\n\u003Cp>Un flujo práctico de RAG se ve así:\u003C\u002Fp>\n\u003Col>\u003Cli>Los documentos se cargan o sincronizan desde fuentes controladas.\u003C\u002Fli>\u003Cli>El texto se extrae, limpia y divide en fragmentos.\u003C\u002Fli>\u003Cli>Los fragmentos reciben metadatos como inquilino, propietario, versión del documento, URL de origen, alcance de acceso y marca de tiempo.\u003C\u002Fli>\u003Cli>Se generan embeddings para cada fragmento.\u003C\u002Fli>\u003Cli>Los vectores se almacenan en pgvector, Qdrant u otra capa de recuperación.\u003C\u002Fli>\u003Cli>En el momento de la consulta, la aplicación verifica los permisos antes de la recuperación.\u003C\u002Fli>\u003Cli>Los fragmentos relevantes se recuperan con búsqueda de similitud y filtros de metadatos.\u003C\u002Fli>\u003Cli>El constructor de prompts inyecta el contexto seleccionado en la solicitud al modelo.\u003C\u002Fli>\u003Cli>La respuesta se genera con citas, límites de confianza y un respaldo de no respuesta cuando la recuperación es débil.\u003C\u002Fli>\u003C\u002Fol>\n\u003Cp>RAG reduce las alucinaciones, pero no las elimina. Una estrategia de fragmentación deficiente, metadatos débiles, filtros de permisos faltantes, embeddings de baja calidad o una recuperación demasiado amplia aún pueden producir respuestas convincentes pero incorrectas. Los sistemas RAG serios necesitan umbrales, citas, registros de recuperación y evaluación.\u003C\u002Fp>\n\u003Ch2>Una Arquitectura Práctica Local de Open-LLM\u003C\u002Fh2>\n\u003Cp>Una ruta de producción realista no requiere infraestructura exótica. Para muchos equipos, una primera arquitectura sólida puede usar un stack web normal: Nuxt para el frontend, una API Nitro o Node, PostgreSQL como sistema de registro, pgvector para la recuperación, Ollama como runtime local, Prisma para el acceso a datos y trabajadores en segundo plano para la ingesta y los embeddings.\u003C\u002Fp>\n\u003Cpre class=\"code-block\">\u003Ccode>Pregunta del usuario | v\nInterfaz de usuario | v\nAPI \u002F Backend | +--&gt; Autenticación +--&gt; Verificación de permisos de inquilino y rol | v\nCapa de recuperación | +--&gt; Metadatos de PostgreSQL +--&gt; Búsqueda vectorial pgvector o Qdrant +--&gt; Umbral de similitud | v\nConstructor de prompts | +--&gt; prompt del sistema +--&gt; fragmentos recuperados +--&gt; referencias de fuentes +--&gt; reglas de no respuesta | v\nAbstracción del proveedor de LLM | +--&gt; Ollama \u002F modelo local +--&gt; respaldo de modelo en la nube +--&gt; futuro runtime auto-alojado | v\nRespuesta con fuentes | v\nRegistros, trazas, métricas, conjunto de datos de evaluación\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Esta arquitectura mantiene el modelo reemplazable. Ollama puede ser el primer runtime, pero el sistema no debe estar bloqueado a un motor de inferencia. Una arquitectura limpia separa el flujo de trabajo del usuario, la recuperación, la construcción de prompts, el proveedor del modelo y la observabilidad.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Frontend:\u003C\u002Fb> Nuxt u otra interfaz web para flujos de trabajo de usuarios autenticados.\u003C\u002Fli>\u003Cli>\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js o FastAPI para orquestación, permisos y enrutamiento de proveedores.\u003C\u002Fli>\u003Cli>\u003Cb>Base de datos:\u003C\u002Fb> PostgreSQL para documentos, usuarios, inquilinos, roles, prompts, registros y metadatos.\u003C\u002Fli>\u003Cli>\u003Cb>Búsqueda vectorial:\u003C\u002Fb> pgvector para recuperación integrada simple o Qdrant cuando la búsqueda vectorial se convierte en un servicio dedicado.\u003C\u002Fli>\u003Cli>\u003Cb>Runtime del modelo:\u003C\u002Fb> Ollama para ejecución local, servidor llama.cpp para servicio ligero o vLLM para servicio GPU de mayor rendimiento.\u003C\u002Fli>\u003Cli>\u003Cb>Almacenamiento:\u003C\u002Fb> sistema de archivos local o almacenamiento de objetos compatible con S3 para archivos subidos y artefactos extraídos.\u003C\u002Fli>\u003Cli>\u003Cb>Trabajadores:\u003C\u002Fb> ingesta en segundo plano, fragmentación, embedding, reindexación y procesamiento de versiones de documentos.\u003C\u002Fli>\u003Cli>\u003Cb>Observabilidad:\u003C\u002Fb> registros, métricas, trazas de prompts, trazas de recuperación, seguimiento de latencia y resultados de evaluación.\u003C\u002Fli>\u003C\u002Ful>\n\u003Ch2>La Lista de Verificación de Preparación para Producción\u003C\u002Fh2>\n\u003Cp>La siguiente lista de verificación es la diferencia entre una demostración de modelo local y una aplicación Open-LLM utilizable:\u003C\u002Fp>\n\u003Cul>\u003Cli>Cada documento y fragmento tiene un tenant_id.\u003C\u002Fli>\u003Cli>La recuperación se bloquea hasta que se verifiquen los permisos del usuario y del rol.\u003C\u002Fli>\u003Cli>Los documentos incluyen metadatos, fuente, propietario, versión, estado del ciclo de vida y política de retención.\u003C\u002Fli>\u003Cli>La estrategia de fragmentación está documentada y probada con documentos reales.\u003C\u002Fli>\u003Cli>La selección del modelo de embedding es explícita y versionada.\u003C\u002Fli>\u003Cli>La configuración del índice vectorial es reproducible.\u003C\u002Fli>\u003Cli>El umbral de similitud evita que se use contexto débil a ciegas.\u003C\u002Fli>\u003Cli>Las respuestas incluyen citas de fuentes o referencias a fuentes cuando sea posible.\u003C\u002Fli>\u003Cli>Se utiliza un fallback de no respuesta cuando la confianza en la recuperación es demasiado baja.\u003C\u002Fli>\u003Cli>Las plantillas de prompts están versionadas y controladas por versiones.\u003C\u002Fli>\u003Cli>La abstracción del proveedor de LLM se construye desde el principio.\u003C\u002Fli>\u003Cli>La salida estructurada se valida antes de su uso posterior.\u003C\u002Fli>\u003Cli>El conjunto de datos de evaluación contiene preguntas reales, fuentes esperadas y respuestas inaceptables.\u003C\u002Fli>\u003Cli>Los registros de recuperación muestran qué fragmentos se utilizaron para cada respuesta.\u003C\u002Fli>\u003Cli>Se monitorean la latencia, el uso de tokens, la carga de GPU\u002FCPU y las tasas de error.\u003C\u002Fli>\u003Cli>Las reglas de privacidad y retención cubren cargas, texto extraído, fragmentos, embeddings, prompts, respuestas y registros.\u003C\u002Fli>\u003Cli>Las rutas de implementación, copia de seguridad, restauración, reversión e incidentes están documentadas.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Esto se conecta directamente con \u003Ca href=\"\u002Fes\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa>: la IA útil no es solo una decisión de modelo. Es disciplina de entrega, evidencia, controles, métricas y propiedad operativa.\u003C\u002Fp>\n\u003Ch2>Abstracción del Proveedor: No Te Cases con un Solo Modelo\u003C\u002Fh2>\n\u003Cp>Los modelos locales son valiosos para casos de uso sensibles a la privacidad, escenarios fuera de línea, control de costos y experimentación interna. Los modelos en la nube pueden ser más fuertes para razonamiento difícil, codificación, precisión multilingüe o trabajo multimodal. Una aplicación de producción no debe tratar a ningún modelo como infraestructura permanente.\u003C\u002Fp>\n\u003Cp>Una abstracción del proveedor permite que el mismo flujo de trabajo de la aplicación llame a Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM u otro endpoint auto-alojado sin reescribir el producto. La aplicación decide el proveedor según el caso de uso, la sensibilidad de los datos, la latencia, el costo y los requisitos de calidad.\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>La idea clave no es la sintaxis de TypeScript. La idea clave es el límite. La aplicación posee permisos, recuperación, reglas de prompts, trazado y evaluación. El proveedor solo produce la salida del modelo.\u003C\u002Fp>\n\u003Ch2>pgvector vs Qdrant\u003C\u002Fh2>\n\u003Cp>Para muchas aplicaciones Open-LLM, la decisión del almacén vectorial es simple al principio: si PostgreSQL ya es su sistema de registro, \u003Cb>pgvector\u003C\u002Fb> es un punto de partida sólido. Mantiene metadatos, permisos, registros de documentos y vectores juntos. Eso reduce la complejidad operativa.\u003C\u002Fp>\n\u003Cp>\u003Cb>Qdrant\u003C\u002Fb> se vuelve más atractivo cuando la búsqueda vectorial necesita convertirse en un servicio dedicado: mayor escala de recuperación, filtrado avanzado, indexación especializada, patrones de búsqueda híbrida o escalado independiente de la infraestructura de recuperación.\u003C\u002Fp>\n\u003Ctable class=\"w-full border-collapse\">\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Opción\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Mejor ajuste\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Fortalezas\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Compensaciones\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">pgvector\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">PoCs, producción temprana, sistemas ya construidos sobre PostgreSQL.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Base de datos única, uniones SQL, comportamiento ACID, operaciones más simples, metadatos cercanos a los vectores.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Menos especializado que una base de datos vectorial dedicada a gran escala de recuperación.\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\">Servicios de búsqueda semántica dedicados, cargas de trabajo vectoriales más grandes, patrones avanzados de filtrado y recuperación.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Búsqueda vectorial construida a propósito, modelo de filtrado sólido, escalado independiente, API centradas en la recuperación.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Agrega otro componente de infraestructura y superficie operativa.\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Comience simple\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">La mayoría de los equipos empresariales que comienzan con aplicaciones RAG privadas.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Menor riesgo de arquitectura, entrega más rápida, ruta de auditoría más fácil.\u003C\u002Ftd>\u003Ctd class=\"border border-gray-300 px-4 py-2\">Puede requerir migración más adelante si la recuperación se vuelve central y a gran escala.\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftable>\n\u003Cp>Una regla práctica: comience con pgvector cuando PostgreSQL ya posea sus datos comerciales y la escala de recuperación sea moderada. Muévase a Qdrant cuando la búsqueda vectorial se convierta en una capacidad de producto por sí misma.\u003C\u002Fp>\n\u003Ch2>Verificación de Realidad de Seguridad y Privacidad\u003C\u002Fh2>\n\u003Cp>La inferencia local no significa automáticamente IA segura. Solo significa que la ejecución del modelo puede ocurrir localmente. La ruta completa de datos aún importa: archivos cargados, texto extraído, fragmentos, incrustaciones, registros, indicaciones, respuestas, copias de seguridad, acceso de desarrolladores, herramientas de administración y exportaciones de análisis.\u003C\u002Fp>\n\u003Cp>Las incrustaciones también merecen cuidado. No son el documento original, pero aún representan información derivada de contenido sensible. Trátelas como parte de la ruta de datos protegida, especialmente cuando están vinculadas a metadatos, registros fuente, consultas de usuario o identificadores de inquilino.\u003C\u002Fp>\n\u003Cul>\u003Cli>No indexe documentos antes de que se conozcan las reglas de acceso.\u003C\u002Fli>\u003Cli>No recupere fragmentos sin filtros de inquilino y rol.\u003C\u002Fli>\u003Cli>No registre indicaciones y respuestas completas sin reglas de retención.\u003C\u002Fli>\u003Cli>No envíe contexto sensible a un modelo en la nube a menos que la política lo permita.\u003C\u002Fli>\u003Cli>No asuma que local equivale a cumplimiento de GDPR; el cumplimiento depende del diseño completo del procesamiento.\u003C\u002Fli>\u003Cli>No permita que las copias de evaluación y depuración se conviertan en conjuntos de datos sombra no controlados.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>Aquí es donde \u003Ca href=\"\u002Fes\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">la arquitectura SaaS multiinquilino\u003C\u002Fa> importa. Si los inquilinos, roles, propiedad de datos y límites operativos son débiles, agregar un LLM local puede amplificar el riesgo en lugar de reducirlo.\u003C\u002Fp>\n\u003Ch2>La Evaluación No Es Opcional\u003C\u002Fh2>\n\u003Cp>Una aplicación Open-LLM de producción necesita un bucle de evaluación. Sin él, los equipos solo tienen anécdotas. Algunas buenas respuestas de demostración no prueban que la recuperación funcione, que la indicación sea estable o que el modelo se comporte de manera segura en el uso real.\u003C\u002Fp>\n\u003Cp>Un conjunto de datos de evaluación mínimo debe incluir preguntas reales de usuarios, documentos fuente esperados, respuestas inaceptables, casos sin respuesta y pruebas de regresión para fallos anteriores. Cada cambio en la fragmentación, incrustaciones, indicaciones, proveedor de modelo o umbral de recuperación debe probarse contra ese conjunto de datos.\u003C\u002Fp>\n\u003Cul>\u003Cli>\u003Cb>Evaluación de recuperación:\u003C\u002Fb> ¿El sistema obtuvo los fragmentos fuente correctos?\u003C\u002Fli>\u003Cli>\u003Cb>Evaluación de respuesta:\u003C\u002Fb> ¿La respuesta se mantuvo fundamentada en el contexto recuperado?\u003C\u002Fli>\u003Cli>\u003Cb>Evaluación de seguridad:\u003C\u002Fb> ¿El sistema evitó divulgaciones prohibidas o datos no autorizados?\u003C\u002Fli>\u003Cli>\u003Cb>Evaluación operativa:\u003C\u002Fb> ¿La latencia, la tasa de fallos y el costo se mantuvieron dentro de límites aceptables?\u003C\u002Fli>\u003Cli>\u003Cb>Evaluación de regresión:\u003C\u002Fb> ¿Una actualización de modelo o indicación rompió un comportamiento previamente correcto?\u003C\u002Fli>\u003C\u002Ful>\n\u003Cp>RAG reduce las alucinaciones, pero no elimina la necesidad de evaluación. La evaluación es el bucle de control que convierte un prototipo inteligente en un producto en mejora.\u003C\u002Fp>\n\u003Ch2>Disciplina de Implementación: El Modelo Es un Evento de Lanzamiento\u003C\u002Fh2>\n\u003Cp>Cambiar un modelo no es un ajuste de configuración inofensivo. Puede cambiar el estilo de respuesta, el comportamiento de razonamiento, la calidad del lenguaje, la latencia, el uso de tokens, la disciplina de citas y los modos de fallo. En producción, las actualizaciones de modelo deben manejarse como eventos de lanzamiento.\u003C\u002Fp>\n\u003Cp>Eso significa versionar indicaciones, modelos de incrustación, configuraciones de recuperación, identificadores de modelo, rutas de proveedor y resultados de evaluación. También significa tener lógica de reversión. Si un nuevo modelo causa respuestas peor fundamentadas en la recuperación o rompe la salida estructurada, el sistema necesita una ruta controlada de regreso a la configuración conocida como buena.\u003C\u002Fp>\n\u003Cp>Esto se ajusta a la misma lógica operativa que \u003Ca href=\"\u002Fes\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Entrega y Cambio\u003C\u002Fa> y \u003Ca href=\"\u002Fes\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">arquitectura de plataforma preparada para IA\u003C\u002Fa>: la entrega estable requiere controles repetibles, no correcciones manuales heroicas.\u003C\u002Fp>\n\u003Ch2>Conclusión: La Producción Comienza Donde Termina la Demostración\u003C\u002Fh2>\n\u003Cp>Ollama puede iniciar el viaje. Hace accesible la ejecución local del modelo y reduce la barrera para la experimentación. Eso es valioso. Pero la aplicación de producción comienza donde termina la demostración.\u003C\u002Fp>\n\u003Cp>El modelo es solo un componente reemplazable. El producto real es el sistema controlado que lo rodea: ingesta, permisos, recuperación, prompts, enrutamiento de proveedores, evaluación, registros, monitoreo, despliegue, respaldo y flujo de trabajo del usuario. Ahí es donde la privacidad se vuelve real, la calidad se vuelve medible y el valor comercial se vuelve repetible.\u003C\u002Fp>\n\u003Cp>Una aplicación seria de Open-LLM se construye mediante disciplina de ingeniería, no ejecutando un modelo local una sola vez. Ollama puede iniciar el viaje, pero la aplicación de producción comienza donde termina la demostración.\u003C\u002Fp>\n\u003Cp>Tema:\u003C\u002Fp>\n\u003Cp>Ollama, Open LLM, RAG, pgvector, Qdrant, IA local, LLMOps, abstracción de proveedores, arquitectura de IA empresarial\u003C\u002Fp>",{"time":228,"blocks":229,"version":625},1782679800982,[230,235,241,246,251,256,262,267,272,283,291,296,301,327,332,337,342,347,364,369,374,379,385,390,404,409,414,437,442,447,452,457,462,467,472,477,482,507,512,517,522,527,539,544,549,554,559,570,575,580,585,590,595,600,605,610,615,620],{"id":231,"data":232,"type":42,"tunes":234},"HsB_-_Sdzh",{"text":233,"level":40},"Ollama no es el producto: construyendo aplicaciones Open-LLM listas para producción",{},{"id":236,"data":237,"type":239,"tunes":240},"G_FTnJiMVo",{"text":238},"Herramientas como \u003Cb>Ollama\u003C\u002Fb> han hecho que la experimentación local con LLM sea casi sin fricción. Instala el runtime, descarga un modelo, envía un prompt, y un asistente local responde en segundos. Eso es útil. También es la parte más fácil del camino.","paragraph",{},{"id":242,"data":243,"type":239,"tunes":245},"fVa1sJxmy6",{"text":244},"Una demo en terminal no es una aplicación. Un modelo local no es un producto. Una aplicación productiva de Open-LLM necesita ingesta controlada de datos, recuperación, permisos, evaluación, registro, abstracción de proveedores, disciplina de despliegue y un flujo de trabajo de usuario que resuelva un problema empresarial real.",{},{"id":247,"data":248,"type":239,"tunes":250},"f6EzZPNhRc",{"text":249},"La tesis central es simple: \u003Cb>Ollama es un runtime, no el producto\u003C\u002Fb>. El producto vive en la capa de aplicación alrededor del modelo. Esa capa decide qué documentos son visibles, qué fragmentos se recuperan, qué prompts se usan, cómo se evalúan las respuestas, cómo se registran los fallos y si el sistema puede ser confiable en el trabajo diario.",{},{"id":252,"data":253,"type":239,"tunes":255},"wjgsXAJQ-i",{"text":254},"Aquí es donde la IA local se vuelve interesante para equipos que construyen asistentes privados, herramientas internas de conocimiento, funcionalidades SaaS habilitadas por LLM o copilotos de flujo de trabajo empresarial. El modelo puede ejecutarse localmente, pero la privacidad, la confiabilidad y el valor empresarial solo existen si todo el sistema está correctamente diseñado.",{},{"id":257,"data":258,"type":42,"tunes":261},"NnYUiRBtwJ",{"text":259,"level":260},"Ollama es un runtime, no un producto",2,{},{"id":263,"data":264,"type":239,"tunes":266},"nVrpsWCll3",{"text":265},"Ollama es excelente para ejecutar y servir modelos abiertos localmente. Es especialmente fuerte para exploración, flujos de trabajo de desarrolladores, PoCs y equipos que quieren probar el comportamiento del modelo sin comprometerse inmediatamente con un proveedor de nube. Expone la interacción local con modelos a través de APIs y capas de compatibilidad que facilitan la conexión con herramientas existentes al estilo OpenAI.",{},{"id":268,"data":269,"type":239,"tunes":271},"_aQOCMkaG8",{"text":270},"Eso no significa que Ollama resuelva el problema de la aplicación. No sabe automáticamente qué documentos de la empresa puede leer un usuario. No crea aislamiento de inquilinos, versionado de documentos, pistas de auditoría, atribución de fuentes, conjuntos de datos de evaluación o flujos de trabajo de UI específicos del negocio. Esas responsabilidades recaen en la arquitectura de la aplicación.",{},{"id":273,"data":274,"type":281,"tunes":282},"jeeZbnQvh7",{"meta":275,"items":276,"style":280},{},[277,278,279],"\u003Cb>Ollama ayuda con:\u003C\u002Fb> ejecución local de modelos, experimentación rápida, acceso a modelos basado en API, PoCs sin conexión y productividad del desarrollador.","\u003Cb>Ollama no resuelve por sí mismo:\u003C\u002Fb> control de acceso, calidad de RAG, ciclo de vida de documentos, límites de inquilinos, evaluación, registro de auditoría, monitoreo, comportamiento de respaldo o diseño de flujo de trabajo empresarial.","\u003Cb>El error arquitectónico:\u003C\u002Fb> tratar la inferencia local como si ya fuera un producto de IA seguro.","unordered","list",{},{"id":284,"data":285,"type":289,"tunes":290},"U8K0Qat9xz",{"text":286,"caption":287,"alignment":288},"El modelo es la parte más fácil. La capa de aplicación es donde vive el valor del producto.","Principio de arquitectura","left","quote",{},{"id":292,"data":293,"type":42,"tunes":295},"NYU66FQDT8",{"text":294,"level":260},"Demo, PoC y producción son etapas diferentes",{},{"id":297,"data":298,"type":239,"tunes":300},"-EGq4eScAy",{"text":299},"Muchas iniciativas de Open-LLM fallan porque los equipos confunden una demo funcional con una capacidad de producción. La diferencia no es cosmética. Cada nivel de madurez tiene un objetivo diferente, un perfil de riesgo diferente y un requisito de ingeniería diferente.",{},{"id":302,"data":303,"type":325,"tunes":326},"V_OydBfVSx",{"content":304,"stretched":43,"withHeadings":14},[305,310,315,320],[306,307,308,309],"Etapa","Qué demuestra","Configuración típica","Qué falta aún",[311,312,313,314],"Demo","Un modelo puede responder a un prompt localmente.","Ollama en un portátil, un modelo, un prompt, sin control real de datos.","Permisos, recuperación, registros, evaluación, despliegue, monitoreo, flujo de trabajo de usuario.",[316,317,318,319],"PoC","Un sistema pequeño y controlado puede responder preguntas sobre documentos o flujos de trabajo seleccionados.","UI web básica, script de ingesta, búsqueda vectorial, usuarios limitados, alcance de documentos limitado.","Escalabilidad, gobernanza, conjuntos de datos de prueba, estrategia de respaldo, auditabilidad, modelo de soporte.",[321,322,323,324],"Producción","Múltiples usuarios pueden usar el sistema de forma segura y repetida dentro del trabajo real.","App autenticada, aislamiento de inquilinos, pipeline de RAG, observabilidad, abstracción de proveedores, copias de seguridad, proceso de lanzamiento.","Mejora continua, expansión de evaluación, madurez operativa.","table",{},{"id":328,"data":329,"type":239,"tunes":331},"ikp3g9j4So",{"text":330},"Una PoC puede ser intencionalmente pequeña. La producción no puede ser intencionalmente ciega. Una vez que usuarios reales, datos privados, decisiones empresariales y expectativas de cumplimiento entran en el sistema, la arquitectura debe volverse explícita.",{},{"id":333,"data":334,"type":42,"tunes":336},"f1xN0TAU53",{"text":335,"level":260},"Dónde encaja RAG",{},{"id":338,"data":339,"type":239,"tunes":341},"wVTJ2-nEg8",{"text":340},"\u003Cb>Generación Aumentada por Recuperación\u003C\u002Fb> es el puente más común entre un modelo de lenguaje y el conocimiento empresarial privado. El modelo no conoce mágicamente documentos internos, contratos, tickets, especificaciones de producto o manuales de operaciones. La aplicación debe recuperar el contexto relevante antes de pedir al modelo que responda.",{},{"id":343,"data":344,"type":239,"tunes":346},"fvxr_M2czf",{"text":345},"Un flujo práctico de RAG se ve así:",{},{"id":348,"data":349,"type":281,"tunes":363},"tVZHbBjBJe",{"meta":350,"items":352,"style":362},{"counterType":351},"numeric",[353,354,355,356,357,358,359,360,361],"Los documentos se cargan o sincronizan desde fuentes controladas.","El texto se extrae, limpia y divide en fragmentos.","Los fragmentos reciben metadatos como inquilino, propietario, versión del documento, URL de origen, alcance de acceso y marca de tiempo.","Se generan embeddings para cada fragmento.","Los vectores se almacenan en pgvector, Qdrant u otra capa de recuperación.","En el momento de la consulta, la aplicación verifica los permisos antes de la recuperación.","Los fragmentos relevantes se recuperan con búsqueda de similitud y filtros de metadatos.","El constructor de prompts inyecta el contexto seleccionado en la solicitud al modelo.","La respuesta se genera con citas, límites de confianza y un respaldo de no respuesta cuando la recuperación es débil.","ordered",{},{"id":365,"data":366,"type":239,"tunes":368},"5VP9OTHrad",{"text":367},"RAG reduce las alucinaciones, pero no las elimina. Una estrategia de fragmentación deficiente, metadatos débiles, filtros de permisos faltantes, embeddings de baja calidad o una recuperación demasiado amplia aún pueden producir respuestas convincentes pero incorrectas. Los sistemas RAG serios necesitan umbrales, citas, registros de recuperación y evaluación.",{},{"id":370,"data":371,"type":42,"tunes":373},"6R3G0KzeXf",{"text":372,"level":260},"Una Arquitectura Práctica Local de Open-LLM",{},{"id":375,"data":376,"type":239,"tunes":378},"hsYURnHqGd",{"text":377},"Una ruta de producción realista no requiere infraestructura exótica. Para muchos equipos, una primera arquitectura sólida puede usar un stack web normal: Nuxt para el frontend, una API Nitro o Node, PostgreSQL como sistema de registro, pgvector para la recuperación, Ollama como runtime local, Prisma para el acceso a datos y trabajadores en segundo plano para la ingesta y los embeddings.",{},{"id":380,"data":381,"type":383,"tunes":384},"ie58nqmk5o",{"code":382},"Pregunta del usuario | v\nInterfaz de usuario | v\nAPI \u002F Backend | +--> Autenticación +--> Verificación de permisos de inquilino y rol | v\nCapa de recuperación | +--> Metadatos de PostgreSQL +--> Búsqueda vectorial pgvector o Qdrant +--> Umbral de similitud | v\nConstructor de prompts | +--> prompt del sistema +--> fragmentos recuperados +--> referencias de fuentes +--> reglas de no respuesta | v\nAbstracción del proveedor de LLM | +--> Ollama \u002F modelo local +--> respaldo de modelo en la nube +--> futuro runtime auto-alojado | v\nRespuesta con fuentes | v\nRegistros, trazas, métricas, conjunto de datos de evaluación","code",{},{"id":386,"data":387,"type":239,"tunes":389},"HCdDDntKaG",{"text":388},"Esta arquitectura mantiene el modelo reemplazable. Ollama puede ser el primer runtime, pero el sistema no debe estar bloqueado a un motor de inferencia. Una arquitectura limpia separa el flujo de trabajo del usuario, la recuperación, la construcción de prompts, el proveedor del modelo y la observabilidad.",{},{"id":391,"data":392,"type":281,"tunes":403},"jx3zLyUEmA",{"meta":393,"items":394,"style":280},{},[395,396,397,398,399,400,401,402],"\u003Cb>Frontend:\u003C\u002Fb> Nuxt u otra interfaz web para flujos de trabajo de usuarios autenticados.","\u003Cb>Backend\u002FAPI:\u003C\u002Fb> Nitro, Node.js o FastAPI para orquestación, permisos y enrutamiento de proveedores.","\u003Cb>Base de datos:\u003C\u002Fb> PostgreSQL para documentos, usuarios, inquilinos, roles, prompts, registros y metadatos.","\u003Cb>Búsqueda vectorial:\u003C\u002Fb> pgvector para recuperación integrada simple o Qdrant cuando la búsqueda vectorial se convierte en un servicio dedicado.","\u003Cb>Runtime del modelo:\u003C\u002Fb> Ollama para ejecución local, servidor llama.cpp para servicio ligero o vLLM para servicio GPU de mayor rendimiento.","\u003Cb>Almacenamiento:\u003C\u002Fb> sistema de archivos local o almacenamiento de objetos compatible con S3 para archivos subidos y artefactos extraídos.","\u003Cb>Trabajadores:\u003C\u002Fb> ingesta en segundo plano, fragmentación, embedding, reindexación y procesamiento de versiones de documentos.","\u003Cb>Observabilidad:\u003C\u002Fb> registros, métricas, trazas de prompts, trazas de recuperación, seguimiento de latencia y resultados de evaluación.",{},{"id":405,"data":406,"type":42,"tunes":408},"CG1PJLbPuV",{"text":407,"level":260},"La Lista de Verificación de Preparación para Producción",{},{"id":410,"data":411,"type":239,"tunes":413},"aOHxNXO4Mk",{"text":412},"La siguiente lista de verificación es la diferencia entre una demostración de modelo local y una aplicación Open-LLM utilizable:",{},{"id":415,"data":416,"type":281,"tunes":436},"TBkg7dLMT1",{"meta":417,"items":418,"style":280},{},[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435],"Cada documento y fragmento tiene un tenant_id.","La recuperación se bloquea hasta que se verifiquen los permisos del usuario y del rol.","Los documentos incluyen metadatos, fuente, propietario, versión, estado del ciclo de vida y política de retención.","La estrategia de fragmentación está documentada y probada con documentos reales.","La selección del modelo de embedding es explícita y versionada.","La configuración del índice vectorial es reproducible.","El umbral de similitud evita que se use contexto débil a ciegas.","Las respuestas incluyen citas de fuentes o referencias a fuentes cuando sea posible.","Se utiliza un fallback de no respuesta cuando la confianza en la recuperación es demasiado baja.","Las plantillas de prompts están versionadas y controladas por versiones.","La abstracción del proveedor de LLM se construye desde el principio.","La salida estructurada se valida antes de su uso posterior.","El conjunto de datos de evaluación contiene preguntas reales, fuentes esperadas y respuestas inaceptables.","Los registros de recuperación muestran qué fragmentos se utilizaron para cada respuesta.","Se monitorean la latencia, el uso de tokens, la carga de GPU\u002FCPU y las tasas de error.","Las reglas de privacidad y retención cubren cargas, texto extraído, fragmentos, embeddings, prompts, respuestas y registros.","Las rutas de implementación, copia de seguridad, restauración, reversión e incidentes están documentadas.",{},{"id":438,"data":439,"type":239,"tunes":441},"tdTcmD4DEO",{"text":440},"Esto se conecta directamente con \u003Ca href=\"\u002Fes\u002Fenterprise\">Enterprise Delivery OS\u003C\u002Fa>: la IA útil no es solo una decisión de modelo. Es disciplina de entrega, evidencia, controles, métricas y propiedad operativa.",{},{"id":443,"data":444,"type":42,"tunes":446},"zOuV7s1ByX",{"text":445,"level":260},"Abstracción del Proveedor: No Te Cases con un Solo Modelo",{},{"id":448,"data":449,"type":239,"tunes":451},"gPuC35eEAc",{"text":450},"Los modelos locales son valiosos para casos de uso sensibles a la privacidad, escenarios fuera de línea, control de costos y experimentación interna. Los modelos en la nube pueden ser más fuertes para razonamiento difícil, codificación, precisión multilingüe o trabajo multimodal. Una aplicación de producción no debe tratar a ningún modelo como infraestructura permanente.",{},{"id":453,"data":454,"type":239,"tunes":456},"ssy1KKIyUv",{"text":455},"Una abstracción del proveedor permite que el mismo flujo de trabajo de la aplicación llame a Ollama, OpenAI, Gemini, Anthropic, Mistral, vLLM u otro endpoint auto-alojado sin reescribir el producto. La aplicación decide el proveedor según el caso de uso, la sensibilidad de los datos, la latencia, el costo y los requisitos de calidad.",{},{"id":458,"data":459,"type":383,"tunes":461},"droVs9NwWG",{"code":460},"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":463,"data":464,"type":239,"tunes":466},"TqpI4xqkq1",{"text":465},"La idea clave no es la sintaxis de TypeScript. La idea clave es el límite. La aplicación posee permisos, recuperación, reglas de prompts, trazado y evaluación. El proveedor solo produce la salida del modelo.",{},{"id":468,"data":469,"type":42,"tunes":471},"RuZt2H8Qtd",{"text":470,"level":260},"pgvector vs Qdrant",{},{"id":473,"data":474,"type":239,"tunes":476},"-nl0_dtw9s",{"text":475},"Para muchas aplicaciones Open-LLM, la decisión del almacén vectorial es simple al principio: si PostgreSQL ya es su sistema de registro, \u003Cb>pgvector\u003C\u002Fb> es un punto de partida sólido. Mantiene metadatos, permisos, registros de documentos y vectores juntos. Eso reduce la complejidad operativa.",{},{"id":478,"data":479,"type":239,"tunes":481},"mJJZ9Vhiy4",{"text":480},"\u003Cb>Qdrant\u003C\u002Fb> se vuelve más atractivo cuando la búsqueda vectorial necesita convertirse en un servicio dedicado: mayor escala de recuperación, filtrado avanzado, indexación especializada, patrones de búsqueda híbrida o escalado independiente de la infraestructura de recuperación.",{},{"id":483,"data":484,"type":325,"tunes":506},"ZNBNQmWTqi",{"content":485,"stretched":43,"withHeadings":14},[486,491,496,501],[487,488,489,490],"Opción","Mejor ajuste","Fortalezas","Compensaciones",[492,493,494,495],"pgvector","PoCs, producción temprana, sistemas ya construidos sobre PostgreSQL.","Base de datos única, uniones SQL, comportamiento ACID, operaciones más simples, metadatos cercanos a los vectores.","Menos especializado que una base de datos vectorial dedicada a gran escala de recuperación.",[497,498,499,500],"Qdrant","Servicios de búsqueda semántica dedicados, cargas de trabajo vectoriales más grandes, patrones avanzados de filtrado y recuperación.","Búsqueda vectorial construida a propósito, modelo de filtrado sólido, escalado independiente, API centradas en la recuperación.","Agrega otro componente de infraestructura y superficie operativa.",[502,503,504,505],"Comience simple","La mayoría de los equipos empresariales que comienzan con aplicaciones RAG privadas.","Menor riesgo de arquitectura, entrega más rápida, ruta de auditoría más fácil.","Puede requerir migración más adelante si la recuperación se vuelve central y a gran escala.",{},{"id":508,"data":509,"type":239,"tunes":511},"EaNwvz0Ala",{"text":510},"Una regla práctica: comience con pgvector cuando PostgreSQL ya posea sus datos comerciales y la escala de recuperación sea moderada. Muévase a Qdrant cuando la búsqueda vectorial se convierta en una capacidad de producto por sí misma.",{},{"id":513,"data":514,"type":42,"tunes":516},"Xm3eJKCflO",{"text":515,"level":260},"Verificación de Realidad de Seguridad y Privacidad",{},{"id":518,"data":519,"type":239,"tunes":521},"rdIR5uvVuv",{"text":520},"La inferencia local no significa automáticamente IA segura. Solo significa que la ejecución del modelo puede ocurrir localmente. La ruta completa de datos aún importa: archivos cargados, texto extraído, fragmentos, incrustaciones, registros, indicaciones, respuestas, copias de seguridad, acceso de desarrolladores, herramientas de administración y exportaciones de análisis.",{},{"id":523,"data":524,"type":239,"tunes":526},"IhqG3kxPSc",{"text":525},"Las incrustaciones también merecen cuidado. No son el documento original, pero aún representan información derivada de contenido sensible. Trátelas como parte de la ruta de datos protegida, especialmente cuando están vinculadas a metadatos, registros fuente, consultas de usuario o identificadores de inquilino.",{},{"id":528,"data":529,"type":281,"tunes":538},"QvcBrg8G6B",{"meta":530,"items":531,"style":280},{},[532,533,534,535,536,537],"No indexe documentos antes de que se conozcan las reglas de acceso.","No recupere fragmentos sin filtros de inquilino y rol.","No registre indicaciones y respuestas completas sin reglas de retención.","No envíe contexto sensible a un modelo en la nube a menos que la política lo permita.","No asuma que local equivale a cumplimiento de GDPR; el cumplimiento depende del diseño completo del procesamiento.","No permita que las copias de evaluación y depuración se conviertan en conjuntos de datos sombra no controlados.",{},{"id":540,"data":541,"type":239,"tunes":543},"_YLdd4iHrS",{"text":542},"Aquí es donde \u003Ca href=\"\u002Fes\u002Fblog\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform\">la arquitectura SaaS multiinquilino\u003C\u002Fa> importa. Si los inquilinos, roles, propiedad de datos y límites operativos son débiles, agregar un LLM local puede amplificar el riesgo en lugar de reducirlo.",{},{"id":545,"data":546,"type":42,"tunes":548},"I6V0KMIQjb",{"text":547,"level":260},"La Evaluación No Es Opcional",{},{"id":550,"data":551,"type":239,"tunes":553},"yaKCxuptHO",{"text":552},"Una aplicación Open-LLM de producción necesita un bucle de evaluación. Sin él, los equipos solo tienen anécdotas. Algunas buenas respuestas de demostración no prueban que la recuperación funcione, que la indicación sea estable o que el modelo se comporte de manera segura en el uso real.",{},{"id":555,"data":556,"type":239,"tunes":558},"Kq_qe2AL-v",{"text":557},"Un conjunto de datos de evaluación mínimo debe incluir preguntas reales de usuarios, documentos fuente esperados, respuestas inaceptables, casos sin respuesta y pruebas de regresión para fallos anteriores. Cada cambio en la fragmentación, incrustaciones, indicaciones, proveedor de modelo o umbral de recuperación debe probarse contra ese conjunto de datos.",{},{"id":560,"data":561,"type":281,"tunes":569},"oBlROQd5Li",{"meta":562,"items":563,"style":280},{},[564,565,566,567,568],"\u003Cb>Evaluación de recuperación:\u003C\u002Fb> ¿El sistema obtuvo los fragmentos fuente correctos?","\u003Cb>Evaluación de respuesta:\u003C\u002Fb> ¿La respuesta se mantuvo fundamentada en el contexto recuperado?","\u003Cb>Evaluación de seguridad:\u003C\u002Fb> ¿El sistema evitó divulgaciones prohibidas o datos no autorizados?","\u003Cb>Evaluación operativa:\u003C\u002Fb> ¿La latencia, la tasa de fallos y el costo se mantuvieron dentro de límites aceptables?","\u003Cb>Evaluación de regresión:\u003C\u002Fb> ¿Una actualización de modelo o indicación rompió un comportamiento previamente correcto?",{},{"id":571,"data":572,"type":239,"tunes":574},"9gDXPLZ6Rp",{"text":573},"RAG reduce las alucinaciones, pero no elimina la necesidad de evaluación. La evaluación es el bucle de control que convierte un prototipo inteligente en un producto en mejora.",{},{"id":576,"data":577,"type":42,"tunes":579},"Hi1K8JLPUo",{"text":578,"level":260},"Disciplina de Implementación: El Modelo Es un Evento de Lanzamiento",{},{"id":581,"data":582,"type":239,"tunes":584},"sEpigdnlkD",{"text":583},"Cambiar un modelo no es un ajuste de configuración inofensivo. Puede cambiar el estilo de respuesta, el comportamiento de razonamiento, la calidad del lenguaje, la latencia, el uso de tokens, la disciplina de citas y los modos de fallo. En producción, las actualizaciones de modelo deben manejarse como eventos de lanzamiento.",{},{"id":586,"data":587,"type":239,"tunes":589},"sLXBCBh3E0",{"text":588},"Eso significa versionar indicaciones, modelos de incrustación, configuraciones de recuperación, identificadores de modelo, rutas de proveedor y resultados de evaluación. También significa tener lógica de reversión. Si un nuevo modelo causa respuestas peor fundamentadas en la recuperación o rompe la salida estructurada, el sistema necesita una ruta controlada de regreso a la configuración conocida como buena.",{},{"id":591,"data":592,"type":239,"tunes":594},"pcbe8eGMbe",{"text":593},"Esto se ajusta a la misma lógica operativa que \u003Ca href=\"\u002Fes\u002Fenterprise\u002Freference-models\u002Fdelivery-and-change\">Entrega y Cambio\u003C\u002Fa> y \u003Ca href=\"\u002Fes\u002Fenterprise\u002Freference-models\u002Fdigital-platform\">arquitectura de plataforma preparada para IA\u003C\u002Fa>: la entrega estable requiere controles repetibles, no correcciones manuales heroicas.",{},{"id":596,"data":597,"type":42,"tunes":599},"mOhI-jF1zx",{"text":598,"level":260},"Conclusión: La Producción Comienza Donde Termina la Demostración",{},{"id":601,"data":602,"type":239,"tunes":604},"3mXK980w23",{"text":603},"Ollama puede iniciar el viaje. Hace accesible la ejecución local del modelo y reduce la barrera para la experimentación. Eso es valioso. Pero la aplicación de producción comienza donde termina la demostración.",{},{"id":606,"data":607,"type":239,"tunes":609},"9O27eQ_Svm",{"text":608},"El modelo es solo un componente reemplazable. El producto real es el sistema controlado que lo rodea: ingesta, permisos, recuperación, prompts, enrutamiento de proveedores, evaluación, registros, monitoreo, despliegue, respaldo y flujo de trabajo del usuario. Ahí es donde la privacidad se vuelve real, la calidad se vuelve medible y el valor comercial se vuelve repetible.",{},{"id":611,"data":612,"type":239,"tunes":614},"4Lyy3E4ZsF",{"text":613},"Una aplicación seria de Open-LLM se construye mediante disciplina de ingeniería, no ejecutando un modelo local una sola vez. Ollama puede iniciar el viaje, pero la aplicación de producción comienza donde termina la demostración.",{},{"id":616,"data":617,"type":239,"tunes":619},"eKPRtinG5L",{"text":618},"Tema:",{},{"id":621,"data":622,"type":239,"tunes":624},"GMa6lE1NNl",{"text":623},"Ollama, Open LLM, RAG, pgvector, Qdrant, IA local, LLMOps, abstracción de proveedores, arquitectura de IA empresarial",{},"2.31","Ejecutar un modelo local con Ollama es fácil. Construir una aplicación Open-LLM lista para producción es más difícil: requiere RAG, control de acceso, abstracción de proveedores, evaluación, registro, disciplina de despliegue y una capa de aplicación controlada alrededor del modelo.","\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":634,"de":635,"sr":636,"es":637,"fr":638,"it":639,"ru":640,"zh":641},"\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",[643,647,651,655,659],{"id":644,"name":645,"slug":646},39,"Enterprise Delivery OS","enterprise",{"id":648,"name":649,"slug":650},87,"Playbook: LLMOps","llmops",{"id":652,"name":653,"slug":654},58,"Evaluación y compuertas de calidad","evaluation",{"id":656,"name":657,"slug":658},89,"Arnés de evaluación","evaluation-harness",{"id":660,"name":661,"slug":662},85,"Compuertas de calidad","quality-gates",{"id":664,"login":665,"email":666,"displayName":667},"20","rooth8233","","Aleksandar Stajić",[669,998],{"lang":670,"title":671,"content":672,"contentJson":673,"excerpt":997},"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":674,"blocks":675,"version":996},1782679301267,[676,679,683,687,691,695,699,703,707,715,720,724,728,750,754,758,762,766,780,784,788,792,796,800,813,817,821,843,847,851,855,859,862,866,869,873,877,899,903,907,911,915,926,930,934,938,942,952,956,960,964,968,972,976,980,984,988,992],{"id":231,"data":677,"type":42,"tunes":678},{"text":671,"level":40},{},{"id":236,"data":680,"type":239,"tunes":682},{"text":681},"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":242,"data":684,"type":239,"tunes":686},{"text":685},"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":247,"data":688,"type":239,"tunes":690},{"text":689},"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":252,"data":692,"type":239,"tunes":694},{"text":693},"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":257,"data":696,"type":42,"tunes":698},{"text":697,"level":260},"Ollama Is a Runtime, Not a Product",{},{"id":263,"data":700,"type":239,"tunes":702},{"text":701},"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":268,"data":704,"type":239,"tunes":706},{"text":705},"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":273,"data":708,"type":281,"tunes":714},{"meta":709,"items":710,"style":280},{},[711,712,713],"\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":284,"data":716,"type":289,"tunes":719},{"text":717,"caption":718,"alignment":288},"The model is the easiest part. The application layer is where the product value lives.","Architecture principle",{},{"id":292,"data":721,"type":42,"tunes":723},{"text":722,"level":260},"Demo, PoC, and Production Are Different Stages",{},{"id":297,"data":725,"type":239,"tunes":727},{"text":726},"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":302,"data":729,"type":325,"tunes":749},{"content":730,"stretched":43,"withHeadings":14},[731,736,740,744],[732,733,734,735],"Stage","What it proves","Typical setup","What is still missing",[311,737,738,739],"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.",[316,741,742,743],"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.",[745,746,747,748],"Production","Multiple users can use the system safely and repeatedly inside real work.","Authenticated app, tenant isolation, RAG pipeline, observability, provider abstraction, backups, release process.","Continuous improvement, evaluation expansion, operational maturity.",{},{"id":328,"data":751,"type":239,"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":333,"data":755,"type":42,"tunes":757},{"text":756,"level":260},"Where RAG Fits In",{},{"id":338,"data":759,"type":239,"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":343,"data":763,"type":239,"tunes":765},{"text":764},"A practical RAG flow looks like this:",{},{"id":348,"data":767,"type":281,"tunes":779},{"meta":768,"items":769,"style":362},{"counterType":351},[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":365,"data":781,"type":239,"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":370,"data":785,"type":42,"tunes":787},{"text":786,"level":260},"A Practical Local Open-LLM Architecture",{},{"id":375,"data":789,"type":239,"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":380,"data":793,"type":383,"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":386,"data":797,"type":239,"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":391,"data":801,"type":281,"tunes":812},{"meta":802,"items":803,"style":280},{},[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":405,"data":814,"type":42,"tunes":816},{"text":815,"level":260},"The Production Readiness Checklist",{},{"id":410,"data":818,"type":239,"tunes":820},{"text":819},"The following checklist is the difference between a local model demo and a usable Open-LLM application:",{},{"id":415,"data":822,"type":281,"tunes":842},{"meta":823,"items":824,"style":280},{},[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":438,"data":844,"type":239,"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":443,"data":848,"type":42,"tunes":850},{"text":849,"level":260},"Provider Abstraction: Do Not Marry One Model",{},{"id":448,"data":852,"type":239,"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":453,"data":856,"type":239,"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":458,"data":860,"type":383,"tunes":861},{"code":460},{},{"id":463,"data":863,"type":239,"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":468,"data":867,"type":42,"tunes":868},{"text":470,"level":260},{},{"id":473,"data":870,"type":239,"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":478,"data":874,"type":239,"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":483,"data":878,"type":325,"tunes":898},{"content":879,"stretched":43,"withHeadings":14},[880,885,889,893],[881,882,883,884],"Option","Best fit","Strengths","Trade-offs",[492,886,887,888],"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.",[497,890,891,892],"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.",[894,895,896,897],"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":508,"data":900,"type":239,"tunes":902},{"text":901},"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":513,"data":904,"type":42,"tunes":906},{"text":905,"level":260},"Security and Privacy Reality Check",{},{"id":518,"data":908,"type":239,"tunes":910},{"text":909},"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":523,"data":912,"type":239,"tunes":914},{"text":913},"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":528,"data":916,"type":281,"tunes":925},{"meta":917,"items":918,"style":280},{},[919,920,921,922,923,924],"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":540,"data":927,"type":239,"tunes":929},{"text":928},"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":545,"data":931,"type":42,"tunes":933},{"text":932,"level":260},"Evaluation Is Not Optional",{},{"id":550,"data":935,"type":239,"tunes":937},{"text":936},"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":555,"data":939,"type":239,"tunes":941},{"text":940},"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":560,"data":943,"type":281,"tunes":951},{"meta":944,"items":945,"style":280},{},[946,947,948,949,950],"\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":571,"data":953,"type":239,"tunes":955},{"text":954},"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":576,"data":957,"type":42,"tunes":959},{"text":958,"level":260},"Deployment Discipline: The Model Is a Release Event",{},{"id":581,"data":961,"type":239,"tunes":963},{"text":962},"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":586,"data":965,"type":239,"tunes":967},{"text":966},"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":591,"data":969,"type":239,"tunes":971},{"text":970},"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":596,"data":973,"type":42,"tunes":975},{"text":974,"level":260},"Conclusion: Production Begins Where the Demo Ends",{},{"id":601,"data":977,"type":239,"tunes":979},{"text":978},"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":606,"data":981,"type":239,"tunes":983},{"text":982},"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":611,"data":985,"type":239,"tunes":987},{"text":986},"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":616,"data":989,"type":239,"tunes":991},{"text":990},"Theme:",{},{"id":621,"data":993,"type":239,"tunes":995},{"text":994},"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":999,"excerpt":626},{"time":228,"blocks":1000,"version":625},[1001,1004,1007,1010,1013,1016,1019,1022,1025,1030,1033,1036,1039,1047,1050,1053,1056,1059,1064,1067,1070,1073,1076,1079,1084,1087,1090,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1130,1133,1136,1139,1142,1147,1150,1153,1156,1159,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194],{"id":231,"data":1002,"type":42,"tunes":1003},{"text":233,"level":40},{},{"id":236,"data":1005,"type":239,"tunes":1006},{"text":238},{},{"id":242,"data":1008,"type":239,"tunes":1009},{"text":244},{},{"id":247,"data":1011,"type":239,"tunes":1012},{"text":249},{},{"id":252,"data":1014,"type":239,"tunes":1015},{"text":254},{},{"id":257,"data":1017,"type":42,"tunes":1018},{"text":259,"level":260},{},{"id":263,"data":1020,"type":239,"tunes":1021},{"text":265},{},{"id":268,"data":1023,"type":239,"tunes":1024},{"text":270},{},{"id":273,"data":1026,"type":281,"tunes":1029},{"meta":1027,"items":1028,"style":280},{},[277,278,279],{},{"id":284,"data":1031,"type":289,"tunes":1032},{"text":286,"caption":287,"alignment":288},{},{"id":292,"data":1034,"type":42,"tunes":1035},{"text":294,"level":260},{},{"id":297,"data":1037,"type":239,"tunes":1038},{"text":299},{},{"id":302,"data":1040,"type":325,"tunes":1046},{"content":1041,"stretched":43,"withHeadings":14},[1042,1043,1044,1045],[306,307,308,309],[311,312,313,314],[316,317,318,319],[321,322,323,324],{},{"id":328,"data":1048,"type":239,"tunes":1049},{"text":330},{},{"id":333,"data":1051,"type":42,"tunes":1052},{"text":335,"level":260},{},{"id":338,"data":1054,"type":239,"tunes":1055},{"text":340},{},{"id":343,"data":1057,"type":239,"tunes":1058},{"text":345},{},{"id":348,"data":1060,"type":281,"tunes":1063},{"meta":1061,"items":1062,"style":362},{"counterType":351},[353,354,355,356,357,358,359,360,361],{},{"id":365,"data":1065,"type":239,"tunes":1066},{"text":367},{},{"id":370,"data":1068,"type":42,"tunes":1069},{"text":372,"level":260},{},{"id":375,"data":1071,"type":239,"tunes":1072},{"text":377},{},{"id":380,"data":1074,"type":383,"tunes":1075},{"code":382},{},{"id":386,"data":1077,"type":239,"tunes":1078},{"text":388},{},{"id":391,"data":1080,"type":281,"tunes":1083},{"meta":1081,"items":1082,"style":280},{},[395,396,397,398,399,400,401,402],{},{"id":405,"data":1085,"type":42,"tunes":1086},{"text":407,"level":260},{},{"id":410,"data":1088,"type":239,"tunes":1089},{"text":412},{},{"id":415,"data":1091,"type":281,"tunes":1094},{"meta":1092,"items":1093,"style":280},{},[419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435],{},{"id":438,"data":1096,"type":239,"tunes":1097},{"text":440},{},{"id":443,"data":1099,"type":42,"tunes":1100},{"text":445,"level":260},{},{"id":448,"data":1102,"type":239,"tunes":1103},{"text":450},{},{"id":453,"data":1105,"type":239,"tunes":1106},{"text":455},{},{"id":458,"data":1108,"type":383,"tunes":1109},{"code":460},{},{"id":463,"data":1111,"type":239,"tunes":1112},{"text":465},{},{"id":468,"data":1114,"type":42,"tunes":1115},{"text":470,"level":260},{},{"id":473,"data":1117,"type":239,"tunes":1118},{"text":475},{},{"id":478,"data":1120,"type":239,"tunes":1121},{"text":480},{},{"id":483,"data":1123,"type":325,"tunes":1129},{"content":1124,"stretched":43,"withHeadings":14},[1125,1126,1127,1128],[487,488,489,490],[492,493,494,495],[497,498,499,500],[502,503,504,505],{},{"id":508,"data":1131,"type":239,"tunes":1132},{"text":510},{},{"id":513,"data":1134,"type":42,"tunes":1135},{"text":515,"level":260},{},{"id":518,"data":1137,"type":239,"tunes":1138},{"text":520},{},{"id":523,"data":1140,"type":239,"tunes":1141},{"text":525},{},{"id":528,"data":1143,"type":281,"tunes":1146},{"meta":1144,"items":1145,"style":280},{},[532,533,534,535,536,537],{},{"id":540,"data":1148,"type":239,"tunes":1149},{"text":542},{},{"id":545,"data":1151,"type":42,"tunes":1152},{"text":547,"level":260},{},{"id":550,"data":1154,"type":239,"tunes":1155},{"text":552},{},{"id":555,"data":1157,"type":239,"tunes":1158},{"text":557},{},{"id":560,"data":1160,"type":281,"tunes":1163},{"meta":1161,"items":1162,"style":280},{},[564,565,566,567,568],{},{"id":571,"data":1165,"type":239,"tunes":1166},{"text":573},{},{"id":576,"data":1168,"type":42,"tunes":1169},{"text":578,"level":260},{},{"id":581,"data":1171,"type":239,"tunes":1172},{"text":583},{},{"id":586,"data":1174,"type":239,"tunes":1175},{"text":588},{},{"id":591,"data":1177,"type":239,"tunes":1178},{"text":593},{},{"id":596,"data":1180,"type":42,"tunes":1181},{"text":598,"level":260},{},{"id":601,"data":1183,"type":239,"tunes":1184},{"text":603},{},{"id":606,"data":1186,"type":239,"tunes":1187},{"text":608},{},{"id":611,"data":1189,"type":239,"tunes":1190},{"text":613},{},{"id":616,"data":1192,"type":239,"tunes":1193},{"text":618},{},{"id":621,"data":1195,"type":239,"tunes":1196},{"text":623},{},"Post erfolgreich abgerufen",{"items":1199,"source":1283,"manualIds":1284,"manualMatchedIds":1285},[1200,1207,1214,1221,1228,1235,1242,1249,1255,1262,1269,1276],{"id":1201,"slug":1202,"title":1203,"excerpt":1204,"featuredImage":1205,"publishedAt":1206},"477","computer-use-agents-why-a-successful-demo-can-still-be-an-unreliable-system","Agentes de uso de computadoras: por qué una demostración exitosa aún puede ser un sistema poco confiable","Los agentes de uso de computadoras ahora pueden completar impresionantes flujos de trabajo en el navegador y en el escritorio, pero una ejecución exitosa demuestra capacidad—no fiabilidad. Este artículo muestra cómo probar la repetibilidad, la robustez ambiental, el control de horizonte largo, la conciencia del estado, la verificación de resultados y la gestión segura de objetivos.","\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":1208,"slug":1209,"title":1210,"excerpt":1211,"featuredImage":1212,"publishedAt":1213},"475","managed-agent-harness-vs-self-hosted-agent-loop-what-you-gain-what-you-lose","Harness de agente gestionado vs. bucle de agente autohospedado: lo que ganas, lo que pierdes","“Agente autoalojado” puede significar arquitecturas muy diferentes. Esta guía separa el arnés gestionado, el entorno de ejecución autoalojado y el bucle de agente totalmente autooperado—y muestra qué límite de control necesitan realmente los equipos.","\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":1215,"slug":1216,"title":1217,"excerpt":1218,"featuredImage":1219,"publishedAt":1220},"364","tipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung","Dominando el flujo de trabajo SEO: Estrategias de optimización esenciales para el crecimiento orgánico","Un flujo de trabajo SEO estructurado es crucial para un crecimiento orgánico sostenible. Aprende las diez estrategias fundamentales, desde la investigación de palabras clave y la optimización técnica hasta la calidad del contenido y el análisis de rendimiento.","\u002Fuploads\u002F2026\u002F03\u002Ftipps-fuer-die-verbesserung-der-seo-suchmaschinenoptimierung-1774866098131-hwkzrg.webp","2024-01-26T06:35:00.000Z",{"id":1222,"slug":1223,"title":1224,"excerpt":1225,"featuredImage":1226,"publishedAt":1227},"384","new-qwen-3-5-plus","Nuevo Qwen 3.5-Plus: La IA de código abierto se ha puesto seria","Descubre las características y beneficios innovadores de Qwen 3.5-Plus de Alibaba, una IA de código abierto que cambia las reglas del juego para desarrolladores.","\u002Fuploads\u002F2026\u002F02\u002Fnew-qwen-3-5-plus-1771515512741-dcbi9p.webp","2026-02-19T10:23:00.000Z",{"id":1229,"slug":1230,"title":1231,"excerpt":1232,"featuredImage":1233,"publishedAt":1234},"479","where-does-an-llm-get-its-data-rag-data-sources-in-python","¿De dónde obtiene sus datos un LLM? Fuentes de datos RAG en Python","Un LLM no conoce mágicamente tus archivos, bases de datos o APIs. Esta continuación práctica de la serie RAG muestra, con Python sencillo, cómo los datos externos se convierten en evidencia recuperable: desde archivos de texto y SQL hasta búsqueda de texto completo, embeddings, ensamblaje de contexto y la llamada final al 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":1236,"slug":1237,"title":1238,"excerpt":1239,"featuredImage":1240,"publishedAt":1241},"460","ai-agent-reliability-why-the-final-answer-is-not-enough","Fiabilidad de los Agentes de IA: Por Qué la Respuesta Final No es Suficiente","Una salida correcta no demuestra un razonamiento correcto, una ejecución segura ni un sistema confiable.","\u002Fuploads\u002F2026\u002F09\u002Fai-agent-reliability-why-the-final-answer-is-not-enough-1788955466306-pl0qhz.webp","2026-09-09T04:01:00.000Z",{"id":1243,"slug":1244,"title":1245,"excerpt":1246,"featuredImage":1247,"publishedAt":1248},"468","ai-agent-memory-is-not-rag-how-to-separate-memory-retrieval-state-and-context","La memoria del agente de IA no es RAG: cómo separar memoria, recuperación, estado y contexto","La memoria del agente, RAG, el estado y el contexto a menudo se usan como si fueran intercambiables. No lo son. Este modelo práctico de arquitectura separa las cuatro capas, muestra dónde pertenece cada una y explica qué se rompe cuando los sistemas las colapsan en una sola.","\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":1250,"slug":1251,"title":1252,"excerpt":1253,"featuredImage":1226,"publishedAt":1254},"445","qwen-3-6-in-production-release-runbook-ai-rollback-and-llmops-versioning","Qwen 3.6 en producción: Runbook de lanzamiento, rollback de IA y versionado de LLMOps","Qwen 3.6 no es solo otra actualización de modelo. Es un evento de lanzamiento, un escenario de reversión y un problema de versionado al mismo tiempo. Este artículo explica cómo debe manejarse Qwen 3.6 en producción a través de la disciplina de LLMOps, la trazabilidad de prompts y modelos, el despliegue controlado y la preparación para la reversión basada en evidencia.","2026-05-04T02:49:00.000Z",{"id":1256,"slug":1257,"title":1258,"excerpt":1259,"featuredImage":1260,"publishedAt":1261},"361","model-view-controller-mvc","Model-View-Controller (MVC): La columna vertebral estructural de las aplicaciones web modernas","Modelo-Vista-Controlador, generalmente abreviado como MVC, sigue siendo uno de los patrones arquitectónicos más duraderos en el desarrollo de software. Ofrece a los equipos una forma práctica de separar la lógica de negocio, la presentación y la interacción del usuario para que las aplicaciones sigan siendo más fáciles de construir, ampliar, probar y mantener. Este artículo explica qué es MVC, por qué sigue siendo importante, dónde encaja en los stacks web actuales y cómo se conecta con la arquitectura de plataforma más amplia, la calidad de la entrega, la estrategia de migración y la madurez operativa.","\u002Fuploads\u002F2026\u002F03\u002Fmodel-view-controller-mvc-1774872805793-0bjubu.webp","2023-04-12T12:57:00.000Z",{"id":1263,"slug":1264,"title":1265,"excerpt":1266,"featuredImage":1267,"publishedAt":1268},"493","mlops-vs-llmops-what-changes-when-the-model-is-an-llm","MLOps vs LLMOps: qué cambia cuando el modelo es un LLM","MLOps opera sistemas de aprendizaje automático; LLMOps extiende esas prácticas a prompts, contexto, recuperación, proveedores, herramientas, evaluaciones y comportamiento en tiempo de ejecución en torno a modelos de lenguaje grandes.","\u002Fuploads\u002F2026\u002F10\u002Fmlops-vs-llmops-what-changes-when-the-model-is-an-llm-1791487319869-2v7hxo.webp","2026-10-08T15:20:00.000Z",{"id":1270,"slug":1271,"title":1272,"excerpt":1273,"featuredImage":1274,"publishedAt":1275},"469","rag-failed-but-which-layer-actually-failed-a-diagnostic-method","RAG falló — ¿Pero qué capa falló realmente? Un método de diagnóstico","Cuando una respuesta RAG es incorrecta, culpar a la recuperación o al modelo es demasiado vago. Este método de diagnóstico aísla la cobertura de fuentes, la construcción de consultas, la recuperación, el ranking, el ensamblaje del contexto, la generación, la atribución de evidencia y la actualidad, de modo que el fallo real puede reproducirse y corregirse.","\u002Fuploads\u002F2026\u002F09\u002Frag-failed-but-which-layer-actually-failed-a-diagnostic-method-1790350847177-pior4c.webp","2026-09-24T19:39:00.000Z",{"id":1277,"slug":1278,"title":1279,"excerpt":1280,"featuredImage":1281,"publishedAt":1282},"381","enterprise-grade-multi-tenant-architecture-for-an-international-platform","Arquitectura Multi-Inquilino de Grado Empresarial para una Plataforma Internacional","Loving Rocks es una plataforma de bodas de nivel empresarial diseñada con una verdadera arquitectura multiinquilino, bases de datos aisladas por inquilino e internacionalización integrada para escalabilidad global, seguridad y estabilidad operativa a largo plazo.","\u002Fuploads\u002F2026\u002F01\u002Fenterprise-grade-multi-tenant-architecture-for-an-international-platform-1769789121298-b6v7ak.webp","2026-01-30T12:04:00.000Z","fallback",[],[]]