If you tried “adding AI” to an app in 2023, it probably looked like this:
In 2025/2026, the pattern is different. The value is moving from “a smart model” to a well-designed system around the model: data freshness, safe tool use, cost control, and reliable workflows.
This post is a simple, practical blueprint you can reuse.
The big change is agency. A system can plan, use tools, and correct itself—like a junior operator with guardrails.
flowchart LRclassDef old fill:#0b1220,stroke:#22314a,color:#e8eefc;classDef new fill:#071a12,stroke:#1f6f4a,color:#eafff5;classDef neutral fill:#0a0f1a,stroke:#2a3955,color:#e8eefc;subgraph Past["2023–2024: LLM as a feature"]UI1["Chat UI"]:::old --> LLM1["LLM\n(one-shot)"]:::old --> OUT1["Answer"]:::oldendsubgraph Now["2025–2026: LLM as a worker (agentic)"]GOAL["Goal"]:::new --> PLAN["Plan"]:::new --> ACT["Act (tools)"]:::new --> CHECK["Check + fix"]:::new --> DONE["Done"]:::newCHECK -->|if wrong| PLANendPast --> Now
The research paper-style list is long. In practice, most teams succeed when they get these six blocks right.
stateDiagram-v2[*] --> IntakeIntake --> PlanPlan --> RetrieveRetrieve --> ActAct --> VerifyVerify --> DoneVerify --> Plan: fix / try againVerify --> Escalate: risk / unclearEscalate --> Done
Takeaway: Don’t ship “one-shot answers” for important tasks. Ship loops.
Vector search is great for “find the paragraph”. It struggles with “connect the dots across a whole corpus”. GraphRAG-style approaches add a structure layer.
flowchart TBclassDef store fill:#0b1220,stroke:#334155,color:#e5e7eb;classDef step fill:#111827,stroke:#6366f1,color:#eef2ff;classDef output fill:#052e1a,stroke:#22c55e,color:#dcfce7;subgraph Build["Build time (offline)"]T["Docs + data"]:::store --> E["Entity + relation extraction"]:::stepE --> G["Knowledge graph"]:::storeG --> C["Communities\n(Louvain/Leiden)"]:::stepC --> S["Community summaries"]:::storeendsubgraph Query["Query time (online)"]Q["User question"]:::step --> R1["Vector search\n(local facts)"]:::stepQ --> R2["Graph search\n(global view)"]:::stepR2 --> SR1 --> A["Answer grounded\nin retrieved context"]:::outputS --> Aend
Takeaway: Use hybrid retrieval: vectors for precision, graphs for structure.
Agents do better when they query business concepts (“Customer”, “Churn risk”) instead of raw schemas.
Takeaway: Build a semantic model once. Reuse it across BI + agents.
Instead of “a catalog you browse”, you want “a fabric that reacts”: quality checks, policy enforcement, and “pause the agent” triggers.
flowchart LRclassDef sys fill:#0b1220,stroke:#334155,color:#e5e7eb;classDef guard fill:#2d1b0b,stroke:#f59e0b,color:#fffbeb;classDef good fill:#052e1a,stroke:#22c55e,color:#dcfce7;subgraph Producers["Producers"]P1["Apps"]:::sysP2["Pipelines"]:::sysP3["Streams"]:::sysendsubgraph Fabric["Active Data Fabric"]META["Active metadata\n(lineage, quality, usage)"]:::sysPOLICY["Policy engine\n(PII, RBAC, masks)"]:::guardDQ["Data quality\nchecks"]:::guardendsubgraph Consumers["Consumers"]BI["BI / dashboards"]:::goodAG["Agents"]:::goodAPI["APIs"]:::goodendProducers --> METAMETA --> POLICY --> ConsumersMETA --> DQ --> Consumers
Takeaway: “Good data” is not a dashboard. It’s enforcement + automation.
If data value decays fast, don’t poll. Trigger.
Takeaway: Put your “rules” near the stream, and keep actions pre-approved.
In production, inference cost becomes your biggest constraint.
flowchart TBclassDef cheap fill:#052e1a,stroke:#22c55e,color:#dcfce7;classDef pricey fill:#3b0a0a,stroke:#ef4444,color:#fee2e2;classDef infra fill:#0b1220,stroke:#334155,color:#e5e7eb;U["User request"]:::infra --> R["Router\n(classifier / SLM)"]:::infraR -->|repeat / similar| Cache["Semantic cache"]:::cheapR -->|simple| SLM["Small model"]:::cheapR -->|hard / high-risk| FM["Frontier model"]:::priceyCache --> A["Answer"]:::infraSLM --> AFM --> A
Takeaway: Routing and caching are not optimizations. They are survival.
Goal: reduce alert fatigue and time-to-fix, without giving the agent “god mode”.
sequenceDiagramautonumberparticipant Alert as Alert (Webhook)participant Planner as Planner Agentparticipant Logs as Monitor Specialist (KQL)participant K8s as AKS Specialist (kubectl)participant Audit as Audit LogAlert->>Planner: Incident payloadPlanner->>Logs: Query telemetry (KQL)Logs-->>Planner: Findings (errors, trends)Planner->>K8s: Inspect + remediate (restart/scale)K8s-->>Planner: Action resultPlanner->>Audit: Store plan, actions, outcomePlanner-->>Alert: Resolution summary / next steps
Copy this: separate roles + workload identity + full audit trail.
Goal: detect fast market moves and trigger immediate actions (alerts, workflows).
flowchart LRclassDef stream fill:#0b1220,stroke:#38bdf8,color:#e0f2fe;classDef action fill:#052e1a,stroke:#22c55e,color:#dcfce7;classDef store fill:#111827,stroke:#a78bfa,color:#f5f3ff;Feed["Market/Events feed"]:::stream --> EH["Eventhouse (KQL DB)"]:::streamEH --> Rule["Activator rules\n(drop > 5% in 1 min)"]:::actionRule --> Flow["Power Automate / Webhook"]:::actionFlow --> Teams["Notify team"]:::actionFlow --> Script["Run pre-approved action"]:::actionEH --> Lake["Lakehouse history"]:::store --> Model["Forecast model\n(MLflow)"]:::storeEH --> BI["Power BI (Direct Lake)"]:::storeModel --> BI
Copy this: streaming + “reflex rules” + pre-approved actions + history for learning.
Goal: unify many sources without endless ETL copies, and keep AI answers fresh.
flowchart TBclassDef src fill:#0b1220,stroke:#334155,color:#e5e7eb;classDef lake fill:#111827,stroke:#06b6d4,color:#ecfeff;classDef sem fill:#052e1a,stroke:#22c55e,color:#dcfce7;S1["Azure SQL"]:::srcS2["Databricks"]:::srcS3["S3 / ADLS"]:::srcOL["OneLake\n(Delta Parquet)"]:::lakeS1 -->|shortcut| OLS2 -->|shortcut| OLS3 -->|shortcut| OLSM["Semantic model\n(business concepts)"]:::semOL --> SMBI["BI + dashboards\n(Direct Lake)"]:::semAG["AI app / agent"]:::semSM --> BISM --> AG
Copy this: storage standard + shortcuts + semantic model + reuse for BI and agents.
If you’re building this for yourself or a small team, here’s a realistic path.
https://eu.36kr.com/en/p/3584919280925577https://github.com/microsoft/fabricrealtimelabhttps://arxiv.org/html/2404.11584v1https://arxiv.org/abs/2501.09136https://medium.com/@community_md101/top-data-and-ai-trends-to-watch-out-for-in-2026-a24f4a8a7cf1https://arxiv.org/html/2501.09136v3https://github.com/MicrosoftDocs/semantic-kernel-docs/blob/main/agent-framework/overview/agent-framework-overview.mdhttps://arxiv.org/html/2404.16130v2https://www.microsoft.com/en-us/research/blog/lazygraphrag-setting-a-new-standard-for-quality-and-cost/https://go.stratio.com/data-fabrichttps://www.hpcwire.com/bigdatawire/2024/08/15/active-metadata-the-new-unsung-hero-of-successful-generative-ai-projects/https://www.alation.com/blog/metadata-ai-2026-trust-compliance-scale/https://www.dataversity.net/articles/open-data-fabric-rethinking-data-architecture-for-ai-at-scale/https://www.dataversity.net/articles/data-architecture-trends-in-2025/https://learn.microsoft.com/en-us/fabric/fundamentals/direct-lake-overviewhttps://diggibyte.com/power-bi-in-a-lakehouse/https://powerbi.microsoft.com/en-us/blog/deep-dive-into-direct-lake-on-onelake-and-creating-direct-lake-semantic-models-in-power-bi-desktop/https://www.youtube.com/watch?v=m0U3JBRatL0https://arxiv.org/html/2511.22138v1https://arxiv.org/abs/2503.01933https://arxiv.org/html/2505.16508v1https://arxiv.org/html/2503.01933v1https://arxiv.org/pdf/2506.02153https://arxiv.org/html/2402.13064v1https://arxiv.org/html/2407.21077v1https://www.weforum.org/stories/2025/10/ai-synthetic-data-strong-governance/https://www.cloudera.com/blog/business/empowering-enterprise-ai-with-structured-synthetic-data-preserving-privacy-and-source-statistical-properties.htmlhttps://learn.microsoft.com/en-us/fabric/real-time-intelligence/data-activator/activator-tutorialhttps://learn.microsoft.com/en-us/fabric/real-time-intelligence/data-activator/activator-introductionhttps://learn.microsoft.com/en-us/fabric/real-time-intelligence/data-activator/activator-rules-overviewhttps://learn.microsoft.com/en-us/fabric/fundamentals/end-to-end-tutorialshttps://www.finops.org/insights/aws-reinvent-2025-finops-updates/https://www.finops.org/wg/optimizing-genai-usage/https://www.finops.org/wg/effect-of-optimization-on-ai-forecasting/https://www.cloudkeeper.com/insights/blog/finops-generative-ai-cost-optimization-balancing-scale-speed-and-spendhttps://arxiv.org/html/2511.04696v1https://arxiv.org/html/2506.13023v1https://arxiv.org/html/2504.14891v1https://github.com/Azure-Samples/agentic-aiops-semantic-kernelLegal Stuff
