[{"data":1,"prerenderedAt":1111},["ShallowReactive",2],{"blog-posts-en":3,"i-mdi:book-search-outline":1092,"i-mdi:scale-balance":1096,"i-mdi:shield-lock-outline":1098,"i-mdi:robot-outline":1100,"i-mdi:linkedin":1102,"i-mdi:twitter":1104,"i-mdi:github":1106,"i-circle-flags:lang-en":1108},[4,254,463,645,742,836,907,994],{"id":5,"title":6,"author":7,"body":8,"date":239,"description":240,"draft":241,"extension":242,"image":243,"meta":244,"navigation":245,"path":246,"seo":247,"stem":248,"tags":249,"__hash__":253},"blog_en\u002Fblog\u002Fowning-your-ai-models.md","Should you own your AI models? A sober tradeoff map","Minerva Data Solutions",{"type":9,"value":10,"toc":229},"minimark",[11,20,23,28,34,45,51,57,63,67,73,79,85,91,101,105,133,140,144,147,207,211,222],[12,13,14,15,19],"p",{},"“Own your models” sounds like sovereignty. Sometimes it is. Sometimes it is ",[16,17,18],"strong",{},"expensive sovereignty theater"," — a GPU bill with the same governance gaps as a SaaS API, plus more on-call pain.",[12,21,22],{},"Here is a practical map for document-heavy, regulated teams.",[24,25,27],"h3",{"id":26},"when-owning-models-is-genuinely-good","When owning models is genuinely good",[12,29,30,33],{},[16,31,32],{},"Data path control."," Inference stays inside your VPC or sovereign region. No vendor training ambiguity — if you configure it that way and verify it in contract and telemetry.",[12,35,36,39,40,44],{},[16,37,38],{},"Predictable unit economics at scale."," High-volume embedding and batch inference can be cheaper on owned GPUs — ",[41,42,43],"em",{},"if"," utilization stays high and you have staff to operate them.",[12,46,47,50],{},[16,48,49],{},"Customization depth."," Fine-tuning, domain adapters, and quantized on-prem deployments matter when generic models consistently miss domain terminology or layout-heavy documents.",[12,52,53,56],{},[16,54,55],{},"Air-gapped or constrained environments."," Defense, critical infrastructure, and some financial networks simply cannot call public APIs. Ownership is not a preference; it is a constraint.",[12,58,59,62],{},[16,60,61],{},"Latency and residency tuning."," You colocate inference with storage and vector indexes — helpful when milliseconds and jurisdiction matter together.",[24,64,66],{"id":65},"when-owning-models-is-genuinely-bad","When owning models is genuinely bad",[12,68,69,72],{},[16,70,71],{},"You inherit the MLOps tax."," GPUs, drivers, CUDA drift, model cards, rollback, capacity planning, security patching — that is a platform team, not a side project.",[12,74,75,78],{},[16,76,77],{},"Utilization cliffs."," A cluster that is perfect at 9 a.m. Monday is idle Sunday. Managed APIs externalize that volatility.",[12,80,81,84],{},[16,82,83],{},"Model freshness."," Foundation models move quarterly. Self-hosters must run an upgrade program or accept capability lag.",[12,86,87,90],{},[16,88,89],{},"Hidden data risks remain."," Owning the model does not automatically mean owning the risk. Poor RAG design, logging, or agent tooling can leak just as much through your own stack.",[12,92,93,96,97,100],{},[16,94,95],{},"Compliance is not automatic."," SOC2 on your side plus ISO on your side plus audit of ",[41,98,99],{},"your"," inference logs. Ownership shifts liability onto you — which may be correct, but it is not free.",[24,102,104],{"id":103},"the-hybrid-pattern-most-mid-market-teams-should-consider","The hybrid pattern most mid-market teams should consider",[106,107,108,115,121,127],"ol",{},[109,110,111,114],"li",{},[16,112,113],{},"Sensitive retrieval and evidence"," in your environment",[109,116,117,120],{},[16,118,119],{},"Managed models for burst inference"," with strict no-training contracts",[109,122,123,126],{},[16,124,125],{},"Evaluation and logging"," that is vendor-agnostic",[109,128,129,132],{},[16,130,131],{},"A single abstraction layer"," so you can swap local ↔ API without rewriting workflows",[12,134,135,136,139],{},"That is ownership of the ",[16,137,138],{},"system"," — not necessarily of every weight matrix.",[24,141,143],{"id":142},"decision-checklist","Decision checklist",[12,145,146],{},"Answer honestly before buying GPUs:",[148,149,150,163],"table",{},[151,152,153],"thead",{},[154,155,156,160],"tr",{},[157,158,159],"th",{},"Question",[157,161,162],{},"If “no,” pause",[164,165,166,175,183,191,199],"tbody",{},[154,167,168,172],{},[169,170,171],"td",{},"Do we have 24\u002F7 coverage for inference outages?",[169,173,174],{},"Self-hosting will hurt",[154,176,177,180],{},[169,178,179],{},"Is our volume stable enough to keep GPUs busy?",[169,181,182],{},"TCO likely loses",[154,184,185,188],{},[169,186,187],{},"Can we run a model upgrade program quarterly?",[169,189,190],{},"You will fall behind",[154,192,193,196],{},[169,194,195],{},"Do we need air-gap or residency guarantees APIs cannot meet?",[169,197,198],{},"Ownership may be required",[154,200,201,204],{},[169,202,203],{},"Is our bottleneck retrieval quality, not model size?",[169,205,206],{},"Fix RAG before hardware",[24,208,210],{"id":209},"bottom-line","Bottom line",[12,212,213,214,217,218,221],{},"Owning models is good when ",[16,215,216],{},"control requirements are hard"," and ",[16,219,220],{},"operational maturity is real",". It is bad when the goal is vibes-based privacy or avoiding API line items without counting engineering years.",[12,223,224,225,228],{},"The winning move for most regulated document teams is to ",[16,226,227],{},"own evidence, policies, and evaluation"," — and treat model hosting as a deliberate, swappable layer.",{"title":230,"searchDepth":231,"depth":231,"links":232},"",2,[233,235,236,237,238],{"id":26,"depth":234,"text":27},3,{"id":65,"depth":234,"text":66},{"id":103,"depth":234,"text":104},{"id":142,"depth":234,"text":143},{"id":209,"depth":234,"text":210},"2026-06-14","The real upsides and hidden costs of self-hosting models versus managed APIs — for teams that cannot afford surprise data paths or surprise bills.",false,"md","\u002Fimg\u002Fog-image.png",{},true,"\u002Fblog\u002Fowning-your-ai-models",{"title":6,"description":240},"blog\u002Fowning-your-ai-models",[250,251,252],"model ownership","infrastructure","privacy","u-KDyNiEisvhhf_qBgGa5LNGTy4vbJDZjIPasCVj1SU",{"id":255,"title":256,"author":7,"body":257,"date":452,"description":453,"draft":241,"extension":242,"image":243,"meta":454,"navigation":245,"path":455,"seo":456,"stem":457,"tags":458,"__hash__":462},"blog_en\u002Fblog\u002Fai-assistant-document-summarization.md","Summaries are decisions — treat them like evidence",{"type":9,"value":258,"toc":442},[259,266,270,273,285,288,292,299,302,306,309,347,350,354,357,368,371,375,378,389,392,396,403,407,410,430,433,435],[12,260,261,262,265],{},"Summarization is the most underestimated risk in document AI. It feels low-stakes compared to generation. In practice, ",[16,263,264],{},"people make decisions from summaries"," — escalation paths, audit responses, onboarding briefings, and executive sign-off. A wrong summary is a wrong decision with better typography.",[24,267,269],{"id":268},"_1-compression-hides-uncertainty","1. Compression hides uncertainty",[12,271,272],{},"Models compress ambiguity into crisp bullets. That is the product feature and the liability. Require summaries to surface:",[274,275,276,279,282],"ul",{},[109,277,278],{},"what is explicitly stated in sources",[109,280,281],{},"what is inferred",[109,283,284],{},"what is missing from the retrieved set",[12,286,287],{},"If the system cannot say “insufficient evidence,” it will say something anyway.",[24,289,291],{"id":290},"_2-multi-document-summaries-need-explicit-boundaries","2. Multi-document summaries need explicit boundaries",[12,293,294,295,298],{},"Cross-document summaries are powerful for audits and diligence. They are also where ",[16,296,297],{},"context bleeding"," happens — clauses from one agreement attributed to another, or policies from an old entity mixed with the current one.",[12,300,301],{},"Enforce collection boundaries per workspace, matter, or deal room. Never summarize across tenant or matter lines because the UI made it convenient.",[24,303,305],{"id":304},"_3-length-is-a-policy-choice-not-a-model-default","3. Length is a policy choice, not a model default",[12,307,308],{},"“Executive summary” and “operator summary” are different products:",[148,310,311,321],{},[151,312,313],{},[154,314,315,318],{},[157,316,317],{},"Audience",[157,319,320],{},"Needs",[164,322,323,331,339],{},[154,324,325,328],{},[169,326,327],{},"Executive",[169,329,330],{},"decision, risk, date, owner",[154,332,333,336],{},[169,334,335],{},"Operator",[169,337,338],{},"steps, exceptions, systems, contacts",[154,340,341,344],{},[169,342,343],{},"Auditor",[169,345,346],{},"control mapping, evidence pointers",[12,348,349],{},"One slider for “summary length” is how teams get the right word count and the wrong content.",[24,351,353],{"id":352},"_4-citations-must-survive-summarization","4. Citations must survive summarization",[12,355,356],{},"A summary without pointers is a memo without provenance. At minimum, each material bullet should link to:",[274,358,359,362,365],{},[109,360,361],{},"document ID",[109,363,364],{},"section or page",[109,366,367],{},"snippet hash or offset",[12,369,370],{},"Faithfulness checks should run on summaries too — not only on Q&A answers.",[24,372,374],{"id":373},"_5-staleness-is-a-summarization-bug","5. Staleness is a summarization bug",[12,376,377],{},"Summaries age badly when the underlying corpus changes. Tie summary objects to:",[274,379,380,383,386],{},[109,381,382],{},"source document versions used",[109,384,385],{},"generation timestamp",[109,387,388],{},"expiry or refresh policy",[12,390,391],{},"A summary of last quarter’s policy is an incident waiting for next quarter’s audit.",[24,393,395],{"id":394},"_6-pii-and-privilege-boundaries","6. PII and privilege boundaries",[12,397,398,399,402],{},"Summarization across HR, legal, and customer folders can leak fields that retrieval policies were supposed to block. Apply redaction ",[16,400,401],{},"before"," summarization, not after. Log access by role.",[24,404,406],{"id":405},"_7-evaluation-metrics-that-actually-help","7. Evaluation metrics that actually help",[12,408,409],{},"Useful offline checks:",[274,411,412,418,424],{},[109,413,414,417],{},[16,415,416],{},"coverage"," — are all required topics from the source reflected or explicitly marked absent?",[109,419,420,423],{},[16,421,422],{},"faithfulness"," — does each bullet entail its cited snippet?",[109,425,426,429],{},[16,427,428],{},"stability"," — does re-running on the same version produce materially the same decisions?",[12,431,432],{},"Academic perfection is not the goal. Stable drift detection is.",[24,434,210],{"id":209},[12,436,437,438,441],{},"Treat summarization as ",[16,439,440],{},"decision support with provenance",", not as a reading shortcut. The teams that win attach summaries to evidence, versions, and reviewers — not to model confidence.",{"title":230,"searchDepth":231,"depth":231,"links":443},[444,445,446,447,448,449,450,451],{"id":268,"depth":234,"text":269},{"id":290,"depth":234,"text":291},{"id":304,"depth":234,"text":305},{"id":352,"depth":234,"text":353},{"id":373,"depth":234,"text":374},{"id":394,"depth":234,"text":395},{"id":405,"depth":234,"text":406},{"id":209,"depth":234,"text":210},"2026-06-12","Why AI document summarization fails in regulated teams, and the checklist that keeps summaries traceable, current, and safe to act on.",{},"\u002Fblog\u002Fai-assistant-document-summarization",{"title":256,"description":453},"blog\u002Fai-assistant-document-summarization",[459,460,461],"summarization","AI assistants","compliance","p9sC1jXezb1XMcAeygwEa8JEhBr2XDuwZy8KJV4eGzQ",{"id":464,"title":465,"author":7,"body":466,"date":635,"description":636,"draft":241,"extension":242,"image":243,"meta":637,"navigation":245,"path":638,"seo":639,"stem":640,"tags":641,"__hash__":644},"blog_en\u002Fblog\u002Fai-assistant-document-generation.md","AI document generation is not a template problem",{"type":9,"value":467,"toc":625},[468,475,479,486,497,500,504,515,530,534,537,548,551,555,558,584,588,591,599,602,613,616,618],[12,469,470,471,474],{},"Teams love document generation because it feels like instant leverage: a blank page becomes a policy draft, a contract clause, or an SOP in seconds. The failure mode is not bad grammar. It is ",[16,472,473],{},"ungrounded authority"," — text that reads official but is not tied to approved sources, current versions, or accountable owners.",[24,476,478],{"id":477},"_1-generation-without-retrieval-is-fiction-with-formatting","1. Generation without retrieval is fiction with formatting",[12,480,481,482,485],{},"If the assistant is not constrained to retrieved, approved evidence, it will invent structure that ",[41,483,484],{},"looks"," right. For regulated workflows, treat every generated paragraph as a claim that must map to:",[274,487,488,491,494],{},[109,489,490],{},"a source document or clause",[109,492,493],{},"an approved template version",[109,495,496],{},"an explicit human owner",[12,498,499],{},"Without that mapping, you are not generating documents. You are accelerating rework.",[24,501,503],{"id":502},"_2-templates-are-guardrails-not-the-product","2. Templates are guardrails, not the product",[12,505,506,507,510,511,514],{},"Good generation starts from ",[16,508,509],{},"controlled templates"," (clause libraries, policy skeletons, SOP patterns) plus ",[16,512,513],{},"live context"," (jurisdiction, entity, product line, risk tier). The model should fill slots — not redesign the document architecture on every run.",[12,516,517,518,521,522,525,526,529],{},"Practical rule: separate ",[41,519,520],{},"structure"," (template) from ",[41,523,524],{},"language"," (model) from ",[41,527,528],{},"facts"," (retrieval).",[24,531,533],{"id":532},"_3-versioning-beats-eloquence","3. Versioning beats eloquence",[12,535,536],{},"A beautifully written draft of the wrong policy version is worse than a rough draft of the right one. Before generation runs, resolve:",[274,538,539,542,545],{},[109,540,541],{},"which document family is authoritative",[109,543,544],{},"whether superseded versions are excluded from retrieval",[109,546,547],{},"who may publish the output",[12,549,550],{},"If your stack cannot answer “which version is this?”, do not ship generation to production.",[24,552,554],{"id":553},"_4-human-review-is-a-workflow-not-a-disclaimer","4. Human review is a workflow, not a disclaimer",[12,556,557],{},"“Human in the loop” fails when review is a single checkbox at the end. Effective review is staged:",[106,559,560,566,572,578],{},[109,561,562,565],{},[16,563,564],{},"Evidence check"," — do citations support each material statement?",[109,567,568,571],{},[16,569,570],{},"Scope check"," — does the draft match the requested document type and jurisdiction?",[109,573,574,577],{},[16,575,576],{},"Delta check"," — what changed versus the last approved version?",[109,579,580,583],{},[16,581,582],{},"Approval check"," — who signed, when, and under which policy?",[24,585,587],{"id":586},"_5-logging-and-retention-matter-for-audits","5. Logging and retention matter for audits",[12,589,590],{},"Regulators and internal audit will ask what model, what prompt, what sources, and what human approved the output. Log generation events with document IDs — never raw document bodies in application logs.",[24,592,594,595,598],{"id":593},"_6-when-not-to-use-generation","6. When ",[41,596,597],{},"not"," to use generation",[12,600,601],{},"Do not use generative drafting for:",[274,603,604,607,610],{},[109,605,606],{},"binding legal positions without counsel review",[109,608,609],{},"safety-critical procedures without subject-matter validation",[109,611,612],{},"anything where a wrong verb changes liability",[12,614,615],{},"Use generation for acceleration inside a governed envelope — not as a substitute for ownership.",[24,617,210],{"id":209},[12,619,620,621,624],{},"Document generation pays off when it is ",[16,622,623],{},"retrieval-backed, template-bound, version-aware, and review-gated",". Otherwise it is the fastest way to produce confident wrong documents.",{"title":230,"searchDepth":231,"depth":231,"links":626},[627,628,629,630,631,632,634],{"id":477,"depth":234,"text":478},{"id":502,"depth":234,"text":503},{"id":532,"depth":234,"text":533},{"id":553,"depth":234,"text":554},{"id":586,"depth":234,"text":587},{"id":593,"depth":234,"text":633},"6. When not to use generation",{"id":209,"depth":234,"text":210},"2026-06-10","What regulated teams get wrong when they ask an assistant to draft policies, contracts, and SOPs — and the controls that keep generated text defensible.",{},"\u002Fblog\u002Fai-assistant-document-generation",{"title":465,"description":636},"blog\u002Fai-assistant-document-generation",[642,460,643],"document generation","governance","lcdetLq76wx5M8wvhY-fMUvo7FO5AHEdeXfz6u5-2Pg",{"id":646,"title":647,"author":7,"body":648,"date":731,"description":732,"draft":241,"extension":242,"image":243,"meta":733,"navigation":245,"path":734,"seo":735,"stem":736,"tags":737,"__hash__":741},"blog_en\u002Fblog\u002Fenterprise-rag-audit-trail.md","Your AI answer needs proof. Here's how to build it.",{"type":9,"value":649,"toc":726},[650,653,656,660,663,683,686,690,693,696,700,703],[12,651,652],{},"Enterprise RAG is not just “chat with your documents”. In regulated teams, the real product is a defensible evidence chain: who asked, which documents were searched, which chunks were retrieved, which model answered, and which exact sources support the final claim.",[12,654,655],{},"That matters because a confident answer without provenance is operationally dangerous. It may save five minutes today and cost five weeks during an audit, legal review, vendor dispute, or board escalation.",[24,657,659],{"id":658},"what-an-audit-ready-rag-answer-needs","What an audit-ready RAG answer needs",[12,661,662],{},"A useful enterprise answer should carry a structured provenance record:",[274,664,665,668,671,674,677,680],{},[109,666,667],{},"Source document ID, title, owner, version, and retention status",[109,669,670],{},"Page, section, paragraph, or chunk identifier for each supporting claim",[109,672,673],{},"Retrieval method, ranking score, reranker score, and index snapshot",[109,675,676],{},"Prompt template version, model version, temperature, and tool calls",[109,678,679],{},"User, workspace, timestamp, access policy, and business context",[109,681,682],{},"Final answer plus the evidence IDs the answer claims to use",[12,684,685],{},"The key idea is replayability. If someone challenges the answer six months later, the team should be able to reconstruct what the system knew at the time, not what the corpus looks like now.",[24,687,689],{"id":688},"the-architecture-pattern","The architecture pattern",[12,691,692],{},"Start with a raw archive. Normalize text into a canonical representation. Chunk with stable rules. Store each chunk with metadata that survives every pipeline step. Build versioned indexes, not just versioned documents. Then log retrieval, reranking, generation, and citation validation as one trace.",[12,694,695],{},"This is where many RAG prototypes break. They keep the final answer and maybe a few citations, but not the retrieval alternatives, chunk scores, index version, prompt inputs, or access checks. That is enough for a demo. It is not enough for compliance.",[24,697,699],{"id":698},"what-to-measure","What to measure",[12,701,702],{},"Do not stop at “the answer looks good”. Track retrieval precision, citation validity, faithfulness, refusal quality, stale-document rate, and no-answer accuracy. In regulated workflows, saying “there is no reliable answer in the current corpus” is often better than inventing one.",[12,704,705,706,713,714,719,720,725],{},"Further reading: ",[707,708,712],"a",{"href":709,"rel":710},"https:\u002F\u002Ffuzzypoint.uk\u002Fenterprise-rag-designing-retrieval-augmented-generation-with",[711],"nofollow","Enterprise RAG with provenance and auditability",", ",[707,715,718],{"href":716,"rel":717},"https:\u002F\u002Flangfuse.com\u002Fguides\u002Fcookbook\u002Fevaluation_of_rag_with_ragas",[711],"Langfuse RAG evaluation with Ragas",", and ",[707,721,724],{"href":722,"rel":723},"https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fobservability\u002Fdata-model",[711],"Langfuse observability concepts",".",{"title":230,"searchDepth":231,"depth":231,"links":727},[728,729,730],{"id":658,"depth":234,"text":659},{"id":688,"depth":234,"text":689},{"id":698,"depth":234,"text":699},"2026-05-25","How to trace every answer back to the document it came from — so audits, legal review, and leadership can trust what the system said.",{},"\u002Fblog\u002Fenterprise-rag-audit-trail",{"title":647,"description":732},"blog\u002Fenterprise-rag-audit-trail",[738,739,740],"enterprise RAG","audit trail","document intelligence","nbKhwYBpPm5QUsHTyfgbdTtmQS566Dj4ptBN6vEBA-U",{"id":743,"title":744,"author":7,"body":745,"date":825,"description":826,"draft":241,"extension":242,"image":243,"meta":827,"navigation":245,"path":828,"seo":829,"stem":830,"tags":831,"__hash__":835},"blog_en\u002Fblog\u002Feu-ai-act-dora-evidence-packs.md","EU AI Act and DORA: what evidence packs actually look like",{"type":9,"value":746,"toc":820},[747,750,753,757,760,763,786,790,793,796,800,803],[12,748,749],{},"For European financial and regulated organizations, AI compliance is becoming a runtime evidence problem. Policies matter, but auditors increasingly need proof that the system behaved correctly: logs, approvals, incidents, model changes, vendor dependencies, and human overrides.",[12,751,752],{},"The mistake is building one evidence process for the EU AI Act and another for DORA. The better pattern is one telemetry layer with different regulatory views.",[24,754,756],{"id":755},"where-the-obligations-overlap","Where the obligations overlap",[12,758,759],{},"The EU AI Act pushes teams toward risk management, technical documentation, operation logs, transparency, human oversight, quality management, and post-market monitoring. DORA pushes financial entities toward ICT risk management, incident reporting, resilience testing, third-party registers, and operational continuity.",[12,761,762],{},"The documents differ, but the evidence often comes from the same events:",[274,764,765,768,771,774,777,780,783],{},[109,766,767],{},"Which AI system was used",[109,769,770],{},"Who triggered it",[109,772,773],{},"What business process it affected",[109,775,776],{},"Which data sources, tools, and vendors were involved",[109,778,779],{},"Which model and prompt versions ran",[109,781,782],{},"Whether a human reviewed, approved, rejected, or overrode the output",[109,784,785],{},"Whether an incident, drift signal, policy breach, or access violation occurred",[24,787,789],{"id":788},"the-evidence-pack-model","The evidence pack model",[12,791,792],{},"Think of an evidence pack as a regulator-ready bundle generated from live system telemetry. It should include an AI system registry entry, risk classification, data flow, model\u002Fprovider inventory, per-run logs, human oversight records, vendor dependencies, retention policy, and incident links.",[12,794,795],{},"For an AI Act view, expose technical documentation, operation logs, oversight evidence, and monitoring results. For a DORA view, expose ICT risk mapping, third-party concentration, incident forensics, resilience controls, and continuity impact.",[24,797,799],{"id":798},"what-to-avoid","What to avoid",[12,801,802],{},"Do not rely only on questionnaires or static policy docs. They are useful catalogs, but they do not prove runtime behavior. The evidence has to come from the AI system itself, from the moment it retrieves data, calls tools, generates output, and waits for human approval.",[12,804,705,805,713,810,719,815,725],{},[707,806,809],{"href":807,"rel":808},"https:\u002F\u002Fwww.knowlee.ai\u002Fblog\u002Fai-compliance-banking-dora-ai-act",[711],"AI compliance for banking where DORA meets the AI Act",[707,811,814],{"href":812,"rel":813},"https:\u002F\u002Fwww.knowlee.ai\u002Fblog\u002Fai-audit-trail-implementation-guide",[711],"EU AI Act audit trail implementation guide",[707,816,819],{"href":817,"rel":818},"https:\u002F\u002Fwww.sphereinc.com\u002Fblogs\u002Fai-system-registry-regulator-ready",[711],"AI system registry guidance",{"title":230,"searchDepth":231,"depth":231,"links":821},[822,823,824],{"id":755,"depth":234,"text":756},{"id":788,"depth":234,"text":789},{"id":798,"depth":234,"text":799},"2026-05-24","Practical evidence structures for AI governance and operational resilience — not checkbox compliance theatre.",{},"\u002Fblog\u002Feu-ai-act-dora-evidence-packs",{"title":744,"description":826},"blog\u002Feu-ai-act-dora-evidence-packs",[832,833,834],"EU AI Act","DORA","AI governance","lmCsdSdpQIckP-0XIX5hjfoZcD7pJ37-tl6WXlywG2g",{"id":837,"title":838,"author":7,"body":839,"date":896,"description":897,"draft":241,"extension":242,"image":243,"meta":898,"navigation":245,"path":899,"seo":900,"stem":901,"tags":902,"__hash__":906},"blog_en\u002Fblog\u002Fcitation-faithfulness-rag.md","A source link doesn't mean the answer is true",{"type":9,"value":840,"toc":891},[841,844,847,851,854,857,860,864,867,871,874],[12,842,843],{},"Source links make AI answers feel trustworthy. They do not automatically make them trustworthy. A RAG system can cite a real document and still misrepresent what it says, cite a document it did not rely on, or attach a source after generating an answer from model memory.",[12,845,846],{},"That is why teams building document intelligence need to separate citation presence from citation faithfulness.",[24,848,850],{"id":849},"three-citation-failures-to-watch","Three citation failures to watch",[12,852,853],{},"The first failure is fabricated citation IDs. The model invents a chunk reference that was never retrieved. This is easy to catch: force citations into a strict format and validate every cited ID against the retrieved evidence set before returning the answer.",[12,855,856],{},"The second failure is weak attribution. The cited chunk exists but does not support the claim. This needs faithfulness evaluation: compare answer claims against the retrieved context, not just against whether a citation exists.",[12,858,859],{},"The third failure is stale authority. The source once supported the claim but has been superseded by a newer policy, contract amendment, regulation, or procedure. This is why document versioning and index expiration matter.",[24,861,863],{"id":862},"runtime-controls-that-help","Runtime controls that help",[12,865,866],{},"At runtime, constrain the model to cite only retrieved evidence IDs. Refuse or retry if the answer cites unsupported IDs. Require every material claim to map to one or more chunks. Add an explicit “not enough evidence” path. Treat over-citation as a defect, because citing every document for every sentence makes citations meaningless.",[24,868,870],{"id":869},"evaluation-controls-that-help","Evaluation controls that help",[12,872,873],{},"Evaluate context precision, answer relevancy, citation validity, and faithfulness on production traces. Do batch scoring first if cost is a concern. The goal is not perfect academic scoring; it is a stable signal that tells you when retrieval, chunking, or model behavior has drifted.",[12,875,876,877,713,882,719,887,725],{},"Useful sources: ",[707,878,881],{"href":879,"rel":880},"https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3731120.3744592",[711],"Correctness is not Faithfulness in Retrieval Augmented Generation Attributions",[707,883,886],{"href":884,"rel":885},"https:\u002F\u002Fhelain-zimmermann.com\u002Fblog\u002Fenterprise-rag-with-citation-tracking-and-audit-trails",[711],"Enterprise RAG with citation tracking and audit trails",[707,888,890],{"href":716,"rel":889},[711],"RAG evaluation with Ragas",{"title":230,"searchDepth":231,"depth":231,"links":892},[893,894,895],{"id":849,"depth":234,"text":850},{"id":862,"depth":234,"text":863},{"id":869,"depth":234,"text":870},"2026-05-23","Why cited documents still produce wrong answers — and the runtime checks that stop teams from trusting a link they cannot defend.",{},"\u002Fblog\u002Fcitation-faithfulness-rag",{"title":838,"description":897},"blog\u002Fcitation-faithfulness-rag",[903,904,905],"RAG evaluation","citations","hallucinations","s7YVENHeHCeuOBmf-B5ONSEDg56c_LiQDqZtQ4V47hI",{"id":908,"title":909,"author":7,"body":910,"date":983,"description":984,"draft":241,"extension":242,"image":243,"meta":985,"navigation":245,"path":986,"seo":987,"stem":988,"tags":989,"__hash__":993},"blog_en\u002Fblog\u002Fdocument-ingestion-checklist.md","Document ingestion checklist before you ship RAG",{"type":9,"value":911,"toc":976},[912,915,918,922,925,928,932,935,938,942,945,948,952,955,958,962,965],[12,913,914],{},"Most failed document AI projects do not fail at the chatbot layer. They fail earlier: messy permissions, duplicate documents, poor OCR, missing ownership, weak metadata, stale files, and no way to prove which version was used.",[12,916,917],{},"Before building RAG, build the ingestion discipline.",[24,919,921],{"id":920},"_1-classify-the-corpus","1. Classify the corpus",[12,923,924],{},"Start by separating document families: policies, procedures, contracts, board packs, audit evidence, technical manuals, invoices, emails, and scanned PDFs. Each family has different structure, retention rules, owners, and risk.",[12,926,927],{},"Do not treat the whole shared drive as one blob. A contract clause, a policy exception, and a scanned invoice need different parsing and review rules.",[24,929,931],{"id":930},"_2-preserve-source-truth","2. Preserve source truth",[12,933,934],{},"Keep an immutable raw copy. Store extracted text separately. Record the parser version, OCR engine, language, page count, checksum, owner, creation date, modification date, and source location.",[12,936,937],{},"If the extracted text later changes because you improve OCR or parsing, you should still know what source produced the old result.",[24,939,941],{"id":940},"_3-normalize-before-embedding","3. Normalize before embedding",[12,943,944],{},"Clean headers, footers, page numbers, boilerplate, hyphenation, tables, and repeated legal notices. Keep layout signals when they matter: headings, sections, tables, clauses, signatures, and appendices.",[12,946,947],{},"Embedding dirty text creates dirty retrieval. The model cannot compensate for a corpus that was mangled during ingestion.",[24,949,951],{"id":950},"_4-chunk-by-meaning-not-by-arbitrary-size","4. Chunk by meaning, not by arbitrary size",[12,953,954],{},"Chunking should respect document structure. Policies often work by section. Contracts work by clause. Manuals work by procedure. Tables need special handling. A 1,000-token blind split may be simple, but it can cut the exact evidence in half.",[12,956,957],{},"Every chunk should carry enough metadata to explain itself: document ID, version, page, heading path, clause number, language, access scope, and retention policy.",[24,959,961],{"id":960},"_5-validate-before-launch","5. Validate before launch",[12,963,964],{},"Run test questions from real users. Include questions with no answer, old-versus-new document conflicts, access-restricted documents, and ambiguous language. Measure retrieval precision before optimizing the LLM.",[12,966,705,967,217,972,725],{},[707,968,971],{"href":969,"rel":970},"https:\u002F\u002Ftowardsdatascience.com\u002Fdocument-intelligence-a-series-on-building-rag-brick-by-brick-from-minimal-to-corpus-scale\u002F",[711],"Enterprise document intelligence series",[707,973,975],{"href":709,"rel":974},[711],"enterprise RAG provenance patterns",{"title":230,"searchDepth":231,"depth":231,"links":977},[978,979,980,981,982],{"id":920,"depth":234,"text":921},{"id":930,"depth":234,"text":931},{"id":940,"depth":234,"text":941},{"id":950,"depth":234,"text":951},{"id":960,"depth":234,"text":961},"2026-05-22","The pre-flight checks that stop bad OCR, wrong versions, and permission leaks from poisoning your retrieval layer.",{},"\u002Fblog\u002Fdocument-ingestion-checklist",{"title":909,"description":984},"blog\u002Fdocument-ingestion-checklist",[990,991,992],"document AI","ingestion","knowledge management","bI1d8F7qsIS5iFKYHIPDocDl9lRwWgKnnK7ogOYJth8",{"id":995,"title":996,"author":7,"body":997,"date":1082,"description":1083,"draft":241,"extension":242,"image":243,"meta":1084,"navigation":245,"path":1085,"seo":1086,"stem":1087,"tags":1088,"__hash__":1091},"blog_en\u002Fblog\u002Fai-system-registry-shadow-ai.md","Shadow AI is a registry problem",{"type":9,"value":998,"toc":1077},[999,1002,1005,1009,1012,1044,1047,1051,1054,1057,1061,1064,1067],[12,1000,1001],{},"You cannot govern AI systems you cannot name. That is the shadow AI problem: teams adopt assistants, automation tools, document processors, browser extensions, agents, and SaaS copilots faster than governance teams can inventory them.",[12,1003,1004],{},"A spreadsheet is a start, but it is not a registry. A useful AI system registry is live, owned, searchable, and exportable.",[24,1006,1008],{"id":1007},"what-belongs-in-the-registry","What belongs in the registry",[12,1010,1011],{},"Every entry should answer practical questions:",[274,1013,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041],{},[109,1015,1016],{},"What is the system called and who owns it?",[109,1018,1019],{},"What business process does it support?",[109,1021,1022],{},"Is it internal, vendor-hosted, embedded in SaaS, or open source?",[109,1024,1025],{},"Which model or provider does it use?",[109,1027,1028],{},"What data does it access?",[109,1030,1031],{},"Does it process personal, confidential, financial, legal, or regulated data?",[109,1033,1034],{},"What is the risk classification?",[109,1036,1037],{},"What human oversight exists?",[109,1039,1040],{},"Which logs, policies, evaluations, and incidents are linked?",[109,1042,1043],{},"Can the organization suspend it quickly?",[12,1045,1046],{},"The registry should cover formal systems and shadow systems. Otherwise, the highest-risk tools may be exactly the ones nobody has reviewed.",[24,1048,1050],{"id":1049},"the-workflow-that-works","The workflow that works",[12,1052,1053],{},"Discovery should combine procurement data, SSO logs, network signals, endpoint telemetry, finance spend, browser extensions, and interviews with business teams. Each system then moves through a lifecycle: discovered, profiled, classified, documented, approved, monitored, and retired.",[12,1055,1056],{},"Do not make legal or compliance fill every field manually. Product owners should provide context. Security should enrich access and data-flow signals. Engineering should expose telemetry and model dependencies. Compliance should own classification and approval criteria.",[24,1058,1060],{"id":1059},"what-makes-it-regulator-ready","What makes it regulator-ready",[12,1062,1063],{},"A regulator-ready registry can export structured data on demand. It should include system name, purpose, owner, vendor, risk level, deployment domain, data categories, model\u002Fprovider, documentation status, oversight status, incident history, and review date.",[12,1065,1066],{},"The goal is not bureaucracy. It is operational clarity. When a regulator, client, or board asks “where are we using AI?”, the answer should take minutes, not weeks.",[12,1068,705,1069,217,1072,725],{},[707,1070,819],{"href":817,"rel":1071},[711],[707,1073,1076],{"href":1074,"rel":1075},"https:\u002F\u002Fwww.knowlee.ai\u002Fblog\u002Fai-act-compliance-for-agentic-platforms-2026",[711],"AI Act compliance for agentic platforms",{"title":230,"searchDepth":231,"depth":231,"links":1078},[1079,1080,1081],{"id":1007,"depth":234,"text":1008},{"id":1049,"depth":234,"text":1050},{"id":1059,"depth":234,"text":1060},"2026-05-21","Why teams need an AI system inventory before regulators ask — and what to log without creating another spreadsheet graveyard.",{},"\u002Fblog\u002Fai-system-registry-shadow-ai",{"title":996,"description":1083},"blog\u002Fai-system-registry-shadow-ai",[1089,1090,643],"AI registry","shadow AI","ONRIRyCXr_rku9ffYQXAF-p_dc6fH_IS7aSggMQG0bU",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1095},0,24,"\u003Cpath fill=\"currentColor\" d=\"M15.5 12c2.5 0 4.5 2 4.5 4.5c0 .88-.25 1.71-.69 2.4l3.08 3.1L21 23.39l-3.12-3.07c-.69.43-1.51.68-2.38.68c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 0 0-2.5 2.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5a2.5 2.5 0 0 0-2.5-2.5M13 4v8l-2.5-2.25L8 12V4H6v16h4c.54.81 1.23 1.5 2.03 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v7.81c-.58-.55-1.25-1-2-1.31V4z\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1097},"\u003Cpath fill=\"currentColor\" d=\"M12 3c-1.27 0-2.4.8-2.82 2H3v2h1.95L2 14c-.47 2 1 3 3.5 3s4.06-1 3.5-3L6.05 7h3.12c.33.85.98 1.5 1.83 1.83V20H2v2h20v-2h-9V8.82c.85-.32 1.5-.97 1.82-1.82h3.13L15 14c-.47 2 1 3 3.5 3s4.06-1 3.5-3l-2.95-7H21V5h-6.17C14.4 3.8 13.27 3 12 3m0 2a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-6.5 5.25L7 14H4zm13 0L20 14h-3z\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1099},"\u003Cpath fill=\"currentColor\" d=\"M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m2.8-10V9.5C14.8 8.1 13.4 7 12 7S9.2 8.1 9.2 9.5V11c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3m-1.3 0h-3V9.5c0-.8.7-1.3 1.5-1.3s1.5.5 1.5 1.3z\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1101},"\u003Cpath fill=\"currentColor\" d=\"M17.5 15.5c0 1.11-.89 2-2 2s-2-.89-2-2s.9-2 2-2s2 .9 2 2m-9-2c-1.1 0-2 .9-2 2s.9 2 2 2s2-.89 2-2s-.89-2-2-2M23 15v3c0 .55-.45 1-1 1h-1v1c0 1.11-.89 2-2 2H5a2 2 0 0 1-2-2v-1H2c-.55 0-1-.45-1-1v-3c0-.55.45-1 1-1h1c0-3.87 3.13-7 7-7h1V5.73c-.6-.34-1-.99-1-1.73c0-1.1.9-2 2-2s2 .9 2 2c0 .74-.4 1.39-1 1.73V7h1c3.87 0 7 3.13 7 7h1c.55 0 1 .45 1 1m-2 1h-2v-2c0-2.76-2.24-5-5-5h-4c-2.76 0-5 2.24-5 5v2H3v1h2v3h14v-3h2z\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1103},"\u003Cpath fill=\"currentColor\" d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93zM6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37z\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1105},"\u003Cpath fill=\"currentColor\" d=\"M22.46 6c-.77.35-1.6.58-2.46.69c.88-.53 1.56-1.37 1.88-2.38c-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29c0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15c0 1.49.75 2.81 1.91 3.56c-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.2 4.2 0 0 1-1.93.07a4.28 4.28 0 0 0 4 2.98a8.52 8.52 0 0 1-5.33 1.84q-.51 0-1.02-.06C3.44 20.29 5.7 21 8.12 21C16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56c.84-.6 1.56-1.36 2.14-2.23\"\u002F>",{"left":1093,"top":1093,"width":1094,"height":1094,"rotate":1093,"vFlip":241,"hFlip":241,"body":1107},"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":1093,"top":1093,"width":1109,"height":1109,"rotate":1093,"vFlip":241,"hFlip":241,"body":1110},512,"\u003Cmask id=\"SVGuywqVbel\">\u003Ccircle cx=\"256\" cy=\"256\" r=\"256\" fill=\"#fff\"\u002F>\u003C\u002Fmask>\u003Cg mask=\"url(#SVGuywqVbel)\">\u003Cpath fill=\"#eee\" d=\"m0 0l8 22l-8 23v23l32 54l-32 54v32l32 48l-32 48v32l32 54l-32 54v68l22-8l23 8h23l54-32l54 32h32l48-32l48 32h32l54-32l54 32h68l-8-22l8-23v-23l-32-54l32-54v-32l-32-48l32-48v-32l-32-54l32-54V0l-22 8l-23-8h-23l-54 32l-54-32h-32l-48 32l-48-32h-32l-54 32L68 0z\"\u002F>\u003Cpath fill=\"#0052b4\" d=\"M336 0v108L444 0Zm176 68L404 176h108zM0 176h108L0 68ZM68 0l108 108V0Zm108 512V404L68 512ZM0 444l108-108H0Zm512-108H404l108 108Zm-68 176L336 404v108z\"\u002F>\u003Cpath fill=\"#d80027\" d=\"M0 0v45l131 131h45zm208 0v208H0v96h208v208h96V304h208v-96H304V0zm259 0L336 131v45L512 0zM176 336L0 512h45l131-131zm160 0l176 176v-45L381 336z\"\u002F>\u003C\u002Fg>",1781544428026]